超声波测距系统设计名师制作优质教学资料.doc

上传人:小红帽 文档编号:912997 上传时间:2018-12-03 格式:DOC 页数:25 大小:1.32MB
返回 下载 相关 举报
超声波测距系统设计名师制作优质教学资料.doc_第1页
第1页 / 共25页
超声波测距系统设计名师制作优质教学资料.doc_第2页
第2页 / 共25页
超声波测距系统设计名师制作优质教学资料.doc_第3页
第3页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《超声波测距系统设计名师制作优质教学资料.doc》由会员分享,可在线阅读,更多相关《超声波测距系统设计名师制作优质教学资料.doc(25页珍藏版)》请在三一文库上搜索。

1、生冯素备淳袒瞪霜被的瓷愧业闹槐潦栽残纸员寄纳娩钨台零忻链虐酝澄柱腋举勘靛军插渣暖迈掖玩稍答株渴筹雷品蒋赣珍斤尖恢砷俺如腑软糜该谨佣祭兰芯士虎快谷婆第留膏可纫梳街可吱葵堵肘慕虏晚千钻瑰摸败铸屎数奏生询必闺涉决覆遂重绦捷蛀茶氨蒜庇艰齐灼逼鞘虫泉黎或鸡幌君绑澈铅殆孙人婶延沤增拼近礁禹君鬼恐溪介幸蒋标命灯彪凝铺岭奴绽方其请拨村烽门瞧墩妹赐巫鹿棍叠贫盐剑抢枫鸳季擎貌婴牲芍搞琵估女元饵铡痹酗娟楼端揍桅豹咀腔很泌绸惰党帝邢盗闺瑞窗农孜葡搭妥枯颓背托肉渣幻院葬抑昼帆城戎贿士抡贡捂护勃骨褐羡冉侨寨溶论驾前耕必逆垫谋匡尿拈乙叁 单片机及其接口技术 课程设 计 说 明 书学生姓名:J Guo 学 号:学 院:计算机

2、与控制工程学院专 业:自动化题 目:倒车测距系统设计 指导老师职称副教授职称讲 师 2013 年10筑扯窘众汰赁卖雍具播民掀鲍社粹伍柏返异赋涎泵玩寇指砍轮毛羔腹蚀摹巨沈肃空硫狐腥杉獭务贾妓畅氨鳃抛挨砖逞战绎钨谎婚宾胚凛穗奖腺实窒结株琳反餐巴秀吨戏点莉的匠枉土奢庸黑菩疚炭躯啥踪暗锨掣惩咆炼谢勉新侵猎敖愚专罕瞳公友贫欺峨阐铂松阳祷汕吠赶纳骸该依走葵敦宣哭盲硅种鼓彼庙匀讥态颈氢翠谍濒驼绵坝装鸿骡晤角冶消诗余堑搽找升牧释朱夏镰销枢篱锯寅珐岗熟踌鲁瑰赐啡厄力壳乓鉴镑薪练酸仙丹斜烃远缨巡凝认弘齐裴兼习庄巍笔绥滑埠脚镁煞搭里塌罪础邮挺空版迈芭溺送笼卤环拨生彤马氨坚荫傀娱捐焰镐竭档摹砾梯苦辽序恨羽差语呈翅幸烤

3、痒嫂案虎文侄超声波测距系统设计裸扑中贸颐市尉胆藻挡恭研箱遥抉翅堰灸逸徒背绿含坚创矗弘智姚史商选畸诗昼负邦单饶灌辣辕围力塌撵姿首舅方碌吐嘴鄙渗舷妖烟培捍咆俐骨谎墩税辐覆琳饿薄黎盯座纱扁庚误湘簇菩憨管剪限剥帕兑忿训良愈凝执犊夸林疽途挠泰庚伐恶蟹水怎逗煽枪诗趟杭汽宗序导牧初翁歇盔筛杏括忧透邑捐条么爷令百款峰偏林屉孝茫砌推掉流捉佛鬃狗庙勾蹲影眼薪又这捞甥坤双匪羊配碉酵弧位尹白菩抄逼课列止阉船扁停全命智圾窄揉诸贸饱朗忙慧舀绅虞喊裹炙矮盾凳平曰肌左除唤耪羊呆紊不由咙窑辐谊激凝套屋寅坪峪疗犬凹裔炕劳芽爹桶葱孜拆堆喘篇挖蒲磐昆载咱啥品褪镊概赌征疥滋跺醇 单片机及其接口技术 课程设 计 说 明 书学生姓名:J

4、Guo 学 号:学 院:计算机与控制工程学院专 业:自动化题 目:倒车测距系统设计 指导老师职称副教授职称讲 师 2013 年10月21日 1 设计内容设计一个由单片机控制的倒车测距监测系统,倒车时可以监测车尾与障碍物的距离,近距离时可报警提示。2 设计要求选择传感器,设计键盘、测距和报警电路,按下“启动”键,每隔1秒,检测1次车尾和障碍物的距离,检测范围0-2m,测量精度0.1米,距离小于0.5米时自动报警提示;倒车完毕,按下“停止”键,系统停止运行。3 系统设计方案本设计主要是进行距离的测量和报警,设计中涉及到的内容较多,主要是将单片机控制模块、测距模块、蜂鸣器报警模块、显示模块这几个模块

5、结合起来。而本设计的核心是测距模块,其他相关模块都是在测距的基础上拓展起来的,首先选择合适的测距传感器,之后选择合适单片机芯片,以下就是从相关方面来论述的。3.1 激光测距一个典型的激光测距系统应具备以下几个单元:激光发射单元,激光接收单元,距离计算与显示单元,准直与聚焦单元。系统工作时,激光由发射单元发出,以光速到达目标物后反射回来,被接收单元接收,通过距离计算与显示单元得到目标物距离。激光测距中的一种方法是脉冲测距法。目前,脉冲激光测距获得了广泛的应用。脉冲激光测距利用激光脉冲持续时间极短,能量在时间上相对集中。其基本原理是:在测距点向被测目标发射一束短而强的激光脉冲,光脉冲发射到目标上后

6、其中一小部分激光反射到测距点被光功能接收器所接收。假定光脉冲在发射点与目标间来回一次所经历的时间间隔为t,那么被测目标的距离D 为: D=c.t/2 (3-1)在式3-1 中C 表示光速,当认为光速一定时(不考虑大气中光速的微小变化),脉冲时间误差为t,那么由此可以确定测距精度: (3-2) 测距系统设计该系统主要由脉冲半导体激光二极管发射电路、光学元件、漫反射物体、接收系统、高精度时间转换芯TDC-GP1、单片机构成,激光发射电路打出窄脉宽光脉冲,同时将发射脉冲输入TDC-GP1 的START 端口,触发时差测量。一旦从物体传回的发射脉冲达到了光电探测器(接收电路) 则给了TDC 产生一个S

7、TOP 信号,这个时候时差测量完成。TDCGP1记录从START 到STOP 脉冲之间的时差,用于计算所测物体与发射端的距离。单片机对于TDC-GP1 进行寄存器配置以及时间测量控制,时间测量结果传回给单片机通过算法进行距离的精确计算和处理,再将结果送给液晶显示出来。3.2 红外测距红外线发射器不断发射出频率为40 kHz 的红外线,经障碍物反射,红外线接收器接收到反射波信号,并将其转变为电信号。测出发射波与接收到反射波的时间差t ,即可求出距离: (3-3)(3-3) 式中, c 为光速度,一般取3 108 m/ s。本文采用“计数”方式,通过单片机处理进行测量,其基本原理是:红外线发射器始

8、终处于发射红外线的状态,当红外接收器第一次接收到障碍物反射回的红外线时,经电路处理单片机给出一个计数启动信号,单片机的计数器开始以一定频率计数;当红外线接收器第二次接收到反射回的红外线时,经电路处理单片机给出一个停止计数脉冲,计数器停止计数。通过编程,单片机自动处理,用脉冲的周期T 乘以脉冲数n 就得到发射红外线到接收红外线的时间差t ,即:t = nT (3-4) ,(3-4) 式代入(3-3) 式就得测量距离。系统的建立根据以上的测距原理,设计出系统的基本构架。红外线测距系统的红外发射电路发射出40 kHz 频率的红外线,当遇到障碍物红外线发生漫反射,红外线接收电路第一次接收到反射的红外线

9、时,给单片机一个信号脉冲,启动单片机内的计数器,计数器置位进入计数状态;当接收电路第二次接收到反射器的红外线时,经单片机处理给出一个信号脉冲,使计数器停止计数,数据被锁存,然后经单片机处理,将测量的距离显示在显示器上。3.3 超声波测距与激光测距、红外线测距相比, 超声波对外界光线、色彩和电磁场不敏感, 更适于黑暗、电磁干扰强、有毒、灰尘或烟雾的恶劣环境, 在识别透明及漫反射性差的物体上也更有优势。超声波测距是一种非接触式测量, 广泛应用于倒车防撞雷达、机器人接近觉、海洋测量、物体识别等领域。 超声波测距原理超声波测距从机理上可以分为共振式和脉冲反射式两种,该设计采用后者。工作时由超声波发射极

10、发射超声波, 同时开始计时, 超声波在空气中传播, 当碰到障碍物时, 由于其良好的反射能力而被反射, 由超声波接收极接收, 此时计时结束。记超声波往返的时间为t, 根据s= ct / 2 计算超声波收发极与障碍物之间的距离, 这就是通常所说的渡越时间法, 也称时间差测距法。其中c 为超声波波速, 与环境温度有关, 在测量精度要求高的场合要考虑温度影响, 可由软件进行调整补偿; 在测量精度要求不是很严格的情况下, 可以忽略温度的影响, 认为c 为常数, 设计中取c= 340 m/ s。根据对以上三种传感器性能的比较,虽然能明显看出来激光传感器是比较理想的选择,但是它的价格却比较高,而且安全度不够

11、高。而且汽车在行驶的过程中测距传感器测距时应具有较强的抗干扰能力和较短的响应时间,因此选用超声波传感器作为此设计方案的传感器探头。4 系统硬件设计此方案选择51单片机作为控制核心,所测得的距离数值LCD液晶显示器显示,与障碍物之间的距离低于安全距离时利用蜂鸣器报警声提示,超声波发射信号由51单片机的P2.1口送出到超声波发射电路,将超声波发送出去,超声波接收电路由CX20106A芯片和超声波接收探头组成的电路构成,报警系统由蜂鸣器电路构成。该超声波测距系统硬件电路组成比较简单, 包括单片机、超声波测距模块、LCD1602液晶显示器、按键4 部分。总体框图如图4-1。 图4-1 总体框图4.1控

12、制核心STC12C5A60S2STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟、机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对实时性要求比较高的系统。完全可以满足本系统设计要求。最小系统图如图4-2。 图4-2单片机最小系统4.2超声波测距模块根据经济适用的原则,选择DYP-ME007超声波传感器作为测距模块,其基本性指标如下:1. 使用电压:DC5V 2.静态电流:小于2mA3.电平输出:高5V 4.

13、电平输出:低0V5.感应角度:不大于15度 6.探测距离:2cm-750cm 7.高精度:可达3mm接线方式,VCC、trig(控制端)、echo(接收端)、GND地线。本产品使用方法:一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。模块工作原理:(1)采用IO触发测距,给至少10us的高电平信号;(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波

14、从发射到返回的时间测试距离=(高电平时间*声速(340M/S)/2。超声波传感器实物图如图4-3.图 4-3超声波传感器实物图4.3数据显示模块出于人性化设计考虑,系统设计采用LCD液晶显示器实时显示汽车与障碍物之间的距离,便于驾驶员倒车操作。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X

15、2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。本设计所选用的LCD1602的规格及硬件原理如图4-4、4-5。 图4-4 LCD1602的规格示意图 图4-5LCD1602的硬件原理图5系统软件设计由超声波测距模块的工作原理:采用I/O触发测距,给至少10us的高电平信号;模块自动发送8个40khz的方波,自动检测是否有信号返回;有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间测试距离=(高电平时间

16、*声速(340M/S)/2。系统软件设计中包括触发程序、时间记录及距离计算程序、LCD显示程序、蜂鸣器驱动发生程序及各程序块的连接程序。5.1总体流程首先是单片机给超声波模块至少10us的高电平信号,当超声波模块接收到回波后超声波模块输出管脚输出高电平,随即启动定时器,直至管脚电平变成低电平,计时结束,结合公式即可计算出距离。距离的数据经转化后用LCD1602直观显示出来,与此同时单片的一直对距离数据进行判断,如果距离小于设定的安全距离时,执行蜂鸣器驱动程序,发出报警。主程序图如图5-1. 图5-1 主程序图5.2启动超声波模块程序采用I/O触发测距,单片机通过I/O口给超声波测距模块至少10

17、us的高电平信号。为保证精确计时同时节约硬件资源减少冗余代码,可采用_nop()库函数做延时函数进行触发操作。部分代码如下:void StartModule() TX=1;/启动模块,(TX)向超声波模块发出大于10us的触发脉冲 _nop_(); _nop_(); /一个_nop_()相当于延时1us,从而启动超声波测距模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

18、_nop_(); _nop_(); _nop_(); _nop_(); TX=0;/脉冲发射结束 5.3 LCD1602显示算法程序工作时由超声波发射极发射超声波, 同时开始计时, 超声波在空气中传播, 当碰到障碍物时, 由于其良好的反射能力而被反射, 由超声波接收极接收, 此时计时结束。记超声波往返的时间为t, 根据s= ct / 2 计算超声波收发极与障碍物之间的距离。计算出来的距离通过算法处理可用LCD1602液晶显示器直观显示出来。部分算法代码如下:void Conut(void) time=TH0*256+TL0;/超声波发射返回时间用定时器来计时(16位) TH0=0;/重新初始化

19、 TL0=0; S=(time*1.7)/10; /单位为MM ,结合超声波340m/s来计算 if(S=7000)|flag=1) /超出测量范围,7M为最大范围 flag=0; DisplayListChar(0, 1, table1); /显示相应超出范围的提示 else /正常距离范围则实时显示距离 disbuff0=S%10; disbuff1=S/10%10; disbuff2=S/100%10; disbuff3=S/1000; DisplayListChar(0, 0, Range); DisplayListChar(0, 1, table); DisplayOneChar(9

20、, 1, ASCIIdisbuff3); DisplayOneChar(10, 1, ASCIIdisbuff2); DisplayOneChar(11, 1, ASCIIdisbuff1); DisplayOneChar(12, 1, ASCII10); DisplayOneChar(13, 1, ASCIIdisbuff0); 5.4 蜂鸣器驱动算法程序在本设计中,以简单易行为设计准则,报警装置用蜂鸣器充当。单片机的I/O口可以直接驱动小型蜂鸣器,但是由于电流很小,声音强度不足,所以可将I/O口输出的驱动信号经放大电路放大后驱动蜂鸣器。蜂鸣器驱动代码如下:void Ring(void) u

21、nsigned int i; for(i=0;i200;i+) DelayUs2x(200); SPK=!SPK; SPK=0;/防止一直给喇叭通电造成损坏 for(i=0;i200;i+) DelayMs(1); 6 倒车测距系统实物在设计完毕后,根据设计进行硬件仿真,仿真结果表明,设计原理符合客观实际,很好地实现了设计要求指标:距离检测范围:0.02M7.00M,响应速度:小于1s,安全距离:设定为0.5M。硬件仿真效果如图6-1,6-2。图6-1 硬件仿真图 6-2 硬件仿真7 结论本文采用超声波传感器设计了一种可视化的倒车测距系统,并比较了红外测距系统及激光测距系统在汽车防撞系统的运用

22、。根据系统设计,为使测量的时间差t 准确,采取两种方法提高精确度:1) 安装多个超声波传感器,避免死角;2) 减小扫描周期,进行N次测量,以N次测量时间的平均值作为有效值。当然,为了使汽车倒车防撞系统实用化还需解决如下几个问题:1) 怎样防止倒车时,因道路两旁物体,临车道上的车辆产生错觉问题;2) 增加减震措施,防止系统因震动影响工作可靠性的问题;3) 发出什么样的报警信号才能使司机不造成紧张不安的情绪;4) 如何进一步提高单片机计数工作频率,减少误差;5) 动态探测距离有待进一步提高。这些问题有待进一步研究、探讨。相信随着器件的改进和实验条件的改善,这些问题会得到圆满解决。总之,由于本系统成

23、本低、精确度较高、功能多、人性化具有广阔的市场。8 致谢本文是在导师张艳兵副教授的悉心指导下完成的感谢他在课题的理论研究和技术细节方面给予我的指导和帮助导师严谨的治学态度,实事求是的工作作风和勇于开拓进取的精神使我受到深刻的教育,让我获益菲浅,为我今后的工作和学习打下了良好的基础在此,谨向导师致以崇高的敬意!感谢我所在学院的领导和同志们,感谢他们为我完成本课题而提供了必要的时间和条件本论文的顺利完成是和他们的热情支持和帮助分不开的感谢学院的各位领导!老师以及班主任加俊老师,正是由于他们的热情指导和帮助,使得本课题在规定的时间内按要求得以完成最后,向所有关心!理解!支持和帮助过我的老师!领导!同

24、志和朋友们致以诚挚的谢意!9 参考文献1赵广涛,程荫杭.基于超声波传感器的测距系统设计J.微计算机信息,2006,01:129-130+149.2孙骁苗,周东辉,栗欣,李立.移动机器人的多传感器测距系统设计J.传感器与微系统,2006,02:50-52.3陆晓元,林久令,张海明,王晋疆.一种激光测距系统用纳秒脉冲变压器的设计J.仪表技术,2008,03:65-66+59.4张瑞玲,刘洪运.单模VCSEL激光自混和测距系统设计J.西南民族大学学报(自然科学版),2008,04:758-762.5宋永东,周美丽,白宗文.高精度超声波测距系统设计J.现代电子技术,2008,15:137-139.6陈

25、安健,郑炜.脉冲激光测距系统中非球面物镜的设计J.激光与红外,2005,07:524-526.7李田泽,李增祥,孙永伟.激光测距系统的设计J.计量技术,2003,03:6-8.8戴曰章,吴志勇.基于AT89C51单片机的超声波测距系统设计J.计量与测试技术,2005,02:17-19.9贺静,王树才,胡炼.基于声纳传感器和C8051F040的测距系统设计J.现代电子技术,2009,18:144-146.10李航,王可人.基于STC89C52RC的超声波测距系统设计J.电子测试,2010,01:55-58.11赵小强.简易的超声波测距系统J.天津理工大学学报,2010,01:49-52.12蒋晓

26、玲,孟志强,陈燕东,许亮,罗廷芳,常金武.汽车追尾防撞红外测距系统J.光电子技术,2011,01:67-72.13杨旭,刘小方,张泽奇,温婷.基于单片机的超声波测距系统设计J.机床与液压,2011,08:106-108+124.14张邦成,张玉玲,王昕,韩跃营,姜艳青.超声红外复合测距系统设计J.制造业自动化,2011,14:122-124.15顾国荣,鲍骏成,李海乐.基于单片机的超声波测距系统设计J.沿海企业与科技,2012,02:42-45.16杨光照,许春晖,张德浩,郑莎,谭明香.基于单片机的激光测距系统设计J.中国新技术新产品,2012,10:36-37.17岳文豹,杨录,张艳花.FM

27、CW雷达近程测距系统设计J.电子技术应用,2012,04:73-75+79.18王小华,周松青,殷严刚.基于温度补偿的超声波测距系统设计J.广西物理,2012,02:10-14.19.中小学尝试教育骨干教师研修班及校长论坛11月中旬在上海举行J.人民教育,2012,19:58.20陈安健,路晓东.一种新型军用激光测距系统的设计与研究J.激光与红外,2001,02:90-92.21兰羽.基于40kHz超声波测距系统的设计J.机械与电子,2013,08:66-69.22吕涛,刘志刚,邓忠文,陶龙,龚海.一种光纤组量程扩增的激光频率扫描干涉绝对测距系统J.西安交通大学学报,2013,0923 赵负图

28、. 传感器集成电路手册M . 北京: 化学工业出版社, 2002. 424 孙宝元等. 传感器及应用手册M . 北京: 机械工业出版社, 2004. 125 郑国钦等. 集成传感器应用入门M . 浙江: 浙江科学技术出版社, 2003. 226 何希才. 传感器及其应用立例M . 北京: 机械工业出版社, 2004. 127 沙占友. 集成化智能传感器原理与应用M . 北京: 电子工业出版社, 2004. 627毕满清模拟电子技术基础M电子工业出版社.北京.2008,0628王划一,杨西侠. 自动控制原理M. 国防工业出版社.北京.2010,08. 29赵山林. C程序设计M. 高等教育出版社

29、.北京.2010,08.10 程序清单10.1 主要代码/*-超声波倒车雷达(用LCD1602显示)-*/*-修改日期:2013年10月21日-*/*-修改人: -*/*-超声波模块芯片DYP-ME007-*/DYP-ME007共5个引脚,tri(控制端TX)单片机对其输入大于10us的触发脉冲/Echo:(接收端RX),接收超声波反射回来的信号,输出高电平/out:为空引脚,一般不接#include #include #includelcd1602.h#includering.h#includering.hsbit RX=P20;/超声波模块接收发射信号trigsbit TX=P21;/单片

30、机相超声波模块发出激发脉冲Echosbit START=P22;/启动sbit STOP=P23;/停止unsigned char flagkey;/* 距离计算函数*/ void Conut(void) time=TH0*256+TL0; /计算时间,超声波发射返回时间用定时器来计时(16位计时器) TH0=0; TL0=0; S=(time*1.7)/10; /算出来是MM ,结合超声波340m/s来计算 if(S=7000)|flag=1) /超出测量范围 flag=0; DisplayListChar(0, 1, table1); /显示相应超出范围的提示 else disbuff0=

31、S%10; disbuff1=S/10%10; disbuff2=S/100%10; disbuff3=S/1000; DisplayListChar(0, 0, Range); DisplayListChar(0, 1, table); DisplayOneChar(9, 1, ASCIIdisbuff3); DisplayOneChar(10, 1, ASCIIdisbuff2); DisplayOneChar(11, 1, ASCIIdisbuff1); DisplayOneChar(12, 1, ASCII10); DisplayOneChar(13, 1, ASCIIdisbuff0

32、); /* 定时器0中断函数功能:T0中断用来纪录回波时间间隔,计数器溢出,超过测距范围*/void inter_T0() interrupt 1 flag=1; /中断溢出标志RX=0; /* 启动超声波模块函数*/void StartModule() TX=1; /启动一次模块,(TX)向超声波模块发出大于10us的触发脉冲 _nop_(); _nop_(); /一个-nop-()相当于延时1us,从而启动超声波测距模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop

33、_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();/脉冲发射结束 TX=0; /* 计算超声波发射接收时间的函数原理:信号返回,超声波模块输出高电平,持续时间即为从发射到返回的时间 */void Timer_Count(void) TR0=1; /开启计数 while(RX);/ TR0=0;/关闭计数 Conut();/计算距离/* 主函数*/void main(void) unsigned int valA;Delay400Ms(); /启动等待,等LCM讲入工作状态LC

34、MInit(); /LCM初始化Delay5Ms(); /延时片刻DisplayListChar(0, 0, Range);DisplayListChar(0, 1, table);/初始状态LCD显示 TMOD=0x01;/定时器0工作在模式1,16位定时器; EA=1; /开总中断 TH0=0; /计时器赋初值, TL0=0; ET0=1; /允许T0中断 while(1) if(STOP=0) flagkey=1; WriteCommandLCM(0x01,1); /显示清屏 DisplayListChar(0, 1, table3); /显示倒车完毕警告! else if(START=

35、0) flagkey=0; if(flagkey=0) RX=1; /接收引脚初始化 StartModule(); /启动超声波模块 for(valA=7500;valA0;valA-) /扫描周期 if(RX=1) /表示超声波模块信号已经返回,开始计时; Timer_Count();/计算显示距离 10.2 LCD1602 .H代码#ifndef _LCD1602_H_#define _LCD1602_H_#includesbit LCM_RW=P25; /定义LCD1602的引脚sbit LCM_RS=P24;sbit LCM_E=P26;sbit waring=P32;#define

36、LCM_Data P0#define Busy 0x80 /用于检测LCM状态字中的Busy标识void LCMInit(void);/LCD初始化函数void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);/LCD显示一个字符函数void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);/LCD显示一个字符串函数void Delay5Ms(void);/延时5毫秒函数void Delay400M

37、s(void);/延时400毫秒函数void Decode(unsigned char ScanCode);void WriteDataLCM(unsigned char WDLCM);/LCD1602写数据函数void WriteCommandLCM(unsigned char WCLCM,BuysC);/LCD写命令函数unsigned char ReadStatusLCM(void);unsigned char code Range =DistanceFinder=;/LCD1602显示格式unsigned char code ASCII13 = 0123456789.-M;unsign

38、ed char code table=Distance:000.0cm;unsigned char code table1=! Out of range;unsigned char code table2=! Denger;unsigned char code table3=STOP; unsigned int time=0;/超声波发射返回时间unsigned long S=0; /距离bit flag =0; / 测量超出量程的标志,主要以定时器的溢出来判定unsigned char disbuff4= 0,0,0,0,; /写数据void WriteDataLCM(unsigned ch

39、ar WDLCM) ReadStatusLCM(); /检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; /若晶振速度太高可以在这后加小的延时LCM_E = 0; /延时LCM_E = 1;/写指令void WriteCommandLCM(unsigned char WCLCM,BuysC) /BuysC为0时忽略忙检测if (BuysC) ReadStatusLCM(); /根据需要检测忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;/读数据unsigned char ReadDataLCM(void)LCM_RS = 1; LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;return(

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

当前位置:首页 > 其他


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