单片机课程设计双向超声波测距加温度显示

上传人:仙*** 文档编号:34325635 上传时间:2021-10-21 格式:DOC 页数:29 大小:3.95MB
收藏 版权申诉 举报 下载
单片机课程设计双向超声波测距加温度显示_第1页
第1页 / 共29页
单片机课程设计双向超声波测距加温度显示_第2页
第2页 / 共29页
单片机课程设计双向超声波测距加温度显示_第3页
第3页 / 共29页
资源描述:

《单片机课程设计双向超声波测距加温度显示》由会员分享,可在线阅读,更多相关《单片机课程设计双向超声波测距加温度显示(29页珍藏版)》请在装配图网上搜索。

1、单片机原理与应用单片机原理与应用课程设计课程设计题题 目目 双向超声波测距加温度显示 学学 院院 物理科学与技术学院 专专 业业 新能源科学与工程 班班 级级 能源 1201 学学 生生 柳尚明 学学 号号 20121702027 指导教师指导教师 童艳荣 二一四 年 七 月 七 日摘要本设计介绍了基于单片机控制的超声波测距仪的原理:由 STC89C52RC 控制定时器产生超声波脉冲并计时,计算超声波自发射至接收的往返时间,从而得到实测距离。并且在数据处理中采用了温度补偿的调整,用 LCD1602 显示距离和温度。整个硬件电路由超声波发射电路、超声波接收电路、温度测量电路、电源电路、显示电路等

2、模块组成。各探头的信号经单片机综合分析处理,实现超声波测距仪的各种功能。在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。相关部分附有硬件电路图、程序流程图,给出了系统构成、电路原理及程序设计。此系统具有易控制、工作可靠、 、可读性强和流程清晰等优点。由于超声波测量的距离一般小于 5 米,所以我们采用双向超声波测距,同时检测测距仪到两边的距离,然后进行求和,从而实现了更远距离的测量,完成后的作品可用于需要测量距离参数的各种应用场合。关键词:关键词:超声波测距仪 环境温度 单片机目录目录1 设计任务设计任务.41.1 设计任务 .42 设计方案设计方案.52.1 任务分析 .

3、52.2 方案设计 .52.3 子程序设计 .53 系统硬件设计系统硬件设计.113.1 时钟电路设计 .113.2 复位电路设计 .113.3 超声波测距电路 .123.4 温度测量电路设计 .123.5 LCD1602 显示电路设计.134 系统软件设计系统软件设计.144.1 超声波测距的设计流程图 .144.2 软件编译调试环境KEIL.144.3 系统仿真环境PROTEUS.154.4 原理图绘制及PCB设计ALTIUM DESIGNER.155 仿真与性能分析仿真与性能分析.165.1 PROTEUS仿真电路图.166 心得体会心得体会.17参考文献参考文献.18附录附录 1 系统

4、原理图系统原理图.19附录附录 2 三维原理图三维原理图.20附录附录 3 系统系统 PCB 图图.21附录附录 4 程序清单程序清单.22 1 设计任务设计任务1.1 设计任务设计任务利用单片机完成双向超声波测距加温度显示的设计,克服了超声波测距的距离限制的问题,同时在测量距离的同时,测量了所测地的温度。当温度达到一定值时,蜂鸣器响,发出警报。双向超声波测距加温度显示示意图1. 基本要求(1)HC-SR04 要求每侧的测量距离小于 5 米,而且温度对其工作 也有一定影响。感应角度不大于 15 度,探测距离为 2cm-450cm,模块自动发送 8 个40khz 的方波,自动检测是否有信号返回,

5、所测距离用 LCD1602 液晶屏显示出来。(2)DS18b20 测量温度精度达到 0.1 度,测量的温度的范围在-20 度到+50 度之间,用 LCD1602 液晶屏显示出来。(3)使用蜂鸣器来做报警,当温度达到设定温度时,警报响。2 设计方案设计方案2.1 任务分析任务分析 双向超声波测距加温度显示能测量两倍的距离,超声波在空气中的传播速度为340m/s,根据计时器记录的时间 t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2。在测量双向距离的同时,测量了当地温度,并且在数据处理中采用了温度补偿的调整,用 LCD1602 显示距离和温度。2.2 方案设计方案设计1.硬件方案根

6、据设计的要求可知,系统的硬件原理框图如下图所示。图 2.1 系统的硬件原理框图单片机可选用 STC89C52RC,它与 8052 系列单片机全兼容,但其内部带有 8KB 的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。左右方向采用 2 个超声波测距仪,增加所测距离。2. 软件方案 软件采用模块化设计方法,由主程序、超声波发生子程序、超声波接收中断子程序、温度测量子程序、距离计算子程序、显示子程序等模块组成。2.3 子程序设计子程序设计1. 超声波发送子程序及超声波接收中断子程序超声波发生子程序的作用是通过 P2.1 端口发送左右超声波脉冲信号(频率约 40kHz 的

7、方波) ,脉冲宽度为 12s 左右,同时把计数器 T0 打开进行计时,定时器 T0工作在方式 0。超声波测距仪主程序利用外中断 1 检测返回超声波信号,一旦接收到返回超声波信号(即引脚出现低电平) ,立即进入中断程序。进入中断后就立即关闭计时器1INTT0 停止计时,并将测距成功标志字赋值 1。如果当计时器溢出时还未检测到超声波返回信号,则定时器 T0 溢出中断将外中断 1 关闭,并将测距成功标志字赋值 0 表示此次测距不成功。T0 中断服务程序如下:sbit send=P10;void timer0(void)interrupt 1 send=!send; TH0=0 x1f; TL0=0

8、xf4;超声波接收(外部中断 1)程序:void int1(void)interrupt 2 if(TH1!=0 x00&TH0!=0 x00) b=1; TR1=0; TR0=0; t=TH1*256+TL1; t=t/1000000; TH0=0 x1f; TL0=0 xf4; TH1=0 x00; TL1=0 x00;else b=0; TR1=0; TR0=0; TH0=0 x1f; TL0=0 xf4; TH1=0 x00; TL1=0 x00; 2.测温子程序测温的主要器件是 DS18B20,现场温度直接以“一线总线”的数字方式传输,DS18B20 中有两个存测得的温度值的两个 8

9、 位存贮器 RAM,用 11 位存贮温度值,最高位(5 位)为符号位。对应的温度计算:当符号位 S=0 时,直接将二进制位转换为十进制;当 S=1 时,先将补码变换为原码,再计算十进制值。图 6.2 为 DS18B20 的温度存储方式: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit02322212021222324 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 SSSSS262524图 2.2 DS18B20 的温度存储方式负温度时 S=1,正温度时 S=0。因此我们只需要逐位读出它的温度就可以了。读出一个字节 C

10、代码如下: bit init_DS18B20() uchar num;bit flag;DQ=1;for(num=0;num2;num+); /先拉高DQ=0;for(num=0;num200;num+); / 480-960uspowerupDQ=1;for(num=0;num60us waitflag=DQ;/ 响应for(num=0;num150;num+);/ 60-240us ds18b20 存在信号DQ=1;return flag;void DS18B20_WR_CHAR(uchar byte)/ 先写低位uchar num;uchar num1;for(num1=0;num18;

11、num1+) DQ=0;/拉低_nop_();/下拉 1us_nop_();DQ=byte&0 x01;for(num=0;num60us waitbyte=1;DQ=1; /拉高LS ByteMS Byte_nop_();_nop_();uchar DS18B20_RD_CHAR() /先读低位uchar num;uchar num1;uchar byte=0;for(num1=0;num18;num1+)DQ=0; /拉低_nop_();DQ=1;for(num=0;num1;num+); / =1;if(DQ=1)byte|=0 x80;else byte|=0 x00;DQ=1;/拉高

12、_nop_();_nop_();for(num=0;num60usreturn byte;void DS18B20_WENDU()uchar temperaturel=0;uchar temperatureh=0;if(init_DS18B20()=0)DS18B20_WR_CHAR(0 xcc);DS18B20_WR_CHAR(0 x44);delay1ms(1000);if(init_DS18B20()=0)DS18B20_WR_CHAR(0 xcc);DS18B20_WR_CHAR(0 xBE);_nop_();temperaturel=DS18B20_RD_CHAR();tempera

13、tureh=DS18B20_RD_CHAR();wendu=(temperatureh*256+temperaturel)*0.625; /温度比正常大 10倍init_DS18B20();3.距离计算子程序当前温度和超声波往返时间均测量出来后,用 C 语言根据公式计算距离来编程是比较简单的算法。根据测量距离,而其中,故可简化为:ctD21KTcMRTc27310,其实现程序算法如下:KTtKTtcD27317 .1652731210#includevoid distance(void)double radical,dist,t;radical=sqrt(1+(temnum+273)/273)

14、;dist=165.7*t*radical;return(dist);4.显示子程序显示电路由 LCD1602 液晶屏显示,编程模块化,操作非常简单。void write_com(uchar com)lcdrs=0;P0=com;delay1ms(5);lcden=1;delay1ms(5);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delay1ms(5);lcden=1;delay1ms(5);lcden=0;void write_str(uchar *str) while(*str!=0) /未结束 write_data(*str

15、+); delay1ms(1); void init_1602()lcdrw=0;lcden=0;write_com(0 x38);write_com(0 x0e);write_com(0 x06);write_com(0 x01);write_com(0 x80);3 系统硬件设计系统硬件设计3.1 时钟电路设计时钟电路设计如上图所示,采用内部时钟产生方式,在 XTAL1 和 XTAL2 两端跨接晶体,与内部反相器构成稳定的自击震荡。其发出的时钟脉冲直接送入片内定时控制部件。3.2 复位电路设计复位电路设计如上图所示,采用上电+按钮电平复位方式,当按下按钮时,RST 管脚高电平触发。为保证复

16、位可靠,RC 时间常数应大于两个机器周期,电容取 33uf,电阻取 200 欧。3.3 超声波测距电路超声波测距电路如上图所示,两个超声波测距模块 J4 和 J5,分别接到了单片机的 22,23,24,25 引脚上。3.4 温度测量电路设计温度测量电路设计如上图所示,测温芯片 ds18b20 的连接到了单片机的 21 脚上。3.5 LCD1602 显示电路设计显示电路设计 4 系统软件设计系统软件设计4.1 超声波测距的设计流程图超声波测距的设计流程图4.2 软件编译调试环境软件编译调试环境Keil单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU 可以执行的机器

17、码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51 单片机的汇编软件有早期的 A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发 MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。掌握这一软件的使用对于使用 51 系

18、列单片机的爱好者来说是十分必要的,如果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选,即使不使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会事半功倍。4.3 系统仿真环境系统仿真环境ProteusProteus ISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件。它运行于 Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件具有如下特点:实现了单片机仿真和 SPICE 电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI

19、 调试器、键盘和 LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000 系列、8051 系列、AVR 系列、PIC12 系列、PIC16 系列、PIC18 系列、Z80 系列、HC11 系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如 Keil C51 uVision2 等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和 SPICE

20、分析于一身的仿真软件,功能极其强大。本章介绍 Proteus ISIS软件的工作环境和一些基本操作。4.4 原理图绘制及原理图绘制及 pcb 设计设计Altium designerAltium Designer 是原 Protel 软件开发商 Altium 公司推出的一体化的电子产品开发系统,主要运行在 Windows 操作系统。这套软件通过把原理图设计、电路仿真、PCB 绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。我们用此软件设计了原理图,并设计出了pcb

21、 板,以便于批量化生产。5 仿真与性能分析仿真与性能分析5.1 Proteus 仿真电路图仿真电路图由于没有找到超声波测距模块,此图只进行了温度传感器的仿真。6 心得体会心得体会时光飞逝,一转眼,本学期已经结束,荣幸的是学校为我们在暑期之初安排了为期五天的单片机课程设计。俗话说“好的开始是成功的一半” 。说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己感兴趣的课题,有能力的话可以自己添加新的功能。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的

22、模块化,修改的方便,也要注重程序的调试,掌握其方法。本次课程设计从电路图的设计到硬件的选取及电路的焊接都要我们自己动手去做,软件的编程也要我们不断的调试,最终能做出一个完整的作品。当然,这其中也有很多问题,第一,不够细心,比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上。这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难

23、的勇气,就没有什么办不到的。在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了有关器件的性能及测试方法。感谢老师的辅导以及同学的帮助,课程设计时间虽然很短,但我学习了很多的东西,使我眼界大开,感受颇深。参考文献参考文献1 郭天祥.新概念 51 单片机 C 语言教程M.北京:电子工业出版社,2009.2 胡汉才.单

24、片机原理与接口技术M.北京: 清华大学大学出版社,2004.1-505.3 邢国泉. LM35 温度传感器的温度特性及其应用J. 医疗设备信息.2007,11,25-28.4 马洪芹,吴锡淳,用单片机控制液晶模块显示J.电子科技,2008, (01)5 路锦正, 王建勤, 杨绍国, 赵珂, 赵太飞. 超声波测距仪的设计J .传感器技术, 2002,(08): 9-11. 6 牛余朋, 成曙. 基于单片机的超声波测距系统J. 兵工自动化, 2005, (04): 44-46. 7阮成功, 蓝兆辉, 陈硕. 基于单片机的超声波测距系统J. 应用科技, 2004, (07): 8-10. 8孙育才,

25、孙华芳,王荣兴. 单片机原理及其应用. 北京:电子工业出版社,2006:1287.9王丰,栾学德. 单片机原理与应用技术. 北京:北京航空航天大学出版社,2007:254261. 10求是科技. 单片机通信技术与工程实践. 北京:人民邮电出版社,2005:1191. 11林志琦,郎建军,李会杰,佟大鹏. 基于 Proteus 的单片机可视化软硬件仿真. 北京:北京航空航天大学出版社,2006:193. 12 陈兴梧,刘鸣,赵煜,赵慧影. 数字式温度计 DS18B20 的特性及应用EB/OL. http:/ 1 系统原理图系统原理图附录附录 2 三维原理图三维原理图附录附录 3 系统系统 PCB

26、 图图附录附录 4 程序清单程序清单#include#include#define uchar unsigned char#define uint unsigned int/ hc-sr04sbit TRIG1=P21;sbit ECHO1=P22;sbit TRIG=P23;sbit ECHO=P24;/fengmingqisbit bj=P25;/ds18b20sbit DQ=P20; / 1602sbit lcdrs=P34;sbit lcdrw=P36;sbit lcden=P37;uint wendu=0;uint t1;bit cuowu,cuowu1;/ 1602void del

27、ay1ms(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)lcdrs=0;P0=com;delay1ms(5);lcden=1;delay1ms(5);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delay1ms(5);lcden=1;delay1ms(5);lcden=0;void write_str(uchar *str) while(*str!=0) /未结束 write_data(*str+); delay1ms(1); void

28、init_1602()lcdrw=0;lcden=0;write_com(0 x38);write_com(0 x0e);write_com(0 x06);write_com(0 x01);write_com(0 x80);/ / ds18b20bit init_DS18B20() uchar num;bit flag;DQ=1;for(num=0;num2;num+); /先拉高DQ=0;for(num=0;num200;num+); / 480-960uspowerupDQ=1;for(num=0;num60us waitflag=DQ;/ 响应for(num=0;num150;num+)

29、;/ 60-240us ds18b20 存在信号DQ=1;return flag;void DS18B20_WR_CHAR(uchar byte)/ 先写低位uchar num;uchar num1;for(num1=0;num18;num1+) DQ=0;/拉低_nop_(); /下拉 1us_nop_();DQ=byte&0 x01;for(num=0;num60us waitbyte=1;DQ=1; /拉高_nop_();_nop_();uchar DS18B20_RD_CHAR()/先读低位uchar num;uchar num1;uchar byte=0;for(num1=0;num

30、18;num1+)DQ=0; /拉低_nop_();DQ=1;for(num=0;num1;num+); / =1;if(DQ=1)byte|=0 x80;else byte|=0 x00;DQ=1;/拉高_nop_();_nop_();for(num=0;num60usreturn byte;void DS18B20_WENDU()uchar temperaturel=0;uchar temperatureh=0;if(init_DS18B20()=0)DS18B20_WR_CHAR(0 xcc);DS18B20_WR_CHAR(0 x44);delay1ms(1000);if(init_D

31、S18B20()=0)DS18B20_WR_CHAR(0 xcc);DS18B20_WR_CHAR(0 xBE);_nop_();temperaturel=DS18B20_RD_CHAR();temperatureh=DS18B20_RD_CHAR();wendu=(temperatureh*256+temperaturel)*0.625; /温度比正常大 10 倍init_DS18B20();/ void main()unsigned long sj,sj1;uint s,s1,z;TMOD=0 x11;TRIG=0;TRIG1=0;EA=1;ET1=1;ET0=1;TH0=0;TL0=0;

32、TH1=0;TL1=0;s=0;s1=0;TR0=0;TR1=0;wendu=0;init_1602();delay1ms(1000);while(1)if( init_DS18B20()=0) DS18B20_WENDU(); write_com(0 x80+0 x40);write_str(T);write_data(wendu/100)%10+48);write_data(wendu/10)%10+48);write_data(.);write_data(wendu%10+48);write_data(0 xdf);write_data(C);write_str( S);write_da

33、ta(:);write_data(z/10000%10+48);write_data(z/1000%10+48);write_data(z/100%10+48); write_data(z/10%10+48);/write_data(.); /write_data(z%10+48);write_data(c);write_data(m);if(wendu/100)%10+48)2&(wendu/10)%10+48)2) bj=0;/delay1ms(3);/bj=1;/delay1ms(3); else bj=1; TRIG=1; _nop_();_nop_();_nop_();_nop_()

34、;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TRIG=0;while(!ECHO);TR0=1;while(ECHO);TR0=0; sj=TH0*256+TL0;s=sj*(331.45+61*wendu/10/100)/200/10; TRIG1=1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TRIG1=0;while(!ECHO1);TR1=1;while(ECHO1);TR1=0;

35、sj1=TH1*256+TL1;s1=sj1*(331.45+61*wendu/10/100)/200/10; if(s6000|s16000) /|(cuowu1,cuowu=1) write_com(0 x80);write_str(L);write_data(:);write_data(-); write_data(-);write_data(-);/write_data(.);write_data(c);write_data(m);write_str( R);write_data(:);write_data(-);write_data(-);write_data(-);/write_d

36、ata(.);/write_data(-);write_data(c);write_data(m); bj=0;delay1ms(3);bj=1;delay1ms(3); else write_com(0 x80);write_str(L);write_data(:);write_data(s/1000%10+48);write_data(s/100%10+48); write_data(s/10%10+48);/write_data(.);/write_data(s%10+48);write_data(c);write_data(m);write_str( R);write_data(:);write_data(s1/1000%10+48);write_data(s1/100%10+48); write_data(s1/10%10+48); /write_data(.); /write_data(s1%10+48);write_data(c);write_data(m);TH0=0; TL0=0;TH1=0; TL1=0;delay1ms(20);z=s+s1;void time0() interrupt 1 TH0=0;TL0=0;cuowu=1; void time1() interrupt 3 TH1=0;TL1=0;cuowu1=1;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!