文档库 最新最全的文档下载
当前位置:文档库 › STM32实验报告

STM32实验报告

STM32实验报告
STM32实验报告

嵌入式系统课程设计实验报告题目基于STM32的LCD数字钟显示

姓名刘意

学号 2012221105200045 ___

专业年级 12电科

指导教师卢仕

2015年 6 月 30日

1.实验名称:

基于STM32的LCD数字钟显示

2.实验目的与要求:

(1)掌握嵌入式程序设计流程。熟悉并掌握软件的开发,如GPIO的端口配置,FSMC的编程,RA8875初始化等等。

(2)学习LCD与STM32的LCD的控制器的接口原理,掌握内置LCD 控制器驱动编写方法。

(3)编写程序实现电子时钟功能,通过实验系统的LCD将时间显示出来。

3.实验设备及原理:

硬件:PC机一台

STM32开发板一套

软件:keil4

原理:LCD显示器是通过给不同的液晶单元供电,控制其光线的

通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对

每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,

对其通电,便可使用光线通过。本次实验使用RA8875驱动LCD,

采用FSMC模式向RA8875发送指令,读取状态和数据。通过程

序代码实现对TFTLCD的控制器RA8875驱动要求,从而达到TFT LCD 数字钟的显示。

4.实验步骤及内容:

1.新建工程文件夹szz,并建立4个子文件夹,并复制粘贴库文件和驱动文件。

2.打开keil4,新建工程。工程名为szz.芯片选取STM3210F103VC。

3.完成基础设置

4. 添加LCD.H和LCD.C两个文件,并加入工程中,编写LCD.H文件.

LCD.H:

#ifndef __GLCD_H

#define __GLCD_H

#include "stm32f10x.h"

/* LCD color */颜色定义

#define White 0xFFFF

#define Black 0x0000

#define Grey 0xF7DE

#define Blue 0x001F

#define Blue2 0x051F

#define Red 0xF800

#define Magenta 0xF81F

#define Green 0x07E0

#define Cyan 0x7FFF

#define Yellow 0xFFE0

#define HZ_LIB 1

#define ASCII_LIB 1

#define RGB565CONVERT(red, green, blue) (int) (((red >> 3) << 11) | ((green >> 2) << 5) | (blue >> 3))

/* Private function prototypes -----------------------------------------------*/

void LCD_Initializtion(void);

void LCD_Clear(uint16_t Color);

uint16_t LCD_GetPoint(uint16_t Xpos,uint16_t Ypos);

void LCD_SetPoint(uint16_t Xpos,uint16_t Ypos,uint16_t point);

void LCD_DrawLine(int x1, int y1, int x2, int y2,uint16_t

bkColor);

void LCD_SetWindows(uint16_t xStart,uint16_t yStart,uint16_t xLong,uint16_t yLong);

void LCD_DrawPicture(uint16_t StartX,uint16_t StartY,uint16_t EndX,uint16_t EndY);

void GUI_Text(uint16_t Xpos, uint16_t Ypos, uint8_t *str,uint16_t Color, uint16_t bkColor);

void PutChar(unsigned short Xpos,unsigned short Ypos,unsigned char c,unsigned short charColor,unsigned short bkColor); void PutChinese(uint16_t Xpos,uint16_t Ypos,uint8_t *str,uint16_t Color,uint16_t bkColor);

void GUI_Chinese(uint16_t Xpos, uint16_t Ypos, uint8_t *str,uint16_t Color, uint16_t bkColor);

#endif

LCD.C:

1.void delay_us (int n)

{

int i=0,j=0;

for(i=0;i

for(j=0;j<36;j++)

;

}

void delay_ms (int n)

{

int i=0;

for(i=0;i<1000;i++)

delay_us(n);

}// 延迟

2.字符插入static unsigned char const AsciiLib[95][16] = { {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00},/*" ",0*/ 。。。。。。。。。。。。。。

void GetASCIICode(unsigned char* pBuffer,unsigned char ASCII) {

memcpy(pBuffer,AsciiLib[(ASCII - 32)] ,16);

}

3.STM32端口设置

static void LCD_CtrlLinesConfig(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

/* Enable FSMC, GPIOD, GPIOE and AFIO clocks */

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);

/* PE.06, PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9),

PE.13(D10), PE.14(D11), PE.15(D12) */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |

GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |

GPIO_Pin_15;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOE, &GPIO_InitStructure);

/* PD.00(D2), PD.01(D3), PD.04(RD), PD.5(WR), PD.7(CS), PD.8(D13), PD.9(D14),

PD.10(D15) PD.14(D0) PD.15(D1) */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 |

GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |

GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOD, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOD, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_SetBits(GPIOA,GPIO_Pin_8);

delay_us(10);

}

4.FSMC设置

5.LCD,LMD各项功能设置

5.主程序

1.显示设置

char buffer[50]={0};

LCD_Initializtion();

button_init();

exti_config();

SysTick_Config(FCLK/OSFREQ);

LCD_Clear(RGB565CONVERT(0xff, 0xff, 0xff));

GUI_Text(20, 200, "WuHan Different Everyday", RGB565CONVERT(0xfa,0x80,0x72),RGB565CONVERT(0x00,0xff,0xff)

GUI_Text(20, 100, "ly 2012221105200045", RGB565CONVERT(0xfa,0x80,0x72),RGB565CONVERT(0x00,0xff,0xff) );

2.时钟设置

ms++;

if(ms>=99)

{

ms=0;

sec++;

if(sec>=59)

{

sec=0;

min++;

if(min>=59)

{

min=0;

hour++;

if(hour>=23)

hour=0;

}

}

}

secg=sec%10;

secs=sec/10;

ming=min%10;

mins=min/10;

hourg=hour%10;

hours=hour/10;

}

3.调时设置

void EXTI15_10_IRQHandler(void)

{

if((EXTI_GetITStatus(EXTI_Line13)!=RESET)||(EXTI_GetITStatu s(EXTI_Line15)!=RESET))

{

if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==0)

{

if(min<59)

min++;

else

{min=0;

hour++;}

}

if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)==0)

{

if(hour<23)

hour++;

else

hour=0;

}

EXTI_ClearITPendingBit(EXTI_Line13);

EXTI_ClearITPendingBit(EXTI_Line15);

}

}

4.整点图像

while (1)

{

if(min==0)

{

if(min==0)

{

switch(sec)

{

case 0:

case 1:

case 2:LCD_DrawLine(50, 240, 200,

240,RGB565CONVERT(0x00, 0x00, 0xff));

LCD_DrawLine(50, 240, 50, 380,RGB565CONVERT(0x00, 0x00, 0xff));

LCD_DrawLine(50, 380, 200, 380,RGB565CONVERT(0x00, 0x00, 0xff));

LCD_DrawLine(200, 240, 200, 380,RGB565CONVERT(0x00, 0x00, 0xff));

LCD_DrawLine(80,280, 100, 280,RGB565CONVERT(0x00, 0x00, 0xff));

LCD_DrawLine(150, 280, 170, 280,RGB565CONVERT(0x00, 0x00, 0xff));

LCD_DrawLine(110, 350, 140, 350,RGB565CONVERT(0x00, 0x00, 0xff));break;

case 3: LCD_DrawLine(50, 240, 200, 240,RGB565CONVERT(0xff, 0xff, 0xff));

LCD_DrawLine(50, 240, 50, 380,RGB565CONVERT(0xff, 0xff, 0xff));

LCD_DrawLine(50, 380, 200,380,RGB565CONVERT(0xff, 0xff, 0xff));

LCD_DrawLine(200, 240, 200, 380,RGB565CONVERT(0xff, 0xff, 0xff));

LCD_DrawLine(80,280, 100, 280,RGB565CONVERT(0xff, 0xff, 0xff));

LCD_DrawLine(150, 280, 170, 280,RGB565CONVERT(0xff, 0xff, 0xff));

LCD_DrawLine(110, 350, 140, 350,RGB565CONVERT(0xff, 0xff, 0xff));break;

5.实验总结

LCD显示的应用是多功能且设置简单的,根据LCD.C中的各种定义与功能,主程序中能实现多种操作,如划线,设置窗口,颜色,英文字符,调整位置,插于按键控制,串口设置等等。这次课程设计已经结束,但学习收获还是很大的,从不懂STM32到逐步加深对嵌入式理论知识的理解和应用,而且提高了创新和编译程序的能力。这次课程设计证明懂得了理论与实际相结合是很重要的,只有书本上理论的程序知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能真正提高自己的思考能力与程序编写能力。在设计的过程有许许多的不足,改正的过程也是一种学习,深知熟练掌握还差许多。

激光脉冲测距实验报告讲解

激光脉冲测距

1 目录 一工作原理 (3) (1)测距仪工作原理 (3) (2)激光脉冲测距仪光学原理结构 (3) (3)测距仪的大致结构组成 (4) (4)主要的工作过程 (4) (5)激光脉冲发射、接收电路板组成及工作原理 (5) 二激光脉冲测距的应用领域 (5) 三关键问题及解决方法 (6) (1)优点 (6) (2)问题及解决方案 (7) 2 一工作原理 (1)测距仪工作原理 现在就脉测距仪冲激光测距简要叙述其工作原理。简单地讲,脉冲法测距的过程是这样的:测距仪发射出的激光经被测量物体的反射后又被测距仪接收,测距仪同时记录激光往返的时间t,光速c 和往返时间t 的乘积的一半,就是测距仪和被测量物体之间的距离。一般一个典型的激光测距系统应具备以下四个模块:激光发射模块;激光接收模块;距离计算与显示模块;激光准直与聚焦模块,如图2-1 所示。系统工作时,由发射单元发出一束激光,到达待测目标物后漫

反射回来,经接收单元接收、放大、整形后到距离计算单元计算完毕后显示目标物距离。在测距点向被测目标发射一束强窄激光脉冲,光脉冲传输到目标上以后,其中一小部分激光反射回测距点被测距系统光功能接收器所接受。假定光脉冲在发射点与目标间来回一次所经历的时间间隔为t,那么被测目标的距离 D 为:式中:c 为激光在大气中的传播速度;D 为待测距离;t 为激光在待测距离上的往返时间。 R=C*T/2 (公式1) 图一脉冲激光测距系统原理框图激光脉冲测距仪光学原理结构2() 3

图二)测距仪的大致结构组成(3 时钟脉冲门控电路、脉冲激光测距仪主要由脉冲激光发射系统、光电接收系统、 振荡器以及计数显示电路组成4)主要的工作过程(其工作过程大致如下:首先接通电源,复原电路给出复原信号,使整机复原,准备进行测量;同时触发脉冲激光发生器,产生激光脉冲。该激光脉冲有一小部分能量由参考信号取样器直接送到接收系统,作为计时的起始点。大部分光脉冲能量射向待测目标,由目标反射回测距仪的光脉冲能量被接收系统接收,这就是回波信号。参考信号和回波信号先后由光电探测器转换成为电脉冲,并加以放大和整形。整形后的参考信号能触发器翻转,控制计数器开始对晶格振荡器发出的时钟脉冲进行计数。整形后的回波信号使触发器的输出翻转无效,从而使计数器停实验装置实止工作。这样,根据计数器的输出即可计算出待测目标的距离。三单片机开放板和激光脉冲发射、接收电路验装置包括“”“”。 4 (5)激光脉冲发射、接收电路板组成及工作原理 激光脉冲发射/接收电路板原理框图如图2.3所示。图中EPM3032为CPLD;MAX3656为激光驱动器;MAX3747为限幅放大器;T22为单端信号到差分信号转换芯片;T23为差分信号到单端信号转换芯片;LD为半导体激光器;PD为光电探测器。板子上端的EPM3032被编程为脉冲发生器,输出重复频率为1KHz,脉冲宽度为48ns的电脉冲信号。此信号经MAX3656放大后驱动LD发光。板子下端的EPM3032被编程为计数器,对125MHz晶振进行计数。其计数的开门信号来自上端的TX信号,关门信号来自PD的输出。计数器的计数结果采用12 位二进制数据输出,对应的时间范围为0~32.7?s。 二激光脉冲测距的应用领域 激光测距仪一般采用两种方式来测量距离:脉冲法和相位法.脉冲法测距的过程是这样的:测距仪发射出的激光经被测量物体的反射后又被测距仪接收.测距仪同时记录激光往返的时间.光速和往返时间的乘积的一半.就是测距仪和被测量物体之间的距离.脉冲法测量距离的精度是一般是在+/-1米左右.另外.此类测距仪的测量盲区一般是15米左右。 激光测距仪已经被广泛应用于以下领域:电力.水利.通讯.环境.建筑.地质.警务.消防.爆破.航海.铁路.反恐/军事.农业.林业.房地产.休闲/户外运动等。 由于激光在亮度、方向性、单色性以及相干性等方面都有不俗的特点,它一出现就吸引了众多科学工作者的目光,并被迅速地被应用在工业生产方面、国防军工方面、房地产业、各级科研机构、工程、防盗安全等各个行业各个领域:激光焊接、激光切割、激光打孔(包括斜孔、异孔、膏药打孔、水松纸打孔、钢板打孔、包装印刷打孔等)、激光淬火、激光热处理、激光打标、玻璃内雕、激光微调、激光光刻、激光制膜、激光薄膜加工、激光封装、激光修复电路、激光布线技术、激光清洗等。有关于激光的研究与生产制造也如火如荼地开展了起来。 5

流水灯实验报告综合二

实验名称:流水灯的实验设计与制作班级100713 学号07 姓名张凯瑜指导教师庞涛 一、实验目的: 1.增进对单片机的感性认识,加深对单片机理论方面的理解。 2.掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。 3.了解和掌握单片机应用系统的软/硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。 二、实验原理:

原理图说明:该设计选用一块STC89C52型单片机,使用其P1口和P3口的部分。P1口作为发光二极管的控制信号输出端,P3.2作为按钮K1外部中断0的信号输入口,P3.3为按钮K2外部中断1的信息输入口,P3.4作为K3信息输入口。单片机晶振频率为11.0592MHz,方便在线下载程序调试。电源使用5v 直流电,其中R11、C6为K1键硬件消抖(但效果不太理想,所以在软件中也做了软件消抖)。 三、实验设备: 电烙铁、万用电表、斜口钳、剥线钳、镊子、电池座、导线若干,所需元件清单: 四、实验方法与步骤: (1)认识各种元件,了解各元件的功能和使用方法。 (2)根据实验原理设计实验电路图和焊接图,并多次进行修正。

(3)按照实验焊接图在洞洞板上进行焊接。 焊接时在覆铜一面进行焊接,没有覆铜的一面用来放置元件。焊接时先对MCU座定好位,焊好对角两个角,然后焊接电源电路,按键电路,再复位和晶振电路,最后焊接LED 部分。 (4)插上编写好程序的单片机,实现“流水灯”效果。 五、实验测量与记录: 功能说明:本设计一共可以显示5种花样 k1键:切换显示花样k2键:暂停显示k3键:继续显示 流水灯——正面无单片机时 流水灯——正面有单片机时

跑马灯实验报告.

山西大学数字电子技术基于硬件设计的跑马灯电路 系别:电力工程系 班级:电本1254班 姓名:所谓伊人 学号: 12322454**

一、实验目的 1. 熟悉NE555定时器,计数器CD4017的逻辑特性。 2. 熟悉NE555构成多谐振荡器原理。 3. 设计跑马灯电路并利用Multisim软件仿真电路。 二、实验要求 1. 知道NE555、CD4017的管脚排列顺序。 2. 利用NE555构成多谐振荡器。 3. 知道电阻的主要参数及其标注方法。(见实验指导书116页)。 4. 知道电容器的主要作用。(见实验指导书122页)。 5. 了解有关焊接的知识。 三、实验器材 电路板1块。电容:1μF(1个)。集成芯片:NE555(1个)、CD4017(1个)。电阻:22K?、1K?、500?各一个。二极管:IN4148(8个)、发光二极管(10个)。(自行提供)电池:5V 四、电路的安装 1.555用来定时,用它产生某种方波,相当于有的时钟信号 2.4017是个十进制计数器,按照时钟信号从10个口依次输出 1. 检查集成芯片NE555,CD4017的安装位置有无错误. 2. 检查电解电容的极性有无错误; 3. 检查二极管IN4148及发光二极管的安装方向有无错误; 4. 检查各个电阻的安装是否有误。 5. 检查有无虚焊。 五、电路的调试 1. 电路焊接好后,先将电路板正负端接到直流电压5V及地线处,观察发光二极管是否变亮。 2. 适当改变电位器阻值,观察其对CD4017

循环周期(发功二极管依次循环一周)的影响。 3. 利用秒表记录CD4017一个合适循环周期的时间。(分别测量电阻最大时、最小时、合适时的周期) 附录 1. 跑马灯电路图

光电探测技术实验报告

光电探测技术实验报告 班级:08050341X 学号:28 姓名:宫鑫

实验一光敏电阻特性实验 实验原理: 光敏电阻又称为光导管,是一种均质的半导体光电器件,其结构如图(1)所示。由于半导体在光照的作用下,电导率的变化只限于表面薄层,因此将掺杂的半导体薄膜沉积在绝缘体表面就制成了光敏电阻,不同材料制成的光敏电阻具有不同的光谱特性。光敏电阻采用梳状结构是由于在间距很近的电阻之间有可能采用大的灵敏面积,提高灵敏度。 实验所需部件: 稳压电源、光敏电阻、负载电阻(选配单元)、电压表、 各种光源、遮光罩、激光器、光照度计(由用户选配) 实验步骤: 1、测试光敏电阻的暗电阻、亮电阻、光电阻 观察光敏电阻的结构,用遮光罩将光敏电阻完全掩 盖,用万用表测得的电阻值为暗电阻 R暗,移开遮光罩,在环境光照下测得的光敏电阻的 阻值为亮电阻,暗电阻与亮电阻之差为光电阻,光 电阻越大,则灵敏度越高。 在光电器件模板的试件插座上接入另一光敏电阻, 试作性能比较分析。 2、光敏电阻的暗电流、亮电流、光电流 按照图(3)接线,电源可从+2~+8V间选用,分别在暗光和正常环境光照下测出输出电压V暗和V亮则暗电流L暗=V暗/R L,亮电流L亮=V亮/R L,亮电流与暗电流之差称为光电流,光电流越大则灵敏度越高。 分别测出两种光敏电阻的亮电流,并做性能比较。 图(2)几种光敏电阻的光谱特性 3、伏安特性: 光敏电阻两端所加的电压与光电流之间的关系。 按照图(3)分别测得偏压为2V、4V、6V、8V、10V、12V时的光电流,并尝试高照射光源的光强,测得给定偏压时光强度的提高与光电流增大的情况。将所测得的结果填入表格并作出V/I曲线。 注意事项: 实验时请注意不要超过光电阻的最大耗散功率P MAX, P MAX=LV。光源照射时灯胆及灯杯温度均很高,请勿用手触摸,以免烫伤。实验时各种不同波长的光源的获取也可以采用在仪器上的光源灯泡前加装各色滤色片的办法,同时也须考虑到环境光照的影响。

单片机流水灯实验报告

流水灯实习报告 一、实验原理 单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED 灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。 二、硬件原理图 三、实验程序 ORG 00H AJMP START ORG 001BH AJMP INT ORG 0100H START: MOV SP,#60H MOV TMOD,#10H MOV TL1,#00H MOV TH1,#4CH MOV R0,#00H MOV R1,#20 SETB TR1 SETB ET1 SETB EA

INT: PUSH ACC PUSH PSW PUSH DPL PUSH DPH CLR TR1 MOV TL1,#B0H MOV TH1,#3CH SETB TR1 DJNZ R1,EXIT MOV R1,#20 MOV DPTR,#DATA MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H Movx @DPTR,A INC R0 ANL 00,#07H EXIT: POP DPH

POP PSW POP ACC RETI DATA: DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,0H END 四、实验功能 以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去. 五、实验总结 通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。 尤其是观察、分析和解决问题的实际工作能力。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我

单片机实验报告

PIC单片机原理与应用实验报告 学校: 学院: 班级: 姓名: 学号: 指导教师:

实验一I/O端口实验 一、实验目的 (1)掌握MPLAP IDE集成开发环境的基本操作。 (2)掌握单片机的I/O端口的设计方法。 (3)掌握在线调试器的使用方法。 (4)学会查阅相关数据手册。 二、实验仪器设备 (1)PC机一台; (2)MPLAP IDE开发软件一套; (3)PICkit3在线调试器一套; (4)APP009实验板一块; 三、实验要求 (1)设计发光LED灯闪烁程序,下载调试,验证功能。 (2)设计流水灯程序,或其他花样彩灯程序,下载调试,验证功能。 (3)设计按按键加1计数程序,下载调试,验证功能。 四、实验步骤 (1)连接在线调试器PICkit3、APP009实验板和计算机; (2)打开MPLAP IDE集成开发环境软件,点击Debugger>Select Tools>PICkit 3 选择调试工具; (3)点击Debugger>Settings,在Settings窗口中点击Power栏,选择由PICkit3向实验板供电; (4)完成实现发光LED灯闪烁实验; 程序代码: #include void delay(void); int main() { while(1) { TRISEbits.TRISE0 = 0; //RE0设置为输出(1输入,0输出); https://www.wendangku.net/doc/3415151911.html,TE0 =1; //RE0=1输出高电平+5V,亮灯 delay(); //延时 https://www.wendangku.net/doc/3415151911.html,TE0 =0; //RE0=0输出低电平0V,灭灯 delay(); //延时 } } void delay(void) { long int i; for (i=0;i<65000;i++); } 实验现象:将程序下载到实验板上,运行程序,LED闪烁,通过改变延时函数改变延时时间,进而可以改变LED闪烁的频率。

超声波测距实验报告

电子信息系统综合设计报告 超声波测距仪

目录 摘要 (3) 第一章绪论 (3) 1.1 设计要求 (3) 1.2 理论基础 (3) 1.3 系统概述 (4) 第二章方案论证 (4) 2.1 系统控制模块 (5) 2.2距离测量模块 (5) 2.3 温度测量模块 (5) 2.4 实时显示模块 (5) 2.5 蜂鸣报警模块 (6) 第三章硬件电路设计 (6) 3.1 超声波收发电路 (6) 3.2 温度测量电路 (7) 3.3 显示电路 (8) 3.4 蜂鸣器报警电路 (9) 第四章软件设计 (10) 第五章调试过程中遇到的问题及解决 (11) 5.1 画PCB及制作 (11) 5.2 焊接问题及解决 (11) 5.3 软件调试 (11) 实验总结 (13) 附件 (14) 元器件清单 (14) HC-SR04超声波测距模块说明书 (15) 电路原理图 (17) PCB图 (17) 程序 (18)

摘要 该系统是一个以单片机技术为核心,实现实时测量并显示距离的超声波测距系统。系统主要由超声波收发模块、温度补偿电路、LED显示电路、CPU处理电路、蜂鸣器报警电路等5部分组成。系统测量距离的原理是先通过单片机发出40KHz 方波串,然后检测超声波接收端是否接收到遇到障碍物反射的回波,同时测温装置检测环境温度。单片机利用收到回波所用的时间和温度补偿得到的声速计算出距离,显示当前距离与温度,按照不同阈值进行蜂鸣报警。由于超声波检测具有迅速、方便、计算简单、易于做到实时控制的特点,并且在测量精度方面能达到工业实用的要求,因此在生产生活中得到广泛的应用,例如超声波探伤、液位测量、汽车倒车雷达等。 关键词:超声波测距温度测量单片机 LED数码管显示蜂鸣报警 第一章绪论 1.1设计要求 设计一个超声波测距仪,实现以下功能: (1)测量距离要求不低于2米; (2)测量精度±1cm; (3)超限蜂鸣器或语音报警。 1.2理论基础 一、超声波传感器基础知识 超声波传感器是利用晶体的压电效应和电致伸缩效应,将机械能与电能相互转换,并利用波的特性,实现对各种参量的测量。 超声波的传播速度与介质的密度和弹性特性有关,与环境条件也有关: 在气体中,超声波的传播速度与气体种类、压力及温度有关,在空气中传播速度为C=331.5+0.607t/0C (m/s) 式中,t为环境温度,单位为0C. 二、压电式超声波发生器原理 压电式超声波发生器实际上是利用压电晶体的谐振来工作的。它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 三、超声波测距原理 由于超声波指向性强,能量消耗缓慢,在空气中传播的距离较远,因而超声波

花样流水灯实验报告

黄淮学院信息工程学院 单片机原理及应用课程设计性实验报告

五、硬件电路设计 根据设计任务,首先进行系统硬件的设计。其硬件原理图由LED显示电路和单片机最小系统组成,如图所示,其中包括时钟电路采用部时钟方式,复位电路采用上电自动复位。由于单片机的I/O口的高电平驱动能力只有微安级,而灌电流可以达到3毫安以上,因此采用低电平驱动。P1、P2、P3分别控制8个led灯。 六、软件程序设计 1、软件设计思路 如果通过上图所示电路图完成实验要求,通过数组,分别同时控P0、P1、P2分别控制8个led灯,从而协调控制24个灯实现花样流水灯效果。 开始 编写数组 主循环 逐个点亮 24灯同时闪烁 逐个熄灭

P3=table1[i]; delayms(500); } shan();//全部闪烁 for(i=0;i<8;i++)//逐个熄灭{ P3=table2[i]; delayms(500); } for(i=0;i<8;i++) { P1=table3[i]; delayms(500); } for(i=0;i<8;i++) { P0=table2[i]; delayms(500); } } } void delayms (uintt) { uint x,y; for(x=t; x>0;x--) for(y=50;y>0;y--); } 七、软硬件仿真调试分析 1、仿真调试结果

图片 1 逐个点亮图片 2 24灯闪烁 图片 3 逐个熄灭 2、性能测试及结果分析 通过仿真结果发现通过上述系统可以实现实验要求,24个灯逐个点亮,24个灯全亮后,24个灯一起闪烁,闪烁5次后,然后24个灯逐个熄灭。由此证明系统满足实验要求。 八、项目总结 在本次花样流水灯试验中,使用循环程序、数组语句实现了实验要求,设计过程中遇到了很多的问题,但经过努力,最终设计出了合理的解决方案。通过此次实验,对多个led灯的控制能力进一步得到提升。 九、项目设计报告成绩 实验报告成绩: 指导教师签字: 年月日

嵌入式操作系统跑马灯实验报告

嵌入式操作系统实验报告 实验题目:实验一 CVT-PXA270的使用及跑马灯实验 专业:计算机科学与技术 班级: 姓名: 学号:

1. 了解Linux下端口编程的方法; 2. 掌握CVT-PXA270下的directio通用端口编程驱动程序的使用; 3. 掌握CVT-PXA270下跑马灯的使用方法。 二、实验内容 1.了解CVT-PXA270的外部结构,以及各端口的使用 2.测试跑马灯状态,使跑马灯程序在Linux系统下运行 3.修改跑马灯程序,使跑马灯呈现出不同的状态 三、实验方案 /* 当前跑马灯状态 */ unsigned char led_status = 0x00; / /******************************************************************** // Function name : delay // Description : delay for a while // Return type : void // Argument : int count ********************************************************************* / void delay(int count) { while(count --); } /* 主函数*/ int Main(int argc, char* argv[]) { while(1) { *((unsigned char *) 0x04005000) = led_status; delay(0xffffff); led_status ++; } return 0; } 四、试验结果 实验箱上的四个跑马灯将不断闪烁,修改程序中delay函数调用的值将变它们显示的速度,值越大,显示越慢。

光电探测实验报告

光电探测技术 实验报告 班级:10050341 学号:05 姓名:解娴

实验一光敏电阻特性实验 一、实验目的 1.了解一些常见的光敏电阻的器件的类型; 2.了解光敏电阻的基本特性; 3.测量不同偏置电压下的光敏电阻的电压与电流,并作出V/A曲线。 二、实验原理 伏安特性显示出光敏电阻与外光电效应光电元件间的基本差别。这种差别是当增加电压时,光敏电阻的光电流没有饱和现象,因此,它的灵敏度正比于外加电压。 光敏电阻与外光电效应光电元件不同,具有非线性的光照特性。各种光敏电阻的非线性程度都是各不相同的。 大多数场合证明,各种光敏电阻均存在着分析关系。这一关系为 式中,K为比例系数;是永远小于1的分数。 光电流的增长落后于光通量的增长,即当光通量增加时,光敏电阻的积分灵敏度下降。 这样的光照特性,使得解算许多要求光电流与光强间必需保持正比关系的问题时不能利用光敏电阻。 光照的非线性特性并不是一切光敏半导体都必有的。目前已有就像真空光电管—样,它的光电流随光通量线性增大的光敏电阻的实验室试样。光敏电阻的积分灵敏度非常大,最近研究出的硒—鎘光敏电阻达到12A/lm,这比普通锑、铯真空光电管的灵敏度高120,000倍。

三、实验步骤 1、光敏电阻的暗电流、亮电流、光电流 按照图1接线,电源可从+2V~+8V间选用,分别在暗光和正常环境光照下测出输出电压V暗和V亮。则暗电流L暗=V暗/RL,亮电流L亮=V亮/RL,亮电流与暗电流之差称为光电流,光电流越大则灵敏度越高。 2、伏安特性 光敏电阻两端所加的电压与光电流之间的关系即为伏安特性。按照图1接线,分别测得偏压为2V、4V、6V、8V、10V时的光电流,并尝试高照度光源的光强,测得给定偏压时光强度的提高与光电流增大的情况。将所测得的结果 填入表格并做出V/I曲线。 图1光敏电阻的测量电路 偏压2V4V6V8V10V12V 光电阻I 四、实验数据 实验数据记录如下: 光电流: E/V246810 U/V0.090.210.320.430.56 I/uA1427.54255.270.5 暗电流:0.5uA 实验数据处理:

嵌入式系统流水灯,按键,定时器实验报告

嵌入式系统应用 实验报告 姓名: 学号: 学院: 专业: 班级: 指导教师:

实验1、流水灯实验 1.1实验要求 编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。 1.2原理分析 实验主要考察对STM32F10X系列单片机GPIO的输出操作。 参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式: ◇输入浮空 ◇输入上拉 ◇输入下拉 ◇模拟输入 ◇开漏输出 ◇推挽式输出 ◇推挽式复用功能 ◇开漏式复用功能 根据实验要求,应该首先将GPIO配置为推挽输出模式。 由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。反之,LED灯熄灭。 1.3程序分析 软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。 GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO 时钟: RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE); 然后配置GPIO输入输出模式: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再配置GPIO端口翻转速度:

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 最后将配置好的参数写入寄存器,初始化完成: GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。 初始化完成后,程序循环点亮一个LED并熄灭其他LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。 实验程序流程图如下: 硬件方面,根据实验指南,将实验板做如下连接: 1.3实验结果

单片机花样流水灯设计实验报告

**大学 物理学院 单片机花样流水灯设计实验 课题:花样流水灯设计 班级: 物理 *** 姓名: *** 学号: ……………

当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。 制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。 本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。 关键字:AT89C51 单片机流水灯数码管

1. 单片机及其发展概况 单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。 2. Protues仿真软件简介 Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。 【实验设计目标】 设计要求以发光二极管作为发光器件,用单片机自动控制,对8个LED 灯设计至少3种流水灯显示方式,每隔20秒变换一次显示花样,计时通过一个二位七段数码管显示。

跑马灯实验报告

电子系统综合设计报告 学号 201009120229 姓名李文海年级专业 2010级电子信息工程(二) 指导 教师刘怀强 学院理学院 走马灯实验论文--《嵌入式系统技术》 1、实验目的 1、学会dp-51pro实验仪监控程序下载、动态调试等联机调试功能的使用; 2、理解和学会单片机并口的作为通用i/o的使用; 3、理解和学会单片机外部中断的使用; 4、了解单片机定时器/计数器的应用。 2、实验设备 z pc 机、arm 仿真器、2440 实验箱、串口线。 3、实验内容 z 熟悉 arm 开发环境的建立。 z 使用 arm 汇编和 c 语言设置 gpio 口的相应寄存器。 z 编写跑马灯程序。 5、实验原理 走马灯实验是一个硬件实验,因此要求使用dp-51pro 单片机综合仿真实验仪进行硬件 仿真,首先要求先进行软件仿真,排除软件语法错误,保证关键程序段的正确。然后连接仿 真仪,下载监控程序,进行主机与实验箱联机仿真。 为了使单独编译的 c 语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规 定一定的规则。atpcs ,即 arm , thumb 过程调用标准(arm/thumb procedure call standard),是 arm 程序和 thumb 程序中子程序调用的基本规则,它规定了一些子程序间调 用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规 则等。 下面结合实际介绍几种 atpcs 规则,如果读者想了解更多的规则,可以查看相关的书 籍。 1.基本 atpcs 基本 atpcs 规定了在子程序调用时的一些基本规则,包括下面 3 方面的内容: (1)各寄存器的使用规则及其相应的名称。 (2)数据栈的使用规则。 (3)参数传递的规则。 相对于其它类型的 atpcs,满足基本 atpcs 的程序的执行速度更快,所占用的内存更少。 但是它不能提供以下的支持: arm 程序和 thumb 程序相互调用,数据以及代码的位置无关 的支持,子程序的可重入性,数据栈检查的支持。 而派生的其他几种特定的 atpcs 就是在基本 atpcs 的基础上再添加其他的规则而形成 的。其目的就是提供上述的功能。 2.寄存器的使用规则 寄存器的使用必须满足下面的规则: (1) 子程序间通过寄存器 r0~r3 来传递参数。这时,寄存器 r0~r3 可以记作 a0~a3。 被调用的子程序在返回前无需恢复寄存器 r0~r3 的内容。 (2) 在子程序中,使用寄存器 r4~rll 来保存局部变量。这时,寄存器 r4~r11 可以记 作 v1~v8。如果在子程序中使用到了寄存器 v1~v8 中的某些寄存器,子程序进入时必须保

激光散斑测量实验报告

实验报告 陈杨 PB05210097 物理二班 实验题目:激光散斑测量 实验目的: 了解单光束散斑技术的基本概念,并应用此技术测量激光散斑的大小和毛玻璃的面内位移。 实验内容: 本实验中用到的一些已知量:(与本次实验的数据略有不同) 激光波长λ = 0.0006328mm 常数π = 3.14159265 CCD像素大小=0.014mm 激光器内氦氖激光管的长度d=250mm 会聚透镜的焦距f’=50mm 激光出射口到透镜距离d1=650mm 透镜到毛玻璃距离=d2+P1=150mm 毛玻璃到CCD探测阵列面P2=550mm 毛玻璃垂直光路位移量dξ和dη, dξ=3小格=0.03mm,dη=0 光路参数:P1=96.45mm ρ(P1)=96.47mm P2= 550mm dξ=3小格=0.03mm (理论值) 数据及处理: 光路参数: P1+d2=15cm P2=52.5cm

d1=激光出射口到反射镜的距离+反射镜到透镜距离=33.6+28.5=62.1cm f ’=5cm d=250mm λ=632.8nm (1)理论值S 的计算: 经过透镜后其高斯光束会发生变换,在透镜后方形成新的高斯光束 由实验讲义给的公式: 2'2 012'11 '' 2)()1(d f W f d d f f λπ+--- = πλd W 01= 201W d πλ= 代入数据,可得: '' 1 21 221''12 2 22 01 02 2 2 2101102 d 15(1)() 5 62.11559.6332439.63362.12515511f d f cm P d d f f cm cm P cm cm cm cm cm cm cm cm d W W d d W d f f W λπ πλ???? ? ? ???? ?????? ?? ? ? ? ? ? ? ? ????? ???? -=-=--+-=-+ =≈-+= = -+-+= 可得 由公式-31.80010cm ≈? 此新高斯光束射到毛玻璃上的光斑大小W 可以由计算氦氖激光器的

左右来回循环的流水灯实验报告

青 岛 科 技 大 学 微机原理与接口技术综合课程设计(报告) 题 目 __________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________院(部)____________________________专业________________ 班 ______年 ___月 ___日 直流电机控制综合实验 周艳平 宋雪英 01 信息科学技术学院 计算机科学与技术0961 2012 12 27

摘要 (2) 1、单片机概述 (2) 2、仿真软件介绍 (2) 3、需求分析 (2) 一、课程设计目的 (3) 二、课程设计要求 (3) 三、实验内容 (3) 1、设计任务与要求 (3) 2、系统分析 (3) 1).硬件电路设计(画出原理图、接线图) (4) 2)软件框图 (5) 3、用keil建项目流程 (7) 4、程序清单 (7) 4、系统调试 (9) 四、设计总结(结论) (10)

摘要 近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。能够通过按键控制8个LED小灯从左到右依次点亮。 关键字:单片机、LED流水灯 1、单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微 型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处 理器、存储器和I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合, 便可成为一个单片机控制系统。 单片机经过1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向发展,它 们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 2、仿真软件介绍 (1).Keil uv3 运行Keil uv3 新建工程:菜单“Preject->New Preject”,保存为*.uv2,选择芯片型号,copy否 新建文件:菜单“File->New”,保存为*.c,编写程序 将源文件添加到工程:在左侧project workspace的source group1点右键选择addfile加入*.c 设置工程:点菜单栏上的,选Target,设晶振值;选Output,点create Hex file以生成少些文件;选Debug,选择软件仿真(simulator)或硬件仿真(Keil Monitor)方式。 编译链接:点菜单栏上的进行编译,或点菜单栏上的进行编译链接,或点菜单栏上的进行重新编译链接,或点菜单栏上的停止编译。 编译链接后生成*.hex文件,可烧写到单片机。 (2).Proteus 使用Proteus仿真 点击单片机,在Program Files处选择*.hex文件,OK,进行仿真 RESPACK--8 排阻,就是好多电阻连载一起,有一个公共端,1端为公共端接VCC(上拉)或地(下拉) 一般接在51单片机P0口,因P0口内没有上拉电阻,不能输出高电平,所以要接上拉电阻。 3、需求分析

LED灯实验报告

mcs-51单片机接口技术实验 适用:电气类专业本科学生 实验报告 实验一熟悉proteus仿真模拟器,led花样表演 一、实验目的 掌握以下方法: 1.在proteus的环境下,设计硬件原理图; 2.在keilc集成环境下设计c51语言程序; 2.在proteus的环境下,将硬件原理图与软件联接仿真运行。 二、实验环境 1.个人微机,windows操作系统 2.proteus仿真模拟器 3.keilc编程 三、实验题目 基本题:使用8051的并口带动8个led发光二极管显示一种花样表演。提高题:使用一个键切换实现3种以上花样表演。 四、实验类型: 学习、模仿与简单设计型。 五、实验步骤: 0、进入isis,先选择需要的元件,然后设计电原理图,保存文件; 1、在keilc软件集成环境下编写源程序,编译工程文件; 2、将所设计的硬件原理图与目标代码程序相联接; 4、按play键,仿真运行程序。 附,可能用到的元件名称: cpu:at89c51或任一种mcs-51家族cpu; 晶振:crystal; 电容器:capacitors,选22pf 电解电容:cap-elec或genelect10u16v 复位电阻:minres10k 限流电阻:minres330r 按键:button led:led-blue/red/yellow或diode-led (一)接线图如下: (二).基础花样 (四)程序流程图 (五)c程序 #include <> #define uint unsigned int #define uchar unsigned char const tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /*正向流水灯*/ 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,};/*反向流水灯*/ const tab2[]={0xff,0x00,0xff,0x00,0xff,0x00,}; void delay() { uint i,j; for(i=0;i<256;i++) for(j=0;j<256;j++)

超声波测距实验报告

目录 1、课题设计的目的和意义 (3) 2、课题要求 (3) 2.1、基本功能要求 (3) 2.2、提高要求 (4) 3、重要器件功能介绍 (4) 3.1、CX20106A红外线发射接收专用芯片 (4) 3.2、AT89C51系列单片机的功能特点 (5) 3.3、ISD1700优质语音录放电路 (6) 4、超声波测距原理 (8) 4.1、超声波测距原理图 (8) 4.2、超声波测距的基本原理 (9) 5、硬件系统设计 (10) 5.1、超声波发射单元 (10) 5.2、超声波接收单元 (11)

5.3、显示单元 (11) 5.4、语音单元 (12) 5.5、硬件设计中遇到的难题: (12) 6、系统软件设计 (14) 7、调试与分析 (15) 7.1调试 (15) 7.2误差分析 (15) 8、总结 (16) 9、附件 (17) 9.1、总电路 (17) 9.2、主要程序 (18) 10、参考文献 (22)

1课题设计的目的及意义 随着科学技术的快速发展,超声波在测距仪中的应用越来越广,但就目前技术水平而言,人们可以利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波测距作为一种新型的非常重要有用的工具在各方面都有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求。如声纳的发展趋势:研究具体的高定位精度的被动测距声纳,以满足军事和渔业等的发展需求,实现远程的被动探测和识别。毋庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。 超声波测距在某些场合有着显著的优点,因为这种方法是利用计算超声波在被测物体和超声波探头之间的传输来测量距离的,因此它是一种非接触式的测量,所以他就能够在某些场合或环境比较恶劣的环境下使用。比如测有毒或者有腐蚀性化学物质的液面高度或者高速公路上快速行驶汽车之间的距离。 随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最注重发展到具有创造力。在新的时代,测距仪将发挥更大的作用。 2课题要求 以单片机AT89C51为中心控制单元,配以超声波发射、接收装置,实现超声波发射及接收其遇到障碍物发生反射形成的回波信号,并根据超声波在介质中的传播速度及超声波从发射到接收到回波的时间,计算出发射点距障碍物的距离,设计出一套基于单片机的脉冲反射式超声波测距系统,利用单片机进行操作控制,用数码管作输出显示,设计发射、接收、检测、显示硬件电路和测距系统软件。

单片机跑马灯(流水灯)控制实验报告

单片机实验报告 姓名: 学号: 一、 实验实现功能: 1:计数器功能 2:流水灯 二、 具体操作: 1、计数器功能 数码管的动态显示。每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。 2、流水灯 当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。 三、 程序流程图 开始 定时器T0 设置初值,启动定时器, 打开中断 复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开

四、程序 #include typedef unsigned char uint8; typedef unsigned int uint16; //类型定义 sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; sbit P2_4 = P2^4; //位声明四个数码管开关 sbit Key2 = P3^2; sbit Key3 = P3^3; //位声明2个按键K2和K3 sbit Ledk = P2^0 ; //LED 开关 void delay(uint16 i); //延时函数声明 void refresh (); // 数码管刷新函数声明 void liushuideng(); //流水灯函数声明 uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管的真值表 uint8 out[4] = {0}; // 数组变量 uint16 counter=0; //用作计数器的变量 uint16 Time_counter=0; //用作定时器的变量 void main() //主函数 { TMOD = 0x01; //定时器0,工作方式一 TH0 = 0xFC; TL0 = 0x18; //定时器初值使每次循环为1ms TR0 = 0; //定时器0开始作 ET0 = 0; // 定时器中断关 EA = 0; // 关中断 while(1) //计数器模式 { Ledk =1 ; //led开关关 out[0]=number[counter%10]; //取个位 out[1]=number[counter%100/10]; //十位 out[2]=number[counter%1000/100]; //百位 out[3]=number[counter/1000]; //千位 if (!Key2) //计数器加1 { ++counter; //自加 out[0]=number[counter%10]; //取个位 out[1]=number[counter%100/10]; //十位 out[2]=number[counter%1000/100]; //百位 out[3]=number[counter/1000]; //千位

相关文档