超声波测距《单片机原理及应用》课程设计报告(学生撰写模版)_第1页
超声波测距《单片机原理及应用》课程设计报告(学生撰写模版)_第2页
超声波测距《单片机原理及应用》课程设计报告(学生撰写模版)_第3页
超声波测距《单片机原理及应用》课程设计报告(学生撰写模版)_第4页
超声波测距《单片机原理及应用》课程设计报告(学生撰写模版)_第5页
已阅读5页,还剩14页未读, 继续免费阅读

下载本文档

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

文档简介

1、 单片机原理及应用 课程设计报告(20142015 学年 第一学期)题 目 基于 AT89S51 单片机的超声波测距系统 系 别 专 业 班 级 学 号 姓 名 指导教师 完成时间 评定成绩 2目目 录录一、一、设计的目的设计的目的 .3 3二、二、设计的内容与要求设计的内容与要求 .3 3三、三、设计方案设计方案 .4 4四、四、硬件、软件设计硬件、软件设计 .5 5五、五、设计总结设计总结 .1 18 8六、六、参考文献参考文献 .1 19 93一、一、 设计的目的设计的目的在基本掌握了单片机原理及应用课程知识的基础上,完成课程设计项目的设计。通过课程设计环节的训练,包括设计方案的论证、硬

2、件设计、程序编写和设计报告的撰写,掌握单片机应用项目的设计流程和方法,加深对单片机原理及应用课程知识的理解和掌握,培养应用系统的设计能力,初步积累单片机系统开发经验,以及分析问题和解决问题的方法,并进一步拓宽专业知识面,培养实践应用技能和创新意识。 二、二、 设计的内容与要求设计的内容与要求以 AT89S51 单片机为核心,设计超声波测距系统的硬件电路和软件程序,本系统利用单片机定时发射超声波,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计时功能记录超声波在空气中的传播时间。当收到超声波的反射波时,接收电路输入端产生一个负跳变,单片机检测到这个负跳变信号后,停止内部计时器计时,读取

3、时间,计算距离,测量结果输出给 LED 显示。当测距小于报警值时,产生报警声音输出,另外增加两个按键,可以对超声波报警值进行调整。设计内容与要求:设计内容与要求:(1)选择其中一个设计项目,进行设计方案的比较和论证,确定设计思路和方案;(2)进行硬件设计,画出硬件结构框图,完成电路原理图的设计和元器件选型,必要时应给出重要电路参数的设计和计算过程,以及元器件参数的选型依据;(3)编写单片机的软件程序,先理清软件设计思路并绘制程序流程图,再编写具体的汇编语言或 C 语言程序语句,并注释说明。成绩评定依据:成绩评定依据:(分值百分比)(1)确定设计思路和方案20%;(2)画出硬件结构框图、原理图的

4、设计、元器件选型,给出电路参数的设计依据30%;(3)绘制程序流程图,再编写程序语句,并注释说明30%;(4)设计成果的功能完善程度、创新点、演示效果,撰写设计报告的规范性20%。4三、三、 设计方案设计方案硬件设计:硬件设计:按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、显示模块、超声波发射模块、接收模块共四个模块组成。单片机主控芯片使用 51 系列 AT89S51 单片机,该单片机工作性能稳定,同时也是在单片机课程设计中经常使用到的控制芯片。发射电路由单片机输出端直接驱动超声波发送。接收电路使用三极管组成的放大电路,该电路简单,调试工作小较小。图 3-1:系统设计框图硬件电路

5、的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路、报警输出电路、供电电路等几部分。单片机采用 AT89S51,系统晶振采用 12MHz 高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用 P2.7 端口输出超声波换能器所需的 40kHz的方波信号,P3.5 端口监测超声波接收电路输出的返回信号。显示电路采用简单实用的 3 位共阳 LED 数码管,段码输出端口为单片机的 P2 口,位码输出端口分别为单片机的P3.4、P3.2、P3.3 口,数码管位驱运用 PNP 三极管 S9012 三极管驱动。软件设计:软件设计:主要由主程序、超声波发生子程序、超声波接收程序及显示子程

6、序组成。超声波测距的程序既有较复杂的计算(计算距离时) ,又要求精细计算程序运行时间(超声波测距时) ,所以控制程序可采用 C 语言编程。 主程序首先是对系统环境初始化,设定时器 0 为计数,设定时器 1 定时。置位总中断允许位 EA。进行程序主程序后,进行定时测距判断,当测距标志位 ec=1 时,测量一次,程序设计中,超声波测距频度是 4-5 次/秒。测距间隔中,整个程序主要进行循环显示测量结果。当调用超声波测距子程序后,首先由单片机产生 4 个频率为 38.46kHz 超声波脉冲,加载的超声超声波接收模块超声波发射模块单片机控制系统(AT89S51)显示模块键盘模块供电单元5波发送头上。超

7、声波头发送完送超声波后,立即启动内部计时器 T0 进行计时,为了避免超声波从发射头直接传送到接收头引起的直射波触发,这时,单片机需要延时约 1.5 -2ms 时间(这也就是超声波测距仪会有一个最小可测距离的原因,称之为盲区值)后,才启动对单片机 P3.5 脚的电平判断程序。当检测到 P3.5 脚的电平由高转为低电平时,立即停止 T0 计时。由于采用单片机采用的是 12 MHz 的晶振,计时器每计一个数就是 1s,当超声波测距子程序检测到接收成功的标志位后,将计数器 T0 中的数(即超声波来回所用的时间)按式(2)计算,即可得被测物体与测距仪之间的距离。设计时取 15时的声速为 340 m/s

8、则有: d=(ct)/2=172T0/10000cm 其中,T0 为计数器 T0 的计算值。 测出距离后结果将以十进制 BCD 码方式送往 LED 显示约 0.5s,然后再发超声波脉冲重复测量过程。四、四、 硬件和软件设计硬件和软件设计超声波测距硬件设计构成超声波测距硬件设计构成系统设计框图超声波接收模块超声波发射模块单片机控制系统(AT89S51)显示模块键盘模块供电单元6基于AT89S51单片机超声波测距系统电原理图7超声波测距单片机系统超声波测距单片机系统超声波测距单片机系统主要由:AT89S51 单片机、晶振、复位电路、电源滤波部份构成。由 K1,K2 组成测距系统的按键电路。用于设定

9、超声波测距报警值。超声波发射、接收电路超声波发射、接收电路超声波发射电路由电阻 R1、三极管 BG1、超声波脉冲变压器 B 及超声波发送头 T40 构成,超声波脉冲变压器,在这里的作用是提高加载到超声波发送头两产端的电压,以提高超声波的发射功率,从而提高测量距离。接收电路由 BG1、BG2 组成的两组三级管放大电路构成;超声波的检波电路、比较整形电路由 C7、D1、D2 及 BG3 组成。40kHz 的方波由 AT89S51 单片机的 P2.7 输出,经 BG1 推动超声波脉冲变压器,在脉冲变压器次级形成 60VPP 的电压,加载到超声波发送头上,驱动超声波发射头发射超声波。发送出的超声波,遇

10、到障碍物后,产生回波,反射回来的回波由超声波接收头接收到。由于声波在空气中传播时衰减,所以接收到的波形幅值较低,经接收电路放大,整形,最后输出一负跳变,输入单片机的 P3 脚。 该测距电路的 40kHz 方波信号由单片机 AT89S51 的 P2.7 发出。方波的周期为 1/40ms,即25s,半周期为 12.5s。每隔半周期时间,让方波输出脚的电平取反,便可产生 40kHz 方波。由于单片机系统的晶振为 12M 晶振,因而单片机的时间分辨率是 1s,所以只能产生半周期为12s 或 13s 的方波信号,频率分别为 41.67kHz 和 38.46kHz。本系统在编程时选用了后者,让单片机产生约

11、 38.46kHz 的方波。由于反射回来的超声波信号非常微弱,所以接收电路需要将其进行放大。接收到的信号加到 BG1、BG2 组成的两级放大器上进行放大。每级放大器的放大倍数为 70 倍。放大的信号通过检波电路得到解调后的信号,即把多个脉冲波解调成多个大脉冲波。这里使用的是 I N 4148 检波二极管,输出的直流信号即两二极管之间电容电压。该接收电路结构简单,性能较好,制作难度小。显示电路显示电路本系统采用三位一体 L E D 数码管显示所测距离值,段码输出端口为单片机的 P2 口,位8码输出端口分别为单片机的 P3.4、P3.2、P3.3 口,数码管位驱运用 PNP 三极管 S9012 三

12、极管驱动。供电电路供电电路本测距系统由于采用的是 LED 数码管用为显示方式,正常工作时,系统工作电流约为30-45mA,为保证系统统计的可靠正常工作,系统的供电方式主要交流 AC6-9 伏,同时为调试系统方便,供电方式考虑了第二种方式,即由 USB 口供电,调试时直接由电脑 USB 口供电。6 伏交流是经过整流二极管 D1-D4 整流成脉动直流后,经虑波电容 C1 虑波后形成直流电,为保证单片机系统的可电,供电路中由 5 伏的三端称压集成电路进行稳压后输出 5 伏的真流电供整个系统用电,为进一步提高电源质量,5 伏的直流电再次经过 C3、C4 滤波。报警输出电路报警输出电路为提高测测距系统的

13、实用性,本测距系统的报警输出提供开关量信号及声响信号两种方式。方式一:报警信号由单片机 P3.1 端口输出,继电器输出,可驱动较大的负载,电路由电阻 R6、三极管 BG9、继电器 JDQ 组成,当测量值低于事先设定的报警值时,继电器吸合,测量值高于设定的报警值时,继电器断开。方式二:报警信号由单片机P0.2口输出,提供声响报警信号,电路由电阻R7、三极管BG8、蜂鸣器BY组成,当测量值低于事先设定的报警值时,蜂鸣器发出“滴、滴、滴.”报警声响信号,测量值高于设定的报警值时,停止发出报警声响。9超声波测距软件设计构成超声波测距软件设计构成超声波测距程序流程图超声波测距程序流程图 YYN=N0=0

14、=1开始初始化测量标志启动定时器超声波测距距离上限值距离盲区值=显示值= C C C显示值= - - -测量段码转换显示设定段码转换距离报警值=报警输出=N10超声波测距程子序流程图超声波测距程子序流程图产生超声波的子程序:产生超声波的子程序:为了方便程序移置及准确产生超声波信号,本测距的超声波产生程序是用汇编语言编写的进退声波产生程序。产生的超声波个数为UCSBFS SEGMENT CODERSEG UCSBFSY标志=1?发送超声波延时避开盲区收到回波否?预设时间?启动计时器 T1停止计时计算测量值超声波测距结束NNYYN11PUBLIC CSBFSCSBFS:mov R6,#8h ;超声

15、波发射的完整波形个数:共计四个 here:cpl p2.7 ;输出 40kHz 方波 nop nop nop nop nop nop nop nop nop djnz R6,here RETEND超声波测距程序超声波测距程序 / 基于 AT89S51/52 单片机的超声波测距系统/ 测量范围:30-699 厘米/ 晶振:12MH#include #define uchar unsigned char#define uint unsigned intsbit k1=P37; /k1 功能键sbit k2=P36; /k2 数值调整键sbit bjh=P31; /定值输出sbit sx=P02;

16、/报警值输出(声音)sbit csbout=P27; /超声波发送sbit csbint=P35; /超声波接收sbit LED1 = P34;/数码管位驱动sbit LED2 = P32;/数码管位驱动sbit LED3 = P33;/数码管位驱动uchar c1bz,mqkd,bai,shi,ge,sec25,sec,sec1,table3;/测距标志,盲区宽度,百位,十位,个位,25ms 计数器,秒标志,1s 计数器,字型码数组uchar baokuo10=0 x81,0 xED,0 xA2,0 xA8,0 xCC,0 x98,0 x90,0 xAD,0 x80,0 x88;/09 段码

17、12uint dz,zzbl,i,jsz,s;/报警值界限,中间变量,计算距离bit b,c,e,k11,k12,k21,k22;void delay(i);/延时函数void scanLED();/显示函数void timeTotable();/显示转换函数void time();/时间处理函数void jpcl();/键盘处理函数void wdzh();/超声波测距函数void bgcl();/继电器控制函数void jpzcx();/键盘处理函数,设置报警值void csbfs();/超声波发射函数void main()EA=1; /开中断 TMOD=0 x11; /设定时器 0 为计时

18、,设定时器 1 定时ET0=1; /定时器 0 中断允许 TH0=0 xD8;TL0=0 xF0;/设定时值为 10000us(10ms)TR0=1;csbout=1;TR1=0;mqkd=30;/盲区设为 30CM dz=60;/报警值设为 60CMk12=1;/K12 为第二次读的 K1 按键状态k1=1;/K1 按键状态k2=1;/K2 按键状态k22=1;/K22 为第二次读的 K2 按键状态while(1)if (c1bz=1)/0.25s 测距一次 c1bz=0;wdzh(); /调用超声波测量bgcl(); /调用报警处理继电器函数timeTotable();/调用转换段码功能模

19、块 scanLED(); /调用显示函数if(jsz699)table0=0 x93;/显示 Ctable1=0 x93;/显示 Ctable2=0 x93;/显示 Celse if (jsz=25) / 25 * 10 ms = 0.25 s sec25=0;c1bz+;e=e;/闪烁标志 if (c1bz3)/修改报警值后,重新设置测距标志 c1bz=0; sec1+;if (sec1100) sec1=0; sec+; /秒计时 if (sec=3) sec=0; 15void jpcl() /按键处理程序k11=k1;if (!k12&k11)/K1 按下并释放 b=1;/开始

20、设置报警值标志k12=k11;k11=k1;k21=k2;if (b=1) sx=0;table0=0 x84;/显示 Atable1=0 x84;/显示 Atable2=0 x84;/显示 Asec=0;c=0;while(!c)/A 显示 2Sif (sec=2)c=1;scanLED();c=0;zzbl=jsz;/保存测距值jsz=dz;timeTotable();/将报警值转换成字型码jpzcx();/报警值修改函数if (dz6)/百位不能大于 6 bai=0; if (e=1)table2=0 xFF;/百位闪烁else table2=baokuobai;scanLED();if

21、 (!k12&k11) /K1 按下并释放,调整十位 c=1;k22=k21;k12=k11;table2=baokuobai;/百位确定c=0;while(!c)k11=k1; k21=k2;if (!k22&k21) /调整十位shi+;if (shi9)shi=0;if (e=1)table1=0 xFF;else table1=baokuoshi;scanLED();if (!k12&k11) c=1;k22=k21;k12=k11;17table1=baokuoshi;c=0;while(!c)k11=k1; k21=k2;if (!k22&k21)

22、ge+;if (ge9)ge=0;if (e=1)table0=0 xFF;else table0=baokuoge;scanLED();if (!k12&k11) c=1;b=0;dz=bai*100+shi*10+ge;k22=k21;k12=k11;void wdzh()TR0=0;TH1=0 x00;TL1=0 x00;csbint=1;sx=0;/delay(2700);csbfs();csbout=1;TR1=1;i=260;while(i-);i=0;while(csbint)/判断接收回路是否收到超声波的回波18i+;if(i=3300)/超时未收到csbint=0;TR1=0;s=TH1;s=s*256+TL1;TR0=1;csbint=1;jsz=s*0.034;/计算测量结果jsz=jsz/2; void bgcl()if (jszdz)bjh=0;elsebjh=1;五、五、 设计总结设计总结通过两周来实训课程基本上完成了课程设计的要求,但是在这其中也存在

温馨提示

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

评论

0/150

提交评论