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

上传人:土8路 文档编号:10004505 上传时间:2021-04-10 格式:DOC 页数:29 大小:3.95MB
返回 下载 相关 举报
单片机课程设计双向超声波测距加温度显示.doc_第1页
第1页 / 共29页
单片机课程设计双向超声波测距加温度显示.doc_第2页
第2页 / 共29页
单片机课程设计双向超声波测距加温度显示.doc_第3页
第3页 / 共29页
单片机课程设计双向超声波测距加温度显示.doc_第4页
第4页 / 共29页
单片机课程设计双向超声波测距加温度显示.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

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

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

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

3、计方案设计方案.5 2.1 任务分析 .5 2.2 方案设计 .5 2.3 子程序设计 .5 3 系统硬件设计系统硬件设计.11 3.1 时钟电路设计 .11 3.2 复位电路设计 .11 3.3 超声波测距电路 .12 3.4 温度测量电路设计 .12 3.5 LCD1602 显示电路设计.13 4 系统软件设计系统软件设计.14 4.1 超声波测距的设计流程图 .14 4.2 软件编译调试环境KEIL.14 4.3 系统仿真环境PROTEUS.15 4.4 原理图绘制及PCB设计ALTIUM DESIGNER.15 5 仿真与性能分析仿真与性能分析.16 5.1 PROTEUS仿真电路图.

4、16 6 心得体会心得体会.17 参考文献参考文献.18 附录附录 1 系统原理图系统原理图.19 附录附录 2 三维原理图三维原理图.20 附录附录 3 系统系统 PCB 图图.21 附录附录 4 程序清单程序清单.22 1 设计任务设计任务 1.1 设计任务设计任务 利用单片机完成双向超声波测距加温度显示的设计,克服了超声波测距的距离限 制的问题,同时在测量距离的同时,测量了所测地的温度。当温度达到一定值时,蜂 鸣器响,发出警报。 双向超声波测距加温度显示示意图 1. 基本要求 (1)HC-SR04 要求每侧的测量距离小于 5 米,而且温度对其工作 也有一定影 响。感应角度不大于 15 度

5、,探测距离为 2cm-450cm,模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回,所测距离用 LCD1602 液晶屏显示出 来。 (2)DS18b20 测量温度精度达到 0.1 度,测量的温度的范围在-20 度到+50 度 之间,用 LCD1602 液晶屏显示出来。 (3)使用蜂鸣器来做报警,当温度达到设定温度时,警报响。 2 设计方案设计方案 2.1 任务分析任务分析 双向超声波测距加温度显示能测量两倍的距离,超声波在空气中的传播速度为 340m/s,根据计时器记录的时间 t,就可以计算出发射点距障碍物的距离(s),即: s=340t/2。在测量双向距离的同时,测量了当地温

6、度,并且在数据处理中采用了温度 补偿的调整,用 LCD1602 显示距离和温度。 2.2 方案设计方案设计 1.硬件方案 根据设计的要求可知,系统的硬件原理框图如下图所示。 图 2.1 系统的硬件原理框图 单片机可选用 STC89C52RC,它与 8052 系列单片机全兼容,但其内部带有 8KB 的 FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。左右方向 采用 2 个超声波测距仪,增加所测距离。 2. 软件方案 软件采用模块化设计方法,由主程序、超声波发生子程序、超声波接收中断子程 序、温度测量子程序、距离计算子程序、显示子程序等模块组成。 2.3 子程序设计子程序

7、设计 1. 超声波发送子程序及超声波接收中断子程序 超声波发生子程序的作用是通过 P2.1 端口发送左右超声波脉冲信号(频率约 40 kHz 的方波) ,脉冲宽度为 12s 左右,同时把计数器 T0 打开进行计时,定时器 T0 工作在方式 0。 超声波测距仪主程序利用外中断 1 检测返回超声波信号,一旦接收到返回超声波 信号(即引脚出现低电平) ,立即进入中断程序。进入中断后就立即关闭计时器 1INT T0 停止计时,并将测距成功标志字赋值 1。如果当计时器溢出时还未检测到超声波返 回信号,则定时器 T0 溢出中断将外中断 1 关闭,并将测距成功标志字赋值 0 表示此 次测距不成功。 T0 中

8、断服务程序如下: sbit send=P10; void timer0(void)interrupt 1 send=!send; TH0=0 x1f; TL0=0 xf4; 超声波接收(外部中断 1)程序: void int1(void)interrupt 2 if(TH1!=0 x00 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

9、.测温子程序 测温的主要器件是 DS18B20,现场温度直接以“一线总线”的数字方式传输, DS18B20 中有两个存测得的温度值的两个 8 位存贮器 RAM,用 11 位存贮温度值,最高 位(5 位)为符号位。对应的温度计算:当符号位 S=0 时,直接将二进制位转换为十 进制;当 S=1 时,先将补码变换为原码,再计算十进制值。图 6.2 为 DS18B20 的温度 存储方式: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 23222120 21222324 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 SSSS

10、S 262524 图 2.2 DS18B20 的温度存储方式 负温度时 S=1,正温度时 S=0。因此我们只需要逐位读出它的温度就可以了。读 出一个字节 C 代码如下: bit init_DS18B20() uchar num; bit flag; DQ=1; for(num=0;num2;num+); /先拉高 DQ=0; for(num=0;num200;num+); / 480-960uspowerup DQ=1; for(num=0;num60us wait flag=DQ;/ 响应 for(num=0;num150;num+);/ 60-240us ds18b20 存在信号 DQ=1

11、; return flag; void DS18B20_WR_CHAR(uchar byte)/ 先写低位 uchar num; uchar num1; for(num1=0;num18;num1+) DQ=0;/拉低 _nop_();/下拉 1us _nop_(); DQ=byte for(num=0;num60us wait byte=1; DQ=1; /拉高 LS Byte MS Byte _nop_(); _nop_(); uchar DS18B20_RD_CHAR() /先读低位 uchar num; uchar num1; uchar byte=0; for(num1=0;num1

12、8;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;num60us return byte; void DS18B20_WENDU() uchar temperaturel=0; uchar temperatureh=0; if(init_DS18B20()=0) DS18B20_WR_CHAR(0 xcc); DS18B20_WR_CHAR(0 x44); delay1

13、ms(1000); if(init_DS18B20()=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(); 3.距离计算子程序 当前温度和超声波往返时间均测量出来后,用 C 语言根据公式计算距离来编程是 比较简单的算法。 根据测量距离,而其中,故可简化为:

14、 ctD 2 1 K T c M RT c 273 1 0 ,其实现程序算法如下: K T t K T tcD 273 1 7 . 165 273 1 2 1 0 #include void distance(void) double radical,dist,t; radical=sqrt(1+(temnum+273)/273); dist=165.7*t*radical; return(dist); 4.显示子程序 显示电路由 LCD1602 液晶屏显示,编程模块化,操作非常简单。 void write_com(uchar com) lcdrs=0; P0=com; delay1ms(5)

15、; 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 init_1602() lcdrw=0; lcden=0; write_com(0 x38); write_com(0 x0e); write_com(0 x06); write_com

16、(0 x01); write_com(0 x80); 3 系统硬件设计系统硬件设计 3.1 时钟电路设计时钟电路设计 如上图所示,采用内部时钟产生方式,在 XTAL1 和 XTAL2 两端跨 接晶体,与内部反相器构成稳定的自击震荡。其发出的时钟脉冲直接送 入片内定时控制部件。 3.2 复位电路设计复位电路设计 如上图所示,采用上电+按钮电平复位方式,当按下按钮时,RST 管 脚高电平触发。为保证复位可靠,RC 时间常数应大于两个机器周期, 电容取 33uf,电阻取 200 欧。 3.3 超声波测距电路超声波测距电路 如上图所示,两个超声波测距模块 J4 和 J5,分别接到了单片机的 22,23

17、,24,25 引脚上。 3.4 温度测量电路设计温度测量电路设计 如上图所示,测温芯片 ds18b20 的连接到了单片机的 21 脚上。 3.5 LCD1602 显示电路设计显示电路设计 4 系统软件设计系统软件设计 4.1 超声波测距的设计流程图超声波测距的设计流程图 4.2 软件编译调试环境软件编译调试环境Keil 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变 为 CPU 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已 极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于 MCS-51 单片机的汇编软件有早期的 A51,随

18、着单片机开发技术的不断发展,从普遍使 用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件 是目前最流行开发 MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全 面支持 Keil 即可看出。Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个 功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision) 将这些部份组合在一起。掌握这一软件的使用对于使用 51 系列单片机的爱好者来说 是十分必要的,如果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选,即使不 使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强

19、大的软件仿真调试工具 也会事半功倍。 4.3 系统仿真环境系统仿真环境Proteus Proteus ISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件。它运行 于 Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件 具有如下特点:实现了单片机仿真和 SPICE 电路仿真相结合。具有模拟电路仿真、 数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试 器、SPI 调试器、键盘和 LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分 析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:

20、68000 系列、8051 系列、AVR 系列、PIC12 系列、PIC16 系列、PIC18 系列、Z80 系列、 HC11 系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、 单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在 该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境, 如 Keil C51 uVision2 等软件。具有强大的原理图绘制功能。总之,该软件是一款 集单片机和 SPICE 分析于一身的仿真软件,功能极其强大。本章介绍 Proteus ISIS 软件的工作环境和一些基本操作。 4.4 原理图绘制及原理图绘制

21、及 pcb 设计设计Altium designer Altium Designer 是原 Protel 软件开发商 Altium 公司推出的一体化的电子产品 开发系统,主要运行在 Windows 操作系统。这套软件通过把原理图设计、电路仿真、 PCB 绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合, 为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软 件必将使电路设计的质量和效率大大提高。我们用此软件设计了原理图,并设计出了 pcb 板,以便于批量化生产。 5 仿真与性能分析仿真与性能分析 5.1 Proteus 仿真电路图仿真电路图 由于没有找到

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

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

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

25、4.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孙育才,孙华芳,王荣兴. 单片机原理及其应用. 北京:电子

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

27、include #include #define uchar unsigned char #define uint unsigned int / hc-sr04 sbit TRIG1=P21; sbit ECHO1=P22; sbit TRIG=P23; sbit ECHO=P24; /fengmingqi sbit bj=P25; /ds18b20 sbit DQ=P20; / 1602 sbit lcdrs=P34; sbit lcdrw=P36; sbit lcden=P37; uint wendu=0; uint t1; bit cuowu,cuowu1; / 1602 void de

28、lay1ms(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+);

29、 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); / / ds18b20 bit init_DS18B20() uchar num; bit flag; DQ=1; for(num=0;num2;num+); /先拉高 DQ=0; for(num=0;num200;num+); / 480-960uspowerup DQ=1; for(num=0;num60us wai

30、t flag=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;num1+) DQ=0;/拉低 _nop_(); /下拉 1us _nop_(); DQ=byte for(num=0;num60us wait byte=1; DQ=1; /拉高 _nop_(); _nop_(); uchar DS18B20_RD_CHAR()/先读低位 uc

31、har 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;/拉高 _nop_(); _nop_(); for(num=0;num60us return byte; void DS18B20_WENDU() uchar temperaturel=0; uchar temperatureh=0; if(init_DS18B20()=0) DS18

32、B20_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(); temperatureh=DS18B20_RD_CHAR(); wendu=(temperatureh*256+temperaturel)*0.625; /温度比正常大 10 倍 init_DS18B20(); / void main() unsigned l

33、ong sj,sj1; uint s,s1,z; TMOD=0 x11; TRIG=0; TRIG1=0; EA=1; ET1=1; ET0=1; TH0=0; TL0=0; 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

34、)%10+48); write_data(.); write_data(wendu%10+48); write_data(0 xdf); write_data(C); write_str( S); write_data(:); 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

35、+48)2 /delay1ms(3); /bj=1; /delay1ms(3); else bj=1; TRIG=1; _nop_(); _nop_(); _nop_(); _nop_(); _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_(); _n

36、op_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TRIG1=0; while(!ECHO1); TR1=1; while(ECHO1); TR1=0; 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_da

37、ta(-); /write_data(.); write_data(c); write_data(m); write_str( R); write_data(:); write_data(-); write_data(-); write_data(-); /write_data(.); /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

38、+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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1