基于单片机的超声波测距系统设计学士学位论文(编辑修改稿)内容摘要:
、接收器与控制电路。 基本工作原理: (1)采用 IO 口 TRIG 触发测距,给至少 10us 的高电平信号。 (2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回; (3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声 波从发射到返回的时间。 测试距离 =(高电平时间 *声速 (340M/S))/2。 实 物图 : 如下 图接线 , VCC 供 5V 电源, GND 为地 线, TRIG 触发 控制 信号输入, ECHO 回响信号输出等四支线。 图 实 物 图 电气参数 : 理工大学学士论文 18 电 气 参 数 HCSR04 超 声 波 模块 工作电压 DC 5 V 工作电流 15mA 工作频率 40Hz 最远射程 4m 最近射程 2cm 测量角度 15 度 输入触发信号 10uS 的 TTL 脉冲 输出回响信号 输出 TTL 电平信号,与射程成比例 规格尺寸 45*20*15mm 超声波时序 图: 图 超 声 波 时序图 以上时序图表明你只需要提供一个 10uS 以 上 脉冲触发信号,该模块内部将 发出 8 个 40kHz 周期电平并检测回波。 一旦检测到有回波信号则输出回响信号 , 回响信号的脉冲宽度与所测的距离成正比。 由此通过发射信号到收到的回响信号时间间隔理工大学学士论文 19 可以计算得到距离。 公式: uS/58=厘米或者 uS/148=英寸;或是:距离 =高电平时间 *声 速 ( 340M/S) /2; 建议测量 周 期为 60ms 以上 , 以防止发射信号对回响信号的影响。 注 : (1)、 此模块不宜带 电 连接 , 若要带电连 接 , 则 先让模块的 GND 端先 连 接 , 否则会影 响 模块的正常工作。 (2)、 测距时 , 被测 物 体的面积不少于 平方米且平面尽量要求 平 整 , 否则影响测量的结果 实物规格 : 图 实物规格 理工大学学士论文 20 4 系统软件设计 软件模块主要有: 主程序,距离计算程序, 显示 程序 ,及终端程序。 本次设计使用 C 语言编写程序, C 语言相比汇编有许多的优势;编译器使用 Keil Version2 进行程序编译, Keil 功能强大使用方便。 主程序 本设计主程序的思想如下: (1)距离为四位显示单位为 mm; (2)超声波每隔 60ms 发送一次 ; (3)按键 S 为测量启动键 ; (4) 系统采用 STC90C52的内时钟: 12MHz; (5) 超声波发送一定时间后才开始启动检测,避免直达信号造成误判。 所以系统最小测量约为 112mm; 程序流程图如图 理工大学学士论文 21 图 主程序 流程 图 开始设置定时器工作方式及初值允许 T 0 T 1 中断 , 开启定时器 1 , 开启总中断计算距离超出测距范围检测到反射信号结束是否是否理工大学学士论文 22 系统主程序如下: void main( void ) { TMOD=0x11。 //设 T0 为方式 1, GATE=1; TH0=0。 TL0=0。 TH1=0xf8。 //2MS 定时 TL1=0x30。 ET0=1。 //允许 T0 中断 ET1=1。 //允许 T1 中断 TR1=1。 //开启定时器 1 EA=1。 //开启总中断 while(!RX)。 //当 RX 为零时等待 TR0=1。 //开启计数 while(RX)。 //当 RX 为 1 计数并等待 TR0=0。 //关闭计数 Conut()。 //计算 while(1)。 } 距离计算程序 程序流程图 ,如图 理工大学学士论文 23 超 出 检 测 距 离计 算 距 离开 始赋 予 数 组 值 为1 0赋 予 数 组 正 常值结 束是否 图 计算距离 框图 void Conut(void) { time=( TH0*256+TL0) 10。 TH0=0。 TL0=0。 S=(time*)。 //算出来是 MM if((S=1000)||flag==1) //超出测量范围显示 “” { flag=0。 disbuff[1]=10。 //“” disbuff[2]=10。 //“” disbuff[3]=10。 //“” } 理工大学学士论文 24 else { disbuff[1]=S%1000/100。 disbuff[2]=S%1000%100/10。 disbuff[3]=S%1000%10 %10。 } } 显示程序 void display(){ unsigned char i=0。 //作为查表的索引号 while(1) //不停的循环扫描 ,不扫描则不显示或显示不正确,即为动态显示 { SMG_q=0。 //选择千位数码管 P0=discode[disbuff[0]]。 //查找定义好的 数码管段值与 P0 口输出 delay()。 //加入短暂延时 P0=0XFF。 //清除数码管显示,因是共阳型,所以不是 0 SMG_q=1。 //关闭千位数码管 SMG_b=0。 //选择百位数码管 P0=discode[disbuff[1]]。 //查找定义好的数码管段值与 P0 口输出, delay()。 //加入短暂延时 P0=0XFF。 //清除数码管显示,因是共阳型,所以不是 0 SMG_b=1。 //关闭百位数码管 SMG_s=0。 //选择十位 数码管 P0=discode[disbuff[2]]。 //查找定义好的数码管段值与 P0 口输出 delay()。 //加入短暂延时 P0=0XFF。 //清除数码管显示,因是共阳型,所以不是 0 理工大学学士论文 25 SMG_s=1。 //关闭十位数码管 SMG_g=0。 //选择个位数码管 P0=discode[disbuff[3]]。 //查找定义好的数码管段值与 P0 口输出 delay()。 //加入短暂延时 P0=0XFF。 //清除数码管显示,因是共阳型,所以不是 0 SMG_g=1。 //关闭个位数码管 } } 中断 程序 本设计中需注意当距离过远或者没有返回信号时候,定时器 T1 的溢出必须处理。 /*******************定时器 1 溢出 **********************/ void timer1(void)interrupt 2 using 1 {TR1=0。 } /********************************************************/ void zd3() interrupt 3 //T1 中断用来扫描数码管和计 800MS 启动模块 { TH1=0xf8。 TL1=0x30。 display()。 timer++。 if(timer=400) { timer=0。 TX=1。 //800MS 启动一次模块 _nop_()。 _nop_()。 _nop_()。 理工大学学士论文 26 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 TX=0。 } } 理工大学学士论文 27 5 调试与下载 调试与仿真作为硬件与软件结合的重要部分 ,产品的制作首先要在相关软件中完成模拟运行,检验设计的可行性,然后再在现实中得 到实现。 本设计通过利用 Protel仿真,将编写的程序用 Keil软件编译。 硬件调试 硬件调试主要是排除电路中的明显错误,将所画的电路图制作成 PCB 板之后将所需元件按电路图连接,检查是否正确 后对硬件个部分进行检测与调试,分析各端口是否可靠,尤其是可使用万用表等器件对电路进行检查 —— 着重查看电路的开路短路,底线是否可靠。 软件调试 系统软件程序在编写好之后,可通过编译软件对程序进行编译,变成可执行的目标文件。 软件的调试顺序是子程序 —— 中断程序 —— 算法模块 —— 主程序。 所有子程序和中断程序调试完 成后,应把主程序与它们连接在一起 进行整体调试,检查各模块间的相互影响,是否会出现交叉错误。 错误出现时及时调整程序,在调试过程中采用逐次扩大的方法,每次增加一个模块进行测试,这样更利于检查问题的所在,节省时间,提高效率。 系统调试 经过软件调试,程序无误后,将生成的 .HEX 文件下载到单片机中。 第一步:将单片机开发板与电脑连接, 连接电源给系统供电,关闭电源开关,系统断电。 第二步:打开 STC_ISP 软件,并根据自己情况选择相应端口和波特率以及系统单片机型号(本系统采用 STC89C52RC)。 第三步 :点击 openfile 找到并打开 hex 代码文件。 第四步:点击 download/下载。 第五步:给单片机系统上电。 第六步:断电后连上测距模块,接通电源测试结果是否符合设计要求。 理工大学学士论文 28 调试中遇到的问题 Keil编译完软件后没有生成 .hex 文件 解决办法:选择 Keil中的 Project 选项 , 选择“ ’Option for target’target 1’” 点击 Output 图 Keil 设置图 选中“ Creat HEX Fi”点击确定,再次编译就会生成 .hex 文件。 如图 ,图 图 Keil 设置图 理工大学学士论文 29 STC_ISP 软件无法 向单片机写入程序,并显示“请给 MCU上电” 遇到这种情况 先检查是否打开了电源开关,若开关打开人不能写入程序, 一般是系统不兼容该型号的 USB 转 RS232 驱动,建议选择合适的 转换接口线 理工大学学士论文 30 设计总结 在本次设计中,我们广泛借鉴了各种设计的优点,充分考虑了整个设计中的各个环节。 但由于条件和技术所限,对于很多以上所分析的在发射和接收过程中所产生的误差没有得到有效的校正。 比如 未消除温度 、 气压造成的误差 、硬件电路误差等。 在我们为期一个学 期的设计中,我们用到了以前学到的很多知识,比如电工、单片机、和 C 语言等。 这使我们意识到,任何一件产品的产生,都不是单一知识所能实现的。 而且在电路的设计和程序的编制过程中,出现了很多意想不到的错误,让我们措手不及,有些甚至是一些非常低级的错误,但是这些错误也同样让我们获益非浅,它使我们意识到,研究是一个非常严肃的过程,来不得半点马虎。 必须有一个严谨的态度,加上 100%的努力才有可能获得成功的喜悦。 总之, 虽然 在本课题的设计过程中 遇到了一些问题 ,但是 经过老师的指点和自己的思考都一一克服,并且 学到了不少知识,从中 受益匪浅。 了解了超声波传感器的原理,学会了各种放大电路的分析、设计,也掌握了单片机的开发过程中所用到的开发方法和工具。 动手能力与自学能力得到了锻炼与提高,对待事物的态度也发生了变化。 理论总是离不开实践的 , 设计制作过程中,盲目地追寻理论知识 不足以解决所有问题,只有 研究 好 课本 ,并把理论应用于实践才能做到学以致用,才能把知识转化为生产力。 在以后的工作和学习中我将在不断学习理论知识的同时,加强自己的实践能力,以更好地掌握所学知识。 理工大学学士论文 31 致 谢 经过 两个多月 的忙碌和工作,本次毕业设计已经接近尾声,作为一个 本科生的毕业设计 ,由于经验的匮乏,难免有许多考虑不周全的地方,如果没。基于单片机的超声波测距系统设计学士学位论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。