基于单片机超声波测距系统设计试验报告-重_第1页
基于单片机超声波测距系统设计试验报告-重_第2页
基于单片机超声波测距系统设计试验报告-重_第3页
基于单片机超声波测距系统设计试验报告-重_第4页
基于单片机超声波测距系统设计试验报告-重_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、指导教师评定成绩:审定成绩:_自动化学院计算机控制技术课程设计报告设计题目:基于单片机的超声波测距系统设计单位(二级学院):_学生 姓名:_专业:_班级:_学号:_指导 教师:_负责 项目:_设计时间:二。一四 年五月自动化学院制目录一、设计题目 . . 0基于 51 单片机的超声波测距系统设计 . 0设计要求 . 0摘要 . . 1二、设计报告正文 . 22.1超声波测距原理 . 22.2系统总体方案设计 . 32.3主要元件选型及其结构 . 42.4硬件实现及单元电路设计 . 92.5系统的软件设计 . 12三、设计总结 . . 17四、参考文献 . . 17五、附录 . . 18附录一:

2、总体电路图 . 18附录二:系统源代码 . 18、设计题目基于 51 单片机的超声波测距系统设计设计要求1 1、以 5151 系列单片机为核心,控制超声波测距系统;2 2、测量范围为:2cm4m2cm4m 测量精度:1cm1cm3 3、通过键盘电路设置报警距离,测出的距离通过显示电路显示出来;4 4、当所测距离小于报警距离时,声光报警装置报警加以提示;5 5、设计出相应的电子电路和控制软件流程及源代码,并制作实物。摘要超声波具有传播距离远、 能量耗散少、 指向性强等特点, 在实际应用中常利 用这些特点进行距离测量。超声波测距具有非接触式、测量快速、计算简单、应 用性强的特点,在汽车倒车雷达系统

3、、 液位测量等方面应用广泛。 本次课设利用 超声波传播中距离与时间的关系为基本原理,以 STC89C52STC89C52 单片机为核心进行控 制及数据处理,通过外围电源、显示、键盘、声光报警等电路实现系统供电、测 距显示、报警值设置及报警提示的功能。软件部分采用了模块化的设计, 由系统 主程序及各功能部分的子程序组成。 超声波回波信号输入单片机, 经单片机综合 分析处理后实现其预定功能。关键词:STC89C5 单片机;HC-SR04;超声波测距1、设计报告正文2.1 超声波测距原理常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声 波,在发射时刻的同时计数器开始计时, 超声波在空

4、气中传播,途中碰到障碍物 面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。设超声波在空气中的传播速度为 340m/s340m/s (不计介质温度变化对速度的影响),根据 计时器记录的时间 t t,就可以计算出发射点距障碍物面的距离 s s,即:s=340t/2s=340t/2。如图 2-12-1 所示:图 2-1 超声波的测距原理H Seosarctg(吕)H式中:L L 两探头中心之间距离的一半;又知道超声波传播的距离为:2S vt( 2-32-3)式中:v v 超声波在介质中的传播速度;(2-1(2-1)(2-2(2-2)超声波接收图 2-2 系统硬件框图t t超声波从

5、发射到接收所需要的时间;2键盘模块声光报警电路将式 2-12-1、2-22-2、2-32-3 联立 得:1Lvtcosarctg 时,V=349m/s);,V=349m/s);当需要测量的距离 H H 远远大于 L L 时,上式变为: :H vt2所以, ,只要需要测量出超声波传播的时间 t,t,就可以得出测量的距离 H.H.2.2 系统总体方案设计本超声波测距系统由系统硬件电路及软件程序实现两部分构成。其中由 STC89C5STC89C5 单片机最小系统、HC-SR04HC-SR04 超声波模块、电源接口电路、4 4 位共阳极数 码管显示电路、三极管驱动电路、蜂鸣器声光报警电路及键盘电路构成

6、硬件系统。 以 STC89C52STC89C52片机为核心,通过触发信号控制 HC-SR04HC-SR04 超声波测距模块发射超 声波并接收回波,测算出前方障碍的距离,输入单片机进行运算,与预设报警距 离比较后判断是否启动蜂鸣器声光报警装置。根据系统功能要求及模块划分可绘制出系统硬件框图,如图2-22-2 所示:电源接口电路(2-4(2-4)其中, ,超声波的传播速度v v 在一定的温度下是一个常数( (例如在温度 T=30T=30 度(2-5(2-5)超声波测距模块卜、STC89C522 单片机最小系统图 2-2 系统硬件框图2.3 主要元件选型及其结构2.3.1 STC89C52 芯片ST

7、C89C5STC89C5 是 STCSTC 公司生产的一种低功耗、高性能 CMOSCMOS 位微控制器,具有 8K8K 在系统可编程 FlashFlash 存储器。工作电压:5.5V5.5V3.3V3.3V0 0STC89C5STC89C5 使用经典的 MCS-51MCS-51 内核,但做了很多的改进使得芯片具有传统 5151 单片机不具备的功能。在单芯片 上,拥有灵巧的 8 8 位 CPUCPU 和在系统可编程 FlashFlash,使得 STC89C52STC89C52 为众多嵌入式 控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k8k 字节FlashFlash ,512,

8、512 字节 RAMRAM 3232 位 I/OI/O 口线,看门狗定时器,内置 4KBEEPRO,MMAX8104KBEEPRO,MMAX810 复位电路,3 3个 1616 位定时器/ /计数器,4 4 个外部中断,一个 7 7 向量 4 4 级中断结构 (兼容传统 5151 的 5 5 向量 2 2级中断结构),全双工串行口。另外 STC89C52STC89C52 可降至 0Hz0Hz 静态逻辑操作,支持 2 2 种软件可选择节电模式。空闲模式下,CPUCPU 停止工作, 允许 RAMRAM 定时器/ /计数器、串口、中断继续工作。掉电保护方式下,RAMRAM 内容被保存,振荡器被冻结,

9、单片机一切工作停止,直到下一个中断或硬件复位为止。 最高运作频率 35MHz35MHz 6T/12T6T/12T 可选。其引脚图如图 2-32-3 所示:图 2-3 STC89C52 引脚图匚匚匚UUUUIJ ULnJUduuuLJrluu23(!3; STC89C2RC a a引脚图b b实物图2.3.2 HC-SR04 超声波模块HC-SR04HC-SR04 超声波模块具有性能稳定、测度距离精确、模块高精度、盲区小等 特点,使用简单易操作,常用于距离测量。其原理图及实物图如图 2-42-4、图 2-52-5 所示:图 2-4 HC-SR04 超声波模块原理图图 2-5 HC-SR04 超声

10、波模块实物图图 2-6 超声波时序图(1)(1)接线方式: VCCVCC 接电源) )、 TrigTrig(控制端)、EchoEcho ( (接收端)、GNGN(接 地)(2)(2) 基本工作原理:a.a.采用 I/OI/O 口 TRIGTRIG 触发测距,给至少 10us10us 的高电平信号;b.b.模块自动发送 8 8 个 40kHz40kHz 的方波,自动检测是否有信号返回;c.c.有信号返回,通过 I/OI/O 口 ECHOECHO 输出一个高电平,同时开始计时直到此口 变为低电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(=(高电平时间* *声速(340M/S)/2

11、(340M/S)/2。(3(3)电气参数电气参数IIC-SR04 超声波模块1 作吐压DC 5V15mA工作频率40H1垠远射程hn嚴近射程2cm1$度输入触发伫号lOuS的 TIL 1床冲输出團响信号输出丁 TL电Jj肘打成比例规格尺 145*20*15imn|表 1 HC-SR04 电气参数表(4(4)超声波时序图l( (h国ITL模块内部发出信号输出回响回响电平編出信号与悄测距篦成比例(5 5)操作:初始化时将 trigtrig 和 echoecho 端口都置低,首先向给trigtrig 发送至少 1010 usus的高电平脉冲(模块自动向外发送 8 8 个 40kHz40kHz 的方波

12、), 然后等待, 捕捉 echoecho 端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉 echoecho 的下降沿,当捕捉到下降沿,读出计时器的时间,这就是超声波在空气中运行的 时间,按照测试距离=(=(高电平时间* *声速(340M/S)/2(340M/S)/2 就可以算出超声波到障碍 物的距离。2.3.3 4 位共阳数码管(1)共阳数码管的实物图、原理图如图2-72-7、图2-82-8 所示:H日日日图 2-7 4 位共阳数码管实物图6;6;01019 9 O O G G 0 0 图 2-6 超声波时序图(2) 工作原理:共阳数码管是指将所有发光二极管的阳极接到一起形

13、成公共阳极(COM(COM 的数码管。共阳数码管在应用时应将公共极 COMSCOMS 到+5V,+5V,当某一字段发光二极管的 阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就 不亮。(3) 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱图 2-9 单片机最小系统动是将所有数码管的 8 8 个显示笔划a,b,c,d,e,f,g,dpa,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极 COMCOM 曾加位选通控制电路,位选通由各自独立的 I/OI/O 线控 制,当单片机输出字形码时,所有数码管都接收到相同的字形码,

14、但究竟是那个 数码管会显示出字形,取决于单片机对位选通 COKCOK 端电路的控制,所以我们只要 将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的 COMCOM 端 就使各个数码管轮流受控显 示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1 12ms2ms由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据, 不会 有闪烁感。2.4 硬件实现及单元电路设计(1)单片机最小系统单片机系统由电源、晶振电路、复位电路组成。如图2-92-9 所示:

15、GNDU1XTAL1XTAL2SIP15PSENALEEAPC.7/AD7P2.5/A13P2.6/A14P2.7/A15P1.0/T2P3.01RXOF10p?iF忆P12M3R4ID20pFC320pF10kCRYSTAL TE AT-RSTPfl.O/ADOPC.1/AD1PO.Z/APZP0.3ZADBP(l.4fAD4P0.5/AD6? TI0110uFP2.o/eP2-卄越P2.2/A10P2.3/A11PI.2P1.3P1.4 P1 5P1.6P1.7P3.2/INTDP3.3/INT1P3.4TOP3-5/T1P3.0AWF3.7/RIDSTC89C52C3938373635衲

16、3221P2D22F21亠24P23亠25282728101112 Trig-木13Echo14P34IP35 :16psfe*17P37,图 2-9 单片机最小系统(2) 电源接口电路设计电源部分的设计采用 3 3 节 5 5 号干电池 4.5V4.5V 供电,如图 2-102-10 所示:(3) 超声波模块接口HC-SR04HC-SR04 超声波模块接口如图 2-112-11 所示:图 2-11 HC-SR04 超声波模块接口(4)4 4 位共阳极数码管显示电路及三极管驱动电路 显示电路如图 2-122-12 所示:图 2-12 4 位共阳数码管显示电路当 I/OI/O 口输出低电平时,相

17、应段被选通,反之则不然。三极管驱动电路如图 2-132-13 所示:图 2-13 三极管驱动电路当 I/OI/O 口输出低电平时,相应位被选通,反之则不然。(5)声光报警电路的设计声光报警电路如图 2-142-14 所示:声光报警电路由一个蜂鸣器、一个三极管、一个发光二极管、两个电阻构成。 其中电阻起限流的作用,当 I/OI/O 口输出低电平时,三极管饱和导通,蜂鸣器报警、 LEDLED 亮,反之则不报警。(6)键盘电路的设计键盘电路如图 2-152-15 所示:2.5 系统的软件设计1 1)各主要模块1超声波测距模块。 给超声波 TrigTrig 口至少 10us10us 的高电平, 启动测

18、量, 定时 器 T0T0计时,通过计算测得距离。2显示模块。 包括数码管位选函数、 段选函数及距离处理显示模块。 将超声 波测距测量值、报警设定值显示在 4 4 位数码管上。3键盘模块。 由键盘检测函数及键盘处理函数组成。 有设定键、加键、减键、 复位键、开关键。主要设置报警值。4声光报警模块。 将测量值与设定报警值比较,若小于设定值,报警。5特殊存储器 eepomeepom 模块。包括单片机 eepomeepom 存储器读、写操作以及初始化。 其内存储设定报警值,掉电数据不丢失。6定时器模块。TOTO 定时器用于超声波测距的计时。T1T1 定时器用于主程序扫 描时间的控制。(2 2)主程序源

19、代码void main()send_wave(); smg_display(); time_init();init_eepom();while(1)if(flag_300ms = 1)flag_300ms = 0; clock_h_l();send_wave(); if(menu_1 = 0)smg_display(); if(zd_break_en = 1)zd_break_value +;if(zd_break_value 100)menu_1 = 0; smg_i =3; zd_break_en = 0;zd_break_value = 0;/测距离函数/处理距离显示函数/定时器初始化/

20、初始化 eepom (读取 set_d)/300ms 执行一次/报警函数/测距离函数/没有键按下时才给缓冲数组赋新值/处理距离显示函数/自动退出设置界面程序/每 300ms 加一次/30 秒后自动退出设置界面 key();if(key_ca n c*! w*3是抄1:中创y.5 es爭皿F rijLI13Q1/JH-|曲 PR E.咖 咽fUtfiUb:D.FF1PisAP1S pirPI*3r |L_-TE-C3ROb3-n郭天祥.电子工业出版社 机械工业出版社 人民邮电出版社图 5-1 超声波探测程序流程图sbit beep = P2A3;/ 蜂鸣器 IO 口定义附录二:系统软件源代码/*

21、课设名称:基于 51 单片机的超声波测距系统设计*硬件平台 : 超声波模块 +51 最小系统*显示模块: 4 个数码管*输入模块: 3 个按键 *实现的功能:用超声波模块把距离测量出来,用数码管显示,可通过按键设置要报警的距 离,低于设置*的值则自动报警,一直按住调值的键会越加越快,超出量程(3.8m)则显示 888*接口说明:数码管位 P3A4 P3A5 P3A6 P3A7*超声波发射=卩3人2*超声波接收 =P3A3按键用的接口是 P2 口*待改进的地方:温度补偿,提高精度* 当前的缺陷: 不能测出 4m 的距离*测量单位:米( m)*/#include #include #include

22、 #include #define uchar unsigned char#define uint unsigned int/数码管段选定义设 0123456789uchar code smg_duan=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/数码管位选uchar dis_smg4 =0,1,2,3;sbit smg_we1 = P3A4; sbit smg_we2 =P3A5; sbit smg_we3 = P3A6; sbitsmg_we4 = P3A7; sbit c_send = P3A1;sbit c_

23、recive = P3A0; ucharflag_hc_value;/数码管位选端口/超声波发射/超声波接收/超声波中间变量void display()static uchar i;i+;if(i = smg_i)i = 0; smg_we_switch(i); P1 =dis_smgi;uchar smg_i = 3;bit flag_300ms ;/ 显示数码管的个数: 3 /主程序300ms 处理一次的标识符bit key_500mslong distance;uint set_d;uchar flag_csb_long flag_time0;/按键程序 500ms 处理一次的标识符/定

24、义测量距离/定义设定距离/超声波超出量程/按键的 IO 变量的定义uchar key_can;/ 按键值的变量uchar zd_break_en,zd_break_value; /自动退出设置界面uchar menu_ljsd = 10;bit flag_lj_en;bit flag_lj_3_en; ucharkey_time; ucharflag_value; ucharmenu_1; uchar a_a;/用来控制连加的速度/按键连加使能/按键连 3 次连加后使能 加的数就越大了 /定时器用,作为连加的中间变量,按键时间 /定时器用,作为连加的中间变量/菜单设计的变量 /设定值写入单片机

25、标志符数码管位选函数 */void smg_we_switch(uchar i)/*switch(i)case 3: smg_we1 = 0;case 2: smg_we1 = 1;case 1: smg_we1 = 1;case 0: smg_we1 = 1;smg_we2 = 1; smg_we3 = 1;smg_we2 = 0; smg_we3 = 1;smg_we2 = 1; smg_we3 = 0;smg_we2 = 1; smg_we3 = 1;smg_we4 = 1; break;smg_we4 = 1; break;smg_we4 = 1; break;smg_we4 = 0;

26、 break;*数码管显示函数*/smg_i=3 ,/调用位选函数/段选/*把数据保存到单片机内部 eepom 中*/void write_eepom()void read_eepom()set_d = byte_read(0 x2001);set_d = 5)/确认无键按下eepom 中读出来 */读出 set_d 值key_value = 0;key_new = 1;flag_lj_en = 0;flag_lj_3_en = 0;flag_value = 0;key_time = 0;write_eepom();elseif(P2 & 0 x07) != 0 x07)key_val

27、ue +;else/置位 key_new ,表初始无键按下/关闭连加的使能/关闭 3 秒后连加的使能/连加变量清零/值(set_d)写入单片机/初始无键按下/按键检测( 5 次)key_value = 0;if(key_value = 5)key_value = 0;key_new = 0;flag_lj_en = 1;zd_break_en = 1;zd_break_value = 0;/确认按键/连加使能/自动退出设置界使能/自动退出设置界变量清零, 30 秒后退出设置界面key_can = 20;if(key_500ms = 1)II连按 500ms,启动连加key_500ms = 0;

28、key_new = 0;key_old = 1;zd_break_value = 0;自动退出设置界变量清零,30 秒后退出设置界面if(key_new = 0) & (key_old = 1)switch(P2 & 0 x07)case 0 x06: key_can =1; break; case 0 x05: key_can = 2; break;case 0 x03: key_can = 3; break; 确认有键按下II 得到 k2 键值(设定键)II 得到 k3 键值(加)II 得到 k4 键值(减)key_old = key_new;II 初始化标识符/*按键处理

29、数函数 */void key_with()if(key_can = 1)/ 得到 k2 键值(设定键)menu_1 +;if(menu_1 = 2)menu_1 = 0;if(menu_1 = 0)/退出设定界面menu_ljsd = 10;dis_smg0 = smg_duandistance % 10; dis_smg1 =smg_duandistance / 10 % 10 ;dis_smg2 = smg_duandistance / 100 % 10 & 0 x7f;smg_i = 3;/ 连加速度控制变量(复位为 500ms) /测量值显示用if(menu_1 = 1)/设置

30、界面menu_ljsd = 1;dis_smg0 = smg_duanset_d % 10; dis_smg1 =smg_duanset_d / 10 % 10;dis_smg2 = smg_duanset_d / 100 % 10 & 0 x7f ;dis_smg3 = 0 x88;smg_i = 4;/ 连加速度变量( 50ms)/设定值显示用/A ,设定值修改标识符if(menu_1 = 1)if(flag_lj_3_en = 0) menu_ljsd = 10 ;else menu_ljsd = 1;if(key_can = 2)set_d + ; if(set_d 350)

31、set_d = 350;dis_smg0 = smg_duanset_d % 10; dis_smg1 =smg_duanset_d / 10 % 10 ; dis_smg2 =smg_duanset_d / 100 % 10 & 0 x7f; dis_smg3 =0 x88;/设置报警值/三次连加之后速度加快/500ms 加 减一次/50ms 加减一次/ 得到 k3 键值(加)/设定值显示if(key_can = 3)/得到 k4 键值(减)set_d - ;if(set_d =0;i-)nop();/*void sen d_wave()long temp = 888;c_send

32、= 1;delay(); c_send =0;TH0 = 0;TL0 = 0;/10us 的高电平触发/给定时器 0 清零*延迟函数(10us,超声波发射需要)*/定时器 0、定时器 1 初始化 */*void time_init()EA = 1;TMOD = 0X11;ET0 = 1;TR0 = 1;ET1 = 1;TR1 = 1;/执行一条_nop_()指令就是 1us超声波测距程序 *TR0 = 0; flag_hc_value = 0;while(!c_recive);/当 c_recive 为零时等待TR0=1;while(c_recive)/当 c_recive 为 1 计数并等待

33、flag_time0 = TH0 * 256 + TL0;if(flag_hc_value 1) |(flag_time0 21000)/当超声波超过测量范围时,个 888TR0 = 0; flag_csb_juli = 2;temp = 888; flag_hc_value= 0; break ;elseflag_csb_juli = 1;if(flag_csb_juli = 1)TR0=0;EA = 0; temp = TH0;temp = temp * 256 + TL0; temp/= 59;=T*uS/58.823EA = 1; if(temp 380)temp = 888;EA = 0; distance = temp;EA = 1;int iBuff5;void choise(int *a,int n)/关定时器 0 定时显示 3/距离处理/关定时器 0 定时/读出定时器 0 的时间/HC-SR04 超声波模块 距离(厘米)/ 如果大于 3.8m 就超出超声波的量程/距离*冒泡排序(最大值沉底)*/选择法排序int i,j,k,temp; for(i=0;in-1;i+) k=i;for(j=i+1;jaj) k=j;if(i!=k) temp=ai; ai=ak;ak=temp;void smg_display()int Buf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论