




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕 业 设 计(论 文) 设计(论文)题目: 基于单片机的智能小车 学 院 名 称: 电子与信息工程学院 专 业: 电子与信息工程 班 级: 电信 092 班 姓 名: 学 号 xxxxxxxxxx 指 导 教 师: xxx 职 称 教授 定稿日期:2013 年 5 月 10 日 i 基于单片机的智能小车 摘 要 智能车辆是目前世界车辆研究领域的热点和汽车工业新的增长点。 未来的车辆也一定是智能化的车辆。所以,智能化的车辆是未来人们 生活重要的载体。因此有必要对智能车辆进行研究。研制一种智能, 高效的智能小车控制系统具有重要的实际意义和科学理论价值。本文 设计了一个能自动循迹的智能小车控制系统。以 stc89c52 单片机为 控制核心,利用反射式光电传感器检测黑线实现小车循迹,利用超声 波传感器检测道路上的障碍并提示,利用 lcd1602 显示小车的速度和 路程。能实现小车自动根据地面黑线前进倒退、转向行驶,超声波测 距提示障碍物,lcd1602 实时显示小车的速度和行驶的路程,具有高 度的智能化,达到设计目标。 关键词:智能小车,stc89c52 单片机,超声波传感器,lcd1602 ii the smart car based on microcontroller abstract intelligent vehicles are the hot spots of the worlds vehicle research areas 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 car 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 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 speed 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 iii 目录 摘 要 i abstract .ii 目录 .iii 第 1 章 绪论 1 1.1 智能小车的意义和作用 1 1.2 智能小车的现状 1 第 2 章 方案设计与论证 2 2.1 主控系统 2 2.2 电源模块 2 2.3 电机驱动模块 3 2.3.1 电机模块选择与论证 3 2.3.2 电机驱动模块选泽与论证 3 2.4 循迹模块 4 2.5 测速模块 5 2.6 显示模块 6 2.7 壁障模块 7 第 3 章 硬件设计 8 3.1 总体设计 8 3.2 驱动电路 8 3.3 信号检测电路 .11 3.4 测速电路 .12 3.5 显示电路 .13 3.6 主控电路 .13 第 4 章 软件设计 17 iv 4.1 主程序模块设计 .17 4.1.1 主程序流程图 17 4.1.2 主程序的设计 17 4.2 电机驱动程序的设计 .19 4.2.1 电机驱动程序 流程图 19 4.2.2 电机驱动程序的设计 20 4.3 循迹模块程序的设计 .22 4.3.1 循迹模块流程图 22 4.3.2 循迹模块程序的设计 22 4.4 测距壁障模块程序的设计 .24 4.4.1 超声波测距 模块流程图 24 4.4.2 超声波测距 模块程序的设计 25 4.5 显示模块程序的设计 .26 4.5.1 显示 模块流程图 26 4.5.2 显示 模块程序的设计 26 第 5 章 系统软硬件的调试 29 5.1 软件程序的调试 .29 5.2 硬件电路的焊接与调试 .30 参考文献 31 附录 1 原理图 .32 附录 2 源程序 .33 附录 3 实物图 43 致 谢 .44 作品(软件)使用说明书 45 1 第 1 章 绪论 1.1 智能小车的意义和作用 智能的出现,为我们的生活和生产带来了很大的便利,同时也是以后的发展 方向,智能就是可以在一个特定的环境中按照我们前面设定好的模式去自动的运 作,它并不需要我们去人为的管理,就可以达到我们前面设定的目标,它的应用 领域很广,如可以应用于工业控制、科学勘探、智能家居等领域。而智能小车就 是智能的一个简单的应用,智能小车就是智能化玩具中的一种,由于这类智能玩 具具有较好的交互性,可控性,能够按照人们设定的模式去自动运作也深受人们 的喜欢。另外,智能小车还可以应用于危险搜索、机器人等许多方面,尤其在机 器人方面具有很好的发展前景。因此,智能化小车的研究不仅具有很大的现实意 义,还具有极为广阔的应用前景和市场价值。 1.2 智能小车的现状 智能小车的研究、开发和应用涉及传感技术、电气技术、电气控制技术、智 能控制等学科,智能控制技术是一门跨科学的综合性技术,当代研究十分活跃, 应用日益广泛的领域 1。众所周知机器人技术的发展是一个国家高科技水平和工 业自动化程度的重要标志和体现。因此目前世界各国都在开展对机器人技术的研 究。机器人由于有很高的灵活性、可以帮助人们提高生产率、改进产品质量等优 点,在世界各地的生产生活领域得到了广泛的应用 2。智能小车正是模仿机器人 的一种尝试。它是一种以汽车电子为背景,涵盖多学科的科技创新性设计,一般 主要由路径识别、速度采集、角度控制以及车速控制等模块组成。这种智能小车 能够自动搜寻前进路线,还能爬坡,感知前方的障碍物,并自动寻找前进方向, 避开障碍物。另外如果加入相关声光讯号后,更能体现出智能化和人性化的一面。 2 第 2 章 方案设计与论证 2.1 主控系统 由于单片机具有价格低廉,资源丰富、有较为强大的控制功能,故本次设计 采用 stc89c52 单片机作为整个系统的核心,用其控制行进中的小车以实现其既 定的性能指标。stc89c52 是一个超低功耗的增强型 51 单片机,和标准 51 系列 单片机相比较它的运算速度更快,有超强的抗干扰能力,同时还支持 isp 在线编 程,片上集成了 512 字节的随机存取数据存储器(ram),并且片内含 8k 字节空 间的可以反复擦写 1000 次的 flash 只读存储器, 32 个 i/o 口,以及 3 个 16 位 可编程定时计数器。其指令系统和传统的 8051 系列单片机指令系统完全兼容, 降低了系统软件设计的难度,电路设计简单、价格低廉,在后来的实验中我们发 现,stc 89c52 精确度和运算速度也都完全符合我们系统的要求。 2.2 电源模块 由于本系统需要给整个智能小车系统供电,考虑了以下几种方案: 方案一:采用 4 节 1.2v 可充电电池组。在电充满时 4 节电池电压可以达到 5v 且可充电电池组具有较强的电流驱动能力及稳定的电压输出性能,但是直流 电机工作时会对 lcd1602 显示造成干扰,使其显示不稳定。故放弃此方案。 方案二:使用双电源供电,将 9v 可充电方块电池电压降压、稳压到 5v 后给 单片机系统和 lcd1602 及其它芯片供电。另外采用 4 节 1.2v 可充电电池组为直 流电机供电,经测试在用此种供电方式下,单片机和传感器工作稳定,直流电机 工作良好,lcd 显示也很稳定,小车也能长时间工作。 综上考虑,我们选择了方案二来完成智能小车整个系统的供电。 3 2.3 电机驱动模块 2.3.1 电机模块选择与论证 方案一:使用步进电机作为智能小车系统的驱动电机,因为步进电机的转动 角度可以精确的定位,这样就可以比较精确的定位小车的前进距离和位置。但是 由于步进电机的输出力矩偏低,并且会随着电机转速的升高而下降,在达到较高 的转速时其输出的力矩会急剧下降,因此不适于小车等对速度有着一定要求的系 统。经过综合分析比较决定放弃此方案。 方案二:使用直流减速电机作为智能小车系统的驱动电机。直流减速电机的 转动力矩比较大,而且体积较小,重量也很轻,使用方便。另外小车电机内部还 装有减速齿轮组,所以并不需要去考虑调速的功能,可以很方便的通过单片机来 控制直流减速电机的正传、反转、停止操作。 综合以上考虑选择方案二的直流减速电机作为整个智能小车的驱动电机。 2.3.2 电机驱动模块选择与论证 方案一:采用继电器对电动机进行控制,通过切换电动机的开关来调整小车 的速度。这个方案的优点是电路相对比较简单,但是它的缺点也比较多,如:继 电器的响应时间偏慢, 寿命较短,容易损坏,可靠性也不是很高。故决定放弃此方 案。 方案二:采用专用的电机驱动芯片 l298n 来控制直流减速电机, l298n 芯 片(如图 2-3)是一个具有高电压大电流的全桥驱动芯片,一片 l298n 芯片可以 分别的控制两个直流减速电机,在 646v 的电压下,可以提供 2a 的额定电流, 并且具有过热自动关断和电流反馈检测功能,安全可靠。该芯片是利用 ttl 电平 进行控制的。通过单片机的 io 口输出高低电平来改变芯片控制端的输入电平, 即可以实现对电机进行正转、反转和停止操作。另外为了保证 l298n 的正常工作, 我还安装了 8 个续流二极管 1n4007。用该芯片作为电机驱动,驱动能力大、操 作方便、稳定性好、性能优良。 4 综合以上分析与论证我们选择方案二的驱动芯片 l298n 作为整个智能小车系 统的电机驱动电路。 图 2-3 l298n 2.4 循迹模块 方案一:用光敏电阻来探测。光敏电阻的阻值会随着周围环境光线的变化而 变化 6。因此当光敏电阻在黑色轨迹的上方和白色轨迹的上方时,阻值会发生较 为明显的变化。将阻值的变化值输入到电压比较器就可以输出高低电平。单片机 就可以根据反馈来的不同的电平信号,发出相应的控制操作命令来控制小车的左 转,右转,前进或者停止。但实际效果并不理想,误测几率偏大、容易受外界的 光线环境的影响,不能够稳定的工作。因此考虑其它更加稳定的方案。 方案二:采用红外反射式光电管完成系统循迹 3。tcrt5000(如图 2-4)是 一种一体化反射型光电探测器,传感器采用高发射功率红外光电二极管和高灵敏 度光电晶体管组成,其发射器是一个砷化镓红外发光二极管,而接收器是一个高 灵敏度,硅平面光电三极管。它是利用了光的反射原理,当光线照射在白纸上, 反射量会比较大,反之,当光照射在黑色物体上,反射回去的量比较少,因为黑 色会吸收光,这样就可以判断黑胶带带轨道的走向。采用红外线发射,外面可见 光对接收信号的影响较小,利用红外对管对黑线边界进行检测,再用 lm393 对检 测信号进行比较,取反,送单片机进行处理。此光电对管电路简单,工作性能稳 定。 经测试方案二不论是在黑暗或者是强光照射下,智能小车系统均可以很稳定 的工作,对外界环境的适应能力比较强。因此我们选择方案二。 5 图 2-4 tcrt5000 2.5 测速模块 方案一:采用霍尔传感器检测轮子上的小磁铁从而给单片机中断脉冲,通过 单位时间内对脉冲的计数通过公式就可以算出实时的车速,达到测量速度的作用。 霍尔元件具有体积小,动态特性好,频率响应宽度大,对外围电路要求简单,使 用寿命长,安装方便,价格低廉等特点。但是需要和磁钢配对使用比较麻烦。 方案二:采用光电码盘,即透射式光电传感器(凹槽型如图 2-5)进行测速。 槽型光耦是由红外发光管和光敏三极管构成的,工作时红外发光管发出红外光线 透过光耦的槽投射到光敏三极管上,光敏三极管导通,集电极输出低电平。当红 外光线被检测物遮断时,光敏三极管截止,集电极输出高电平。遮挡一次槽型光 耦输出一个脉冲,因此脉冲的个数就是被检测物的数量。车轮转动时带动码盘转 动,单片机内部计时可测出给定的时间内通过的脉冲数,从而测出小车的实时速 度。使用方便,抗干扰性较强。 通过比较方案一和方案二的优缺点,综合多方面因素决定选用方案二。 6 图 2-5 槽型光电传感器 2.6 显示模块 方案一:采用 led 数码管显示。数码管使用简单,价格低廉,但一个数码管 只能显示一个数字,要显示多位数据时要使用多个数码管,这就增加了硬件电路 的复杂度和额外功耗,而且 led 数码管也无法显示字符。由于我们计划要显示小 车运行的速度和路程,led 数码管没办法显示这么多的内容,因此考虑其它的方 案。 方案二:采用 lcd1602 液晶(如图 2-6)显示。lcd1602 液晶具有功耗低, 显示内容丰富清晰,显示信息量大,显示速度较快,界面友好,使用简单等特点 而得到了广泛的应用。并且外围电路也比较简单,因此我们选择此方案。 通过以上方案论述我们选择方案二,显示小车运行速度和路程的任务。 图 2-6 lcd1602 液晶显示器 7 2.7 壁障模块 方案一:用漫反射式光电开关进行避障。光电开关的工作原理是根据光线发 射头发出的光束,被物体反射,其接收电路据此做出判断反应,物体对红外光由 同步回路选通而检测物体的有无。当有光线反射回来时,输出低电平。当没有光 线反射回来时,输出高电平。操作简单但是测量的距离不远。 方案二:用超声波传感器进行测距避障。超声波传感器的原理是:超声波由 压电陶瓷超声波传感器发出后,遇到障碍物便反射回来,然后再被超声波传感器 接收 8。超声波传感器在避障的设计中被广泛应用。为了使用方便,便于操作和 调试,采用集成超声波测距模块 hc-sr04(如图 2-7)。 综合考虑本系统只需要检测障碍物,没有十分复杂的环境。为了使用的方便, 便于操作和调试,最终选择了方案二。 图 2-7 hc-sr04 超声波测距模块 8 第 3 章 硬件设计 3.1 总体设计 智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,通过电机驱动芯 片 l298n 来控制前面两个轮子的转动与停止从而达到控制转向的目的,后轮是万 向轮,起支撑转向作用。将 4 个红外光电传感器装在车体底盘的前端,小车根据 传感器检测的情况来循迹前进。 小车速度的检测通过槽型光电传感器,将码盘装在电机的轴上,码盘跟随电 机一起转动,将检测到的数据传回单片机进行处理。 小车的避障用超声波避障模块 hc-sr04,将其置于车头,检测到障碍物时, 小车做出相应的反应。 总体设计框图如图 3-1。 图 3-1 总体设计框图 3.2 驱动电路 电机驱动芯片采用 l298n,是一款承受高压大电流的全桥型直流/步进电压 驱动器,如下图 3-2。 9 图 3-2 电机控制芯片 l298n 的引脚排列 其中 l298n 各引脚的编号与功能和内部逻辑如下表 3-1 和图 3-3。 表 3-1 l298n 引脚编号与功能 引脚编号 名称 功能 1 电流传感器 a 在该引脚和地之间接小阻值电阻可用来检测电流 2 输出引脚 1 内置驱动器 a 的输出端 1,接至电机 a 3 输出引脚 2 内置驱动器 a 的输出端 2,接至电机 a 4 电机电源端 电机供电输入端,电压可达 46v 5 输入引脚 1 内置驱动器 a 的逻辑控制输入端 1 6 使能端 a 内置驱动器 a 的使能端 7 输入引脚 2 内置驱动器 a 的逻辑控制输入端 2 8 逻辑地 逻辑地 9 逻辑电源端 逻辑控制电路的电源输入端为 5v 10 输入引脚 3 内置驱动器 b 的逻辑控制输入端 1 11 使能端 b 内置驱动器 b 的使能端 12 输入引脚 4 内置驱动器 b 的逻辑控制输入端 2 13 输出引脚 3 内置驱动器 b 的输出端 1,接至电机 b 14 输出引脚 4 内置驱动器 b 的输出端 2,接至电机 b 15 电流传感器 b 在该引脚和地之间接小阻值电阻可用来检测电流 10 图 3-3 l298n 内部原理图 电机驱动 a/b 的控制逻辑如下表所示。 表 3-2 电机驱动 a/b 的控制逻辑 输入信号 使能端 a/b 输入引脚 1/3 输入引脚 2/4 电机运动方式 1 1 0 前进 1 0 1 后退 1 1 1 紧急停车 1 0 0 紧急停车 0 x x 自由转动 l298n 可直接对电机进行控制,不需要隔离电路。通过单片机的 i/o 输入 改芯片控制端的电平,即可以对电机进行正反转,停止的操作,操作非常方便, 亦能满足直流减速电机的大电流要求 4。调试时依照上表,用程序输入对应的 码值,即可以实现对应的操作。其驱动电路原理图如下图 3-4 所示。 11 图 3-4 l298n 驱动原理图 3.3 信号检测电路 小车循迹的原理是在铺有约四厘米宽黑胶带的白纸 “路面”上行驶,由于 黑纸和白色路面对光线的反射系数不同,可以根据接收的反射光的强弱来判断道 路黑纸轨迹。本设计采用简单易用,应用也较为普遍的红外探测法。 红外探测法,即用红外线在不同颜色的物表面具有不同的反射性质的特点 7。 在小车行驶过程中传感器的红外发射二极管不断发射红外线,当发射出的红外线 没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态, 此时模块的输出端为低电平,当红外线遇到白色地面时发生漫反射,红外线被反 射回来反射光被装在小车上的接收管接收且强度足够大,光敏三极管饱和,此时 模块的输出端为高电平;如果遇到黑纸则红外光被吸收,小车上的接收管接收不 到信号,再通过 lm393 作比较器来采集高低电平,从而实现信号的检测。避障亦 是此原理。 12 通过设计了如图 3-5 所示的电路来检测,图中 r18 为限流电阻,当有光反射 回来时,光电传感器的三极管导通,在 lm393 的 2 脚出产生低电平电压,通过 lm393 处理后在 p1.0 出产生高电平,返回给单片机,从而达到检测的目的。并 通过变阻器 rv1 可调节传感器的灵敏度。 图 3-5 循迹原理图 3.4 测速电路 采用透射式光电传感器(凹槽型)进行测速。槽型光耦是由红外发光管和光 敏三极管构成的,将码盘安装在电机轴上,当电机转动时,码盘也随之转动。工 作时红外发光管发出红外光线透过光耦的槽投射到光敏三极管上,光敏三极管导 通,集电极输出低电平。当红外光线被检测物遮断时,光敏三极管截止,集电极 输出高电平。遮挡一次槽型光耦输出一个脉冲,因此脉冲的个数就是被检测物的 数量。车轮转动时带动码盘转动,单片机内部计时可测出给定的时间内通过的脉 冲数,从而测出小车的实时速度。其电路原理图与循迹原理图类似。如图 3-6 所 示。 13 图 3-6 测速电路原理图 3.5 显示电路 用 lcd1602 来显示数据,lcd 液晶具有功耗低、显示内容丰富、清晰,显示 信息量大,显示速度较快等特点。其中用滑动变阻器 rv0 来调节显示器的背光亮 度。电路原理图如下图 3-7。 图 3-7 显示电路原理图 3.6 主控电路 单片机是控制单元的核心。起着控制小车所有运行状态的作用。单片机控制 模块使用的是宏晶公司生产的 stc89c52,使用该芯片很容易实现对其它模块的 控制。通过对单片机 stc89c52 写入程序,可以方便的用软件来控制,整个过程 14 的控制部分如图 3-8 所示。 图 3-8 单片机最小系统 stc89c52 单片机最小系统包括了晶振电路,电源电路以及复位电路,其中 复位电路的复位按键用于小车的复位。p1.3p1.7 分别控制电机驱动。其它 p 口 用外接控制小车的各种控制开关,p0 口外接上拉电阻,可用于外接 lcd1602。 stc89c52 单片机介绍 5: stc89c52rc 单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单 片机,指令代码完全兼容传统 8051 单片机,12 时钟/机器周期和 6 时钟/机器周 期可以任意选择。 主要特性如下: 1. 增强型 8051 单片机,6 时钟/机器周期和 12 时钟/机器周期可以任意 选择,指令代码完全兼容传统 8051。 2. 工作频率范围:040mhz,相当于普通 8051 的 080mhz,实际工作 频率可达 48mhz。 3. 工作电压:5.5v3.3v(5v 单片机)/3.8v2.0v(3v 单片机) 15 4. 片上集成 512 字节 ram。 5. 用户应用程序空间为 8k 字节。 6. isp(在系统可编程)/iap(在应用可编程) ,无需专用编程器,无 需专用仿真器,可通过串口(rxd/p3.0,txd/p3.1)直接下载用户程 序,数秒即可完成一片。 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 单片机的引脚图如下图 3-9。 16 图 3-9 stc89c52rc 引脚图 另外 stc 单片机有两种时钟模式,一种是单倍速,也就是 12 时钟模式,在 该模式下,stc 单片机与其他公司 51 系列单片机具有相同的机器周期,即 12 个 振荡周期为一个机器周期;另一种是双倍速,又称 6 时钟模式,在该模式下, stc 单片机比其他公司的 51 单片机运行速度快一倍。 17 第 4 章 软件设计 4.1 主程序模块的设计 4.1.1 主程序的流程图 图 4-1 主程序流程图 在图 4-1 主程序流程图中,开始时先是单片机的初始化,包括定时器初始化, 外部中断的初始化,液晶的初始化。然后调用循迹子程序,小车循迹前进,如果 定时时间到了则调用超声波模块子程序,判断前方 50cm 处是否有障碍物,如果 有的话 led 闪烁,如果检测到停止线则小车停止。 18 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_dat(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 /调用超声波子程序 flag1=0; 19 4.2 电机驱动程序的设计 4.2.1 电机驱动程序流程图 图 4-2 电机驱动程序流程图 电机驱动程序流程图如上图 4-2,开始先检测小车的状态如果相对黑线是直 的,则调用直走子程序,即左右两个电机都正转;如果小车偏向黑线的左边则调 用向右走子程序,即左电机正转右电机反转;如果小车偏向黑线的右边则调用向 左走子程序,即左电机反转右电机正转;如果小车完全偏离黑线则调用向后退子 程序,即两个电机都反转;如果小车到终点了则调用停止子程序,即两个电机都 不转。 20 4.2.2 电机驱动程序的设计 void goahead() /小车直走 in1 = 1; in2 = 0; in3 = 1; in4 = 0; void goback() /小车后退 in1 = 0; in2 = 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() /用于转弯时的右转 21 in1 = 0; in2 = 0; in3 = 1; in4 = 0; void stop() /小车停止 in1 = 0; in2 = 0; in3 = 0; in4 = 0; void 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); 22 4.3 循迹模块程序的设计 4.3.1 循迹模块流程图 图 4-3 循迹模块流程图 在图 4-3 循迹模块流程图中,通过检测 p1 口第四位的电平并把它赋给变量 temp 然后用 switch-case 语句来根据 p1 口低四位的电平,给出相应的电平送到 电机驱动芯片 l298n 去,从而控制小车的直走,左转,右转,后退,停止等动作。 4.3.2 循迹模块子程序设计 void track( void ) uchar temp = 0; temp = p1 /取p1口低四位赋给变量temp 23 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();/用于直角转弯时的左转 delayxms(20); break; case 0x01: zw_turnright();/用于直角转弯时的右转 delayxms(20); break; default: break; 24 4.4 测距避障模块程序的设计 4.4.1 测距模块流程图 图 4-4 测距模块流程图 测距模块流程图如图 4-4,开始时单片机先给超声波测距模块 trig 端发送 一个高电平且这个高电平要持续 20us,然后再给 trig 端发送一个低电平,即启 动了超声波测距模块,超声波测距模块会自动发送 8 个 40khz 的方波,等待是否 有信号返回,如果有信号返回会通过 io 口超声波测距模块的 echo 端输出一个高 电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平 25 时间*340)/ 2,单位为 m。如果距离小于 50cm,车前的两个 led 等闪烁提示, 如果距离小于 7cm,小车自动停下。 4.4.2 测距模块程序设计 void csb() th0=0; tl0=0; tx=1; /trig发送端发出一个高电平 delay_20us(); /延时20us tx=0; /trig发送端发出一个低电平 while(rx=0); /等待接收端为高电平 tr0=1; /启动定时器 while(rx); /等待接收端为低电平 tr0=0; /关闭定时器 time=th0*256+tl0; juli=time*0.017; / (1/(12*1000000)*340*12*100/2得到的是距离单位为cm ; if(juli5) led2=1; flag3=0; 26 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; 27 rw=1; e=1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(p0 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; _nop_(); _nop_(); _nop_(); _nop_(); e=1; _nop_(); 28 _nop_(); _nop_(); _nop_(); e=0; void lcd_init() /液晶初始化指令 delayxms(12); lcd_write_cmd(0x38); delayxms(4); lcd_write_cmd(0x0c); delayxms(4); lcd_write_cmd(0x06); delayxms(4); lcd_write_cmd(0x01); delayxms(4); lcd_write_cmd(0x80); for(i=0;i /包含头文件,头文件包含特殊功能寄存器的定义 #include /keil外部函数库包含文件,_nop_函数在此库中 #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define diameter 60 /码盘直径 #define disc 20 /码盘栅格数20个即20个脉冲是一圈 #define h 100 #define l 10 #define n 20 uint i,n,m,time=0; uchar bai1,shi1,ge1,qian,bai2,shi2,ge2,flag1=0,flag2=1; ulong speed,count1,count2,journey,juli; /以下是定义端口 sbit pwm_ena = p30; sbit pwm_enb = p31; sbit in1 = p14; sbit in2 = p15; sbit in3 = p16; sbit in4 = p17; sbit rs=p25; sbit rw=p26; sbit e =p27; sbit led1 = p20; sbit led2 = p21; sbit tx=p36; /超声波模块trig触发信号控制端 sbit rx=p37; /接收回波控制端 uchar display1=“journey: mm“; uchar display2=“speed: mm/s “; 34 void delay_20us() /延时20us int a; a=2; while(a0) a-; void delay1ms(void) /延时1ms uint j; for(j=0;j5) led2=1; flag3=0; void main() timer_ini
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 进校陪读协议书范本
- 车站管理协议书范本
- 产品品牌合作协议签署函
- 承包商安全环保协议书
- 专业培训合作协议书详细说明
- 产品研发与技术支持服务合同
- 软件广告费合同协议
- 迁建协议书范本
- 软装装修公司合同协议
- 河沙石头协议书
- 献血法知识试题及答案
- 高通量透析与血液透析滤过介绍
- 宁波2025年宁波海洋经济发展示范区象山县高层次紧缺人才选聘笔试历年参考题库附带答案详解
- T-WSJD 21-2022 内镜储存干燥柜卫生要求
- 煤矿井下辅助运输设计规范
- 2025-2030中国聚丙烯三元共聚物行业市场发展趋势与前景展望战略研究报告
- 2025年上半年苏州太仓临港投资发展集团限公司公开招聘工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 工业自动化控制系统调试与维护题库
- 2025届广东省佛山市高三语文二模高分范文12篇:“成长最大的悲哀是失去了想象力”
- 2025年合肥高新美城物业有限公司招聘30人笔试参考题库附带答案详解
- 2025届陕西省高考适应性检测(三)物理试题+答案
评论
0/150
提交评论