《基于单片机智能小车毕业设计(论文).doc》由会员分享,可在线阅读,更多相关《基于单片机智能小车毕业设计(论文).doc(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、毕 业 设 计(论 文)设计(论文)题目: 基于单片机的智能小车 学 院 名 称: 电子与信息工程学院 专 业: 电子与信息工程 班 级: 电信092班 姓 名: 学 号 xxxxxxxxxx 指 导 教 师: xxx 职 称 教授 定稿日期:2013 年 5 月 10 日I基于单片机的智能小车 摘 要 智能车辆是目前世界车辆研究领域的热点和汽车工业新的增长点。未来的车辆也一定是智能化的车辆。所以,智能化的车辆是未来人们生活重要的载体。因此有必要对智能车辆进行研究。研制一种智能,高效的智能小车控制系统具有重要的实际意义和科学理论价值。本文设计了一个能自动循迹的智能小车控制系统。以STC89C5
2、2单片机为控制核心,利用反射式光电传感器检测黑线实现小车循迹,利用超声波传感器检测道路上的障碍并提示,利用LCD1602显示小车的速度和路程。能实现小车自动根据地面黑线前进倒退、转向行驶,超声波测距提示障碍物,LCD1602实时显示小车的速度和行驶的路程,具有高度的智能化,达到设计目标。关键词:智能小车,STC89C52单片机,超声波传感器,LCD1602THE SMART CAR BASED ON MICROCONTROLLER ABSTRACTIntelligent vehicles are the hot spots of the worlds vehicle research area
3、s and the automotive industry a new growth point. The vehicles of the future must be intelligent vehicles. So, intelligent vehicles is an important carrier of the future of peoples lives.Therefore, the study of intelligent vehicles are necessary. Therefore, the development of a smart, intelligent ca
4、r control system with high efficiency is of practical significance and scientific important theoretical value. This paper introduces the design of a smart car control system that can automatic tracking.Based on signle-chip microcomputer STC89C52 To achieve track-finding using photoelectric sensor to
5、 detect black line,The use of ultrasonic sensors to detect obstacles on the road and prompt,Using the LCD1602 to display speed and distance. The car can realize automatic based on the black line forward regression. Steering,Ultrasonic ranging, prompting obstacles, LCD1602 real-time display of the sp
6、eed of the car and drive away, with a high degree of intelligence, achieve the design goal.Key Words: Smart car, STC89C52 MCU, ultrasonic sensor,LCD1602目录摘 要IABSTRACTII目录III第1章绪论11.1智能小车的意义和作用11.2智能小车的现状1第2章方案设计与论证22.1主控系统22.2电源模块22.3电机驱动模块32.3.1 电机模块选择与论证32.3.2 电机驱动模块选泽与论证32.4循迹模块42.5测速模块52.6显示模块62
7、.7壁障模块7第3章硬件设计83.1总体设计83.2驱动电路83.3信号检测电路113.4测速电路123.5显示电路133.6主控电路13第4章软件设计174.1主程序模块设计174.1.1 主程序流程图174.1.2 主程序的设计174.2电机驱动程序的设计194.2.1 电机驱动程序流程图194.2.2 电机驱动程序的设计. 204.3循迹模块程序的设计224.3.1 循迹模块流程图224.3.2 循迹模块程序的设计224.4测距壁障模块程序的设计244.4.1 超声波测距模块流程图244.4.2 超声波测距模块程序的设计254.5显示模块程序的设计264.5.1 显示模块流程图264.5
8、.2 显示模块程序的设计26第5章系统软硬件的调试295.1软件程序的调试295.2硬件电路的焊接与调试30参考文献31附录1 原理图32附录2 源程序33附录3实物图43致 谢.44作品(软件)使用说明书.45IV 第1章 绪论1.1 智能小车的意义和作用智能的出现,为我们的生活和生产带来了很大的便利,同时也是以后的发展方向,智能就是可以在一个特定的环境中按照我们前面设定好的模式去自动的运作,它并不需要我们去人为的管理,就可以达到我们前面设定的目标,它的应用领域很广,如可以应用于工业控制、科学勘探、智能家居等领域。而智能小车就是智能的一个简单的应用,智能小车就是智能化玩具中的一种,由于这类智
9、能玩具具有较好的交互性,可控性,能够按照人们设定的模式去自动运作也深受人们的喜欢。另外,智能小车还可以应用于危险搜索、机器人等许多方面,尤其在机器人方面具有很好的发展前景。因此,智能化小车的研究不仅具有很大的现实意义,还具有极为广阔的应用前景和市场价值。1.2 智能小车的现状智能小车的研究、开发和应用涉及传感技术、电气技术、电气控制技术、智能控制等学科,智能控制技术是一门跨科学的综合性技术,当代研究十分活跃,应用日益广泛的领域1。众所周知机器人技术的发展是一个国家高科技水平和工业自动化程度的重要标志和体现。因此目前世界各国都在开展对机器人技术的研究。机器人由于有很高的灵活性、可以帮助人们提高生
10、产率、改进产品质量等优点,在世界各地的生产生活领域得到了广泛的应用2。智能小车正是模仿机器人的一种尝试。它是一种以汽车电子为背景,涵盖多学科的科技创新性设计,一般主要由路径识别、速度采集、角度控制以及车速控制等模块组成。这种智能小车能够自动搜寻前进路线,还能爬坡,感知前方的障碍物,并自动寻找前进方向,避开障碍物。另外如果加入相关声光讯号后,更能体现出智能化和人性化的一面。45第2章 方案设计与论证2.1 主控系统由于单片机具有价格低廉,资源丰富、有较为强大的控制功能,故本次设计采用STC89C52单片机作为整个系统的核心,用其控制行进中的小车以实现其既定的性能指标。STC89C52是一个超低功
11、耗的增强型51单片机,和标准51系列单片机相比较它的运算速度更快,有超强的抗干扰能力,同时还支持ISP在线编程,片上集成了512字节的随机存取数据存储器(RAM),并且片内含8k字节空间的可以反复擦写1000次的Flash只读存储器, 32个I/O口,以及3个16位可编程定时计数器。其指令系统和传统的8051系列单片机指令系统完全兼容,降低了系统软件设计的难度,电路设计简单、价格低廉,在后来的实验中我们发现,STC 89C52精确度和运算速度也都完全符合我们系统的要求。2.2 电源模块由于本系统需要给整个智能小车系统供电,考虑了以下几种方案:方案一:采用4节1.2V可充电电池组。在电充满时4节
12、电池电压可以达到5v且可充电电池组具有较强的电流驱动能力及稳定的电压输出性能,但是直流电机工作时会对LCD1602显示造成干扰,使其显示不稳定。故放弃此方案。方案二:使用双电源供电,将9v可充电方块电池电压降压、稳压到5V后给单片机系统和LCD1602及其它芯片供电。另外采用4节1.2V可充电电池组为直流电机供电,经测试在用此种供电方式下,单片机和传感器工作稳定,直流电机工作良好,LCD显示也很稳定,小车也能长时间工作。综上考虑,我们选择了方案二来完成智能小车整个系统的供电。2.3 电机驱动模块2.3.1 电机模块选择与论证方案一:使用步进电机作为智能小车系统的驱动电机,因为步进电机的转动角度
13、可以精确的定位,这样就可以比较精确的定位小车的前进距离和位置。但是由于步进电机的输出力矩偏低,并且会随着电机转速的升高而下降,在达到较高的转速时其输出的力矩会急剧下降,因此不适于小车等对速度有着一定要求的系统。经过综合分析比较决定放弃此方案。方案二:使用直流减速电机作为智能小车系统的驱动电机。直流减速电机的转动力矩比较大,而且体积较小,重量也很轻,使用方便。另外小车电机内部还装有减速齿轮组,所以并不需要去考虑调速的功能,可以很方便的通过单片机来控制直流减速电机的正传、反转、停止操作。综合以上考虑选择方案二的直流减速电机作为整个智能小车的驱动电机。2.3.2 电机驱动模块选择与论证方案一:采用继
14、电器对电动机进行控制,通过切换电动机的开关来调整小车的速度。这个方案的优点是电路相对比较简单,但是它的缺点也比较多,如:继电器的响应时间偏慢, 寿命较短,容易损坏,可靠性也不是很高。故决定放弃此方案。 方案二:采用专用的电机驱动芯片L298N来控制直流减速电机, L298N芯片(如图2-3)是一个具有高电压大电流的全桥驱动芯片,一片L298N芯片可以分别的控制两个直流减速电机,在646V的电压下,可以提供2A的额定电流,并且具有过热自动关断和电流反馈检测功能,安全可靠。该芯片是利用TTL电平进行控制的。通过单片机的IO口输出高低电平来改变芯片控制端的输入电平,即可以实现对电机进行正转、反转和停
15、止操作。另外为了保证L298N的正常工作,我还安装了8个续流二极管1N4007。用该芯片作为电机驱动,驱动能力大、操作方便、稳定性好、性能优良。综合以上分析与论证我们选择方案二的驱动芯片L298N作为整个智能小车系统的电机驱动电路。图2-3 L298N2.4 循迹模块方案一:用光敏电阻来探测。光敏电阻的阻值会随着周围环境光线的变化而变化6。因此当光敏电阻在黑色轨迹的上方和白色轨迹的上方时,阻值会发生较为明显的变化。将阻值的变化值输入到电压比较器就可以输出高低电平。单片机就可以根据反馈来的不同的电平信号,发出相应的控制操作命令来控制小车的左转,右转,前进或者停止。但实际效果并不理想,误测几率偏大
16、、容易受外界的光线环境的影响,不能够稳定的工作。因此考虑其它更加稳定的方案。方案二:采用红外反射式光电管完成系统循迹3。TCRT5000(如图2-4)是一种一体化反射型光电探测器,传感器采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。它是利用了光的反射原理,当光线照射在白纸上,反射量会比较大,反之,当光照射在黑色物体上,反射回去的量比较少,因为黑色会吸收光,这样就可以判断黑胶带带轨道的走向。采用红外线发射,外面可见光对接收信号的影响较小,利用红外对管对黑线边界进行检测,再用LM393对检测信号进行比较,取反,送
17、单片机进行处理。此光电对管电路简单,工作性能稳定。经测试方案二不论是在黑暗或者是强光照射下,智能小车系统均可以很稳定的工作,对外界环境的适应能力比较强。因此我们选择方案二。图2-4 TCRT50002.5 测速模块方案一:采用霍尔传感器检测轮子上的小磁铁从而给单片机中断脉冲,通过单位时间内对脉冲的计数通过公式就可以算出实时的车速,达到测量速度的作用。霍尔元件具有体积小,动态特性好,频率响应宽度大,对外围电路要求简单,使用寿命长,安装方便,价格低廉等特点。但是需要和磁钢配对使用比较麻烦。方案二:采用光电码盘,即透射式光电传感器(凹槽型如图2-5)进行测速。槽型光耦是由红外发光管和光敏三极管构成的
18、,工作时红外发光管发出红外光线透过光耦的槽投射到光敏三极管上,光敏三极管导通,集电极输出低电平。当红外光线被检测物遮断时,光敏三极管截止,集电极输出高电平。遮挡一次槽型光耦输出一个脉冲,因此脉冲的个数就是被检测物的数量。车轮转动时带动码盘转动,单片机内部计时可测出给定的时间内通过的脉冲数,从而测出小车的实时速度。使用方便,抗干扰性较强。通过比较方案一和方案二的优缺点,综合多方面因素决定选用方案二。图2-5 槽型光电传感器2.6 显示模块方案一:采用LED数码管显示。数码管使用简单,价格低廉,但一个数码管只能显示一个数字,要显示多位数据时要使用多个数码管,这就增加了硬件电路的复杂度和额外功耗,而
19、且LED数码管也无法显示字符。由于我们计划要显示小车运行的速度和路程,LED数码管没办法显示这么多的内容,因此考虑其它的方案。方案二:采用LCD1602液晶(如图2-6)显示。LCD1602液晶具有功耗低,显示内容丰富清晰,显示信息量大,显示速度较快,界面友好,使用简单等特点而得到了广泛的应用。并且外围电路也比较简单,因此我们选择此方案。通过以上方案论述我们选择方案二,显示小车运行速度和路程的任务。图2-6 LCD1602液晶显示器2.7 壁障模块方案一:用漫反射式光电开关进行避障。光电开关的工作原理是根据光线发射头发出的光束,被物体反射,其接收电路据此做出判断反应,物体对红外光由同步回路选通
20、而检测物体的有无。当有光线反射回来时,输出低电平。当没有光线反射回来时,输出高电平。操作简单但是测量的距离不远。方案二:用超声波传感器进行测距避障。超声波传感器的原理是:超声波由压电陶瓷超声波传感器发出后,遇到障碍物便反射回来,然后再被超声波传感器接收8。超声波传感器在避障的设计中被广泛应用。为了使用方便,便于操作和调试,采用集成超声波测距模块HC-SR04(如图2-7)。综合考虑本系统只需要检测障碍物,没有十分复杂的环境。为了使用的方便,便于操作和调试,最终选择了方案二。 图2-7 HC-SR04超声波测距模块第3章 硬件设计3.1 总体设计智能小车采用前轮驱动,前轮左右两边各用一个电机驱动
21、,通过电机驱动芯片L298N来控制前面两个轮子的转动与停止从而达到控制转向的目的,后轮是万向轮,起支撑转向作用。将4个红外光电传感器装在车体底盘的前端,小车根据传感器检测的情况来循迹前进。小车速度的检测通过槽型光电传感器,将码盘装在电机的轴上,码盘跟随电机一起转动,将检测到的数据传回单片机进行处理。小车的避障用超声波避障模块HC-SR04,将其置于车头,检测到障碍物时,小车做出相应的反应。总体设计框图如图3-1。图3-1 总体设计框图3.2 驱动电路电机驱动芯片采用L298N,是一款承受高压大电流的全桥型直流/步进电压驱动器,如下图3-2。图3-2电机控制芯片L298N的引脚排列其中L298N
22、各引脚的编号与功能和内部逻辑如下表3-1和图3-3。表3-1 L298N引脚编号与功能引脚编号名称功能1电流传感器A在该引脚和地之间接小阻值电阻可用来检测电流2输出引脚1内置驱动器A的输出端1,接至电机A3输出引脚2内置驱动器A的输出端2,接至电机A4电机电源端电机供电输入端,电压可达46V5输入引脚1内置驱动器A的逻辑控制输入端16使能端A内置驱动器A的使能端7输入引脚2内置驱动器A的逻辑控制输入端28逻辑地逻辑地9逻辑电源端逻辑控制电路的电源输入端为5V10输入引脚3内置驱动器B的逻辑控制输入端111使能端B内置驱动器B的使能端12输入引脚4内置驱动器B的逻辑控制输入端213输出引脚3内置
23、驱动器B的输出端1,接至电机B14输出引脚4内置驱动器B的输出端2,接至电机B15电流传感器B在该引脚和地之间接小阻值电阻可用来检测电流图3-3 L298N内部原理图电机驱动A/B的控制逻辑如下表所示。表3-2 电机驱动A/B的控制逻辑输入信号电机运动方式使能端A/B输入引脚1/3输入引脚2/4110前进101后退111紧急停车100紧急停车0XX自由转动L298N可直接对电机进行控制,不需要隔离电路。通过单片机的I/O输入改芯片控制端的电平,即可以对电机进行正反转,停止的操作,操作非常方便,亦能满足直流减速电机的大电流要求4。调试时依照上表,用程序输入对应的码值,即可以实现对应的操作。其驱动
24、电路原理图如下图3-4所示。图3-4 L298N驱动原理图3.3 信号检测电路小车循迹的原理是在铺有约四厘米宽黑胶带的白纸 “路面”上行驶,由于黑纸和白色路面对光线的反射系数不同,可以根据接收的反射光的强弱来判断道路黑纸轨迹。本设计采用简单易用,应用也较为普遍的红外探测法。红外探测法,即用红外线在不同颜色的物表面具有不同的反射性质的特点7。在小车行驶过程中传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为低电平,当红外线遇到白色地面时发生漫反射,红外线被反射回来反射光被装在小车上的接收管接收且强度足够大
25、,光敏三极管饱和,此时模块的输出端为高电平;如果遇到黑纸则红外光被吸收,小车上的接收管接收不到信号,再通过LM393作比较器来采集高低电平,从而实现信号的检测。避障亦是此原理。通过设计了如图3-5所示的电路来检测,图中R18为限流电阻,当有光反射回来时,光电传感器的三极管导通,在LM393的2脚出产生低电平电压,通过LM393处理后在P1.0出产生高电平,返回给单片机,从而达到检测的目的。并通过变阻器RV1可调节传感器的灵敏度。图3-5循迹原理图3.4 测速电路采用透射式光电传感器(凹槽型)进行测速。槽型光耦是由红外发光管和光敏三极管构成的,将码盘安装在电机轴上,当电机转动时,码盘也随之转动。
26、工作时红外发光管发出红外光线透过光耦的槽投射到光敏三极管上,光敏三极管导通,集电极输出低电平。当红外光线被检测物遮断时,光敏三极管截止,集电极输出高电平。遮挡一次槽型光耦输出一个脉冲,因此脉冲的个数就是被检测物的数量。车轮转动时带动码盘转动,单片机内部计时可测出给定的时间内通过的脉冲数,从而测出小车的实时速度。其电路原理图与循迹原理图类似。如图3-6所示。图3-6 测速电路原理图3.5 显示电路用LCD1602来显示数据,LCD液晶具有功耗低、显示内容丰富、清晰,显示信息量大,显示速度较快等特点。其中用滑动变阻器RV0来调节显示器的背光亮度。电路原理图如下图3-7。图3-7显示电路原理图3.6
27、 主控电路单片机是控制单元的核心。起着控制小车所有运行状态的作用。单片机控制模块使用的是宏晶公司生产的STC89C52,使用该芯片很容易实现对其它模块的控制。通过对单片机STC89C52写入程序,可以方便的用软件来控制,整个过程的控制部分如图3-8所示。 图3-8 单片机最小系统STC89C52单片机最小系统包括了晶振电路,电源电路以及复位电路,其中复位电路的复位按键用于小车的复位。P1.3P1.7分别控制电机驱动。其它P口用外接控制小车的各种控制开关,P0口外接上拉电阻,可用于外接LCD1602。STC89C52 单片机介绍5:STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超
28、强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。主要特性如下:1. 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。2. 工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz。3. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单片机)4. 片上集成512字节RAM。5. 用户应用程序空间为8K字节。6. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)
29、直接下载用户程序,数秒即可完成一片。7. 通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。8. 具有看门狗功能。9. 具有EEPROM功能。10. 共3个16位定时器/计数器。即定时器T0、T1、T2。11. 外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒。12. 通用异步串行口(UART),还可用定时器软件实现多个UART。13. 工作温度范围:-40+85(工业级)/075(商业级)14. PDIP封装。STC89C52单
30、片机的引脚图如下图3-9。图3-9 STC89C52RC引脚图另外STC单片机有两种时钟模式,一种是单倍速,也就是12时钟模式,在该模式下,STC单片机与其他公司51系列单片机具有相同的机器周期,即12个振荡周期为一个机器周期;另一种是双倍速,又称6时钟模式,在该模式下,STC单片机比其他公司的51单片机运行速度快一倍。第4章 软件设计4.1 主程序模块的设计4.1.1 主程序的流程图图4-1 主程序流程图在图4-1主程序流程图中,开始时先是单片机的初始化,包括定时器初始化,外部中断的初始化,液晶的初始化。然后调用循迹子程序,小车循迹前进,如果定时时间到了则调用超声波模块子程序,判断前方50c
31、m处是否有障碍物,如果有的话led闪烁,如果检测到停止线则小车停止。4.1.2 主程序的设计void main() Timer_Init(); /定时器初始化 INT0_Init(); /外部中断初始化 LCD_Init(); /LCD1602初始化 TR1=1; /启动定时器lcd_write_cmd(0x80);LED1 = 1;LED2 = 1;while(1) PWM();/pwm调速 track(); /调用循迹子程序lcd_write_cmd(0x80+0x09); lcd_write_dat(qian);lcd_write_cmd(0x80+0x0a); lcd_write_da
32、t(bai2); lcd_write_cmd(0x80+0x0b); lcd_write_dat(shi2); lcd_write_cmd(0x80+0x0c); lcd_write_dat(ge2); lcd_write_cmd(0x80+0x47); lcd_write_dat(bai1); lcd_write_cmd(0x80+0x48); lcd_write_dat(shi1); lcd_write_cmd(0x80+0x49); lcd_write_dat(ge1); if(flag1=1&flag2=1)csb(); /调用超声波子程序flag1=0; 4.2 电机驱动程序的设计4
33、.2.1 电机驱动程序流程图图4-2 电机驱动程序流程图电机驱动程序流程图如上图4-2,开始先检测小车的状态如果相对黑线是直的,则调用直走子程序,即左右两个电机都正转;如果小车偏向黑线的左边则调用向右走子程序,即左电机正转右电机反转;如果小车偏向黑线的右边则调用向左走子程序,即左电机反转右电机正转;如果小车完全偏离黑线则调用向后退子程序,即两个电机都反转;如果小车到终点了则调用停止子程序,即两个电机都不转。4.2.2 电机驱动程序的设计void goahead() /小车直走IN1 = 1;IN2 = 0;IN3= 1;IN4 = 0;void goback()/小车后退IN1 = 0;IN2
34、 = 1;IN3 = 0;IN4 = 1;void turnright()/小车向右转IN1 = 1;IN2 = 0;IN3 = 0;IN4 = 1;void turnleft()/小车向左转IN1 = 0;IN2 = 1;IN3 = 1;IN4 = 0;void zw_turnright() /用于转弯时的左转IN1 = 1;IN2 = 0;IN3 = 0;IN4 = 0;void zw_turnleft() /用于转弯时的右转IN1 = 0;IN2 = 0;IN3 = 1;IN4 = 0;void stop()/小车停止IN1 = 0;IN2 = 0;IN3 = 0;IN4 = 0;voi
35、d PWM(void) /小车调速 PWM_ENA = 1; PWM_ENB = 1; delayXms(H); PWM_ENA = 0; PWM_ENB = 1; delayXms(L);PWM_ENA = 0; PWM_ENB = 0; delayXms(N);4.3 循迹模块程序的设计4.3.1 循迹模块流程图 图4-3 循迹模块流程图在图4-3 循迹模块流程图中,通过检测P1口第四位的电平并把它赋给变量temp然后用switch-case语句来根据P1口低四位的电平,给出相应的电平送到电机驱动芯片L298N去,从而控制小车的直走,左转,右转,后退,停止等动作。4.3.2 循迹模块子程序
36、设计void track( void ) uchar temp = 0; temp = P1 & 0x0f; /取P1口低四位赋给变量temp switch( temp ) case 0x09: goahead(); /直走 break; case 0x0c: case 0x0e: turnleft();/左转 break;case 0x03: case 0x07: turnright();/右转 break;case 0x0f: goback();/ 后退 break;case 0x00: stop(); /停止break;case 0x08: zw_turnleft();/用于直角转弯时的
37、左转delayXms(20);break;case 0x01:zw_turnright();/用于直角转弯时的右转delayXms(20);break; default: break; 4.4 测距避障模块程序的设计4.4.1 测距模块流程图图4-4测距模块流程图测距模块流程图如图4-4,开始时单片机先给超声波测距模块Trig端发送一个高电平且这个高电平要持续20us,然后再给Trig端发送一个低电平,即启动了超声波测距模块,超声波测距模块会自动发送8个40KHZ的方波,等待是否有信号返回,如果有信号返回会通过IO口超声波测距模块的Echo端输出一个高电平,高电平持续的时间就是超声波从发射到返
38、回的时间,测试距离=(高电平时间*340)/ 2,单位为m。如果距离小于50cm,车前的两个LED等闪烁提示,如果距离小于7cm,小车自动停下。4.4.2 测距模块程序设计void csb()TH0=0; TL0=0;TX=1; /Trig发送端发出一个高电平 delay_20us(); /延时20usTX=0; /Trig发送端发出一个低电平while(RX=0); /等待接收端为高电平TR0=1;/启动定时器while(RX);/等待接收端为低电平TR0=0;/关闭定时器time=TH0*256+TL0; juli=time*0.017; / (1/(12*1000000)*340*12*
39、100/2得到的是距离单位为cm ;if(juli5)&(juli50) LED1=1;LED2=1;flag3=0;4.5 显示模块程序的设计4.5.1 显示模块流程图图4-5显示模块流程图图4-5为显示模块流程图,先是初始化LCD1602然后在液晶的第一行显示Journey: cm液晶第二列显示Speed: mm/s 然后在主程序不断的调用显示程序刷新cm或者mm前面的数字。4.5.2 显示程序设计bit lcd_busy() /判忙函数bit result;RS=0;RW=1;E=1;_nop_();_nop_();_nop_();_nop_();result = (bit)(P0&0x80);E=0;return result;void lcd_write_cmd(uchar cmd) /液晶写指令while(lcd_busy();RS=0;RW=0;E=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();E=0;void lcd_write_dat(uchar dat)/液晶写数据指令while(lcd_busy();RS=1;RW=0;E=0;P0=dat
限制150内