




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. . 专专 科科 毕毕 业业 设设 计计 (论论 文文) 题题 目目 基于单片机智能小车控制系统设计基于单片机智能小车控制系统设计 学生姓名学生姓名 _ X X X X X_X_ _ _ _ _ 班班 级级 X X X X X X X X X X X X X X_ 学学 号号 _X_X X X _ _ 院院 (系)(系)_ _ _电电 子子 工工 程程 学学 院院_ 专专 业业 _应应 用用 电电 子子 技技 术术_ 指导教师指导教师 _ _X_X X X X_X_ _ _ _ _ 职职 称称 _ _X_X X X X_X_ _ _ 二 0XX 年 X 月 XX 日 . . 摘摘 要要 随着计算机、微电子、材料、机械、通信等技术的快速发展,车辆的智能化和机器 人的发展速度也越来越快,作为 21 世纪自动化领域内非常伟大的成就它已经和人们的生 产生活紧密的联系在了一起。智能车辆迅速成为世界车辆研究领域的热点和汽车工业新 的增长点。所以,智能化的车辆是未来人们生活重要的载体。因此有必要对智能车辆进 行研究。研制一种智能,高效的智能小车控制系统具有重要的实际意义和科学理论价值。 本系统设计了一个能自动循迹的智能小车控制系统。以 STC89C52 单片机为控制核心,利 用红外无线遥控智能小车,利用超声波传感器检测道路上的障碍并提示,利用 LCD1602 显示小车的速度和路程。能实现小车自动根据地面实况前进倒退、转向行驶,超声波测 距提示障碍物,LCD1602 实时显示小车的速度和行驶的路程,具有高度的智能化,达到设 计目标。 关键词:智能小车;STC89C52 单片机;超声波传感器;LCD1602 . . THE SMART CAR BASED ON MICROCONTROLLER ABSTRACTABSTRACT With the rapid development of computer, microelectronics, materials, machinery, communication and other technologies, the intelligentization of vehicles and the development of robots are getting faster and faster. As a very great achievement in the field of automation in the 21st century, Close ties together. Intelligent vehicles quickly become the worlds automotive research hot spots and the new growth point of the automotive industry.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 AT89C51 To achieve infrared wireless remote control smart car, the use of ultrasonic sensors to detect obstacles on the road and prompted the use of LCD1602 show car 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. KeyKey WordsWords: Smart car; AT89C51 MCU;ultrasonic sensor;LCD1602 . . 目 录 摘要. ABSTRACT. 目录. 第 1 章绪论.1 1.1课题的背景和意义.1 1.2课题的研究现状及发展趋势.1 第 2 章方案设计与论证.2 2.1主控系统.2 2.2电源模块.2 2.3电机驱动模块.2 2.3.1 电机模块选择与论证.2 2.3.2 电机驱动模块选泽与论证.3 2.4遥控模块.4 2.5显示模块.5 2.6壁障模块.5 第 3 章硬件设计.6 3.1总体设计.6 3.2驱动电路.6 3.3遥控电路.9 3.4显示电路.11 3.5避障电路.11 3.6主控电路.13 第 4 章软件设计.16 4.1主程序模块设计.16 4.1.1 主程序流程图 .16 . . 4.1.2 主程序的设计 .17 4.2电机驱动程序的设计.19 4.2.1 电机驱动程序流程图 .19 4.2.2 电机驱动程序的设计 .20 4.3红外遥控程序的设计.21 4.3.1 遥控模块流程图 .21 4.3.2 红外遥控程序的设计 .22 4.4测距壁障模块程序的设计.23 4.4.1 超声波测距模块流程图 .23 4.4.2 超声波测距模块程序的设计 .23 4.5显示模块程序的设计.24 4.5.1 显示模块流程图 .24 4.5.2 显示模块程序的设计 .25 第 5 章软件仿真.28 5.1KEIL 软件 .28 5.2PROUES 软件 .28 第 6 章 实物安装与调试.30 6.1器件清单.30 6.2结果及分析.30 6.3使用指南.31 第 7 章 结束语.32 参考文献.33 致 谢. .34 附录一 原理图 .35 附录二 源程序 .36 附录三 实物图 .45 . . 第 1 章 绪论 1.1课题的背景和意义 智能作为现代社会的新产物,是以后的发展方向,他可以按照预先设定的模式在一 个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或是更高的目 标。本设计主要体现多功能小车的智能模式,设计中的理论方案、分析方法及特色与创 新点等可以为自动运输机器人、采矿勘探机器人、家用自动清洁机器人等自动半自动机 器人的设计与普及有一定的参考意义。同时小车可以作为玩具的发展对象,为中国玩具 市场技术含量的缺乏进行一定的弥补,实现经济收益,形成商业价值。超声波作为智能 车避障的一种重要手段,以其避障实现方便,计算简单,易于做到实时控制,测量精度 也能达到实用的要求,在未来汽车智能化进程中必将得到广泛应用。我国作为一个世界 大国,在高科技领域也必须占据一席之地,未来汽车的智能化是汽车产业发展必然的, 在这种情况下研究超声波在智能车避障上的应用具有深远意义,这将对我国未来智能汽 车的研究在世界高科技领域占据领先地位具有重要作用。 1.2课题的研究现状及发展趋势 智能小车的研究、开发和应用涉及传感技术、电气技术、电气控制技术、智能控制 等学科,智能控制技术是一门跨科学的综合性技术,当代研究十分活跃,应用日益广泛 的领域1。众所周知机器人技术的发展是一个国家高科技水平和工业自动化程度的重要 标志和体现。因此目前世界各国都在开展对机器人技术的研究。机器人由于有很高的灵 活性、可以帮助人们提高生产率、改进产品质量等优点,在世界各地的生产生活领域得 到了广泛的应用2。智能小车正是模仿机器人的一种尝试。它是一种以汽车电子为背景, 涵盖多学科的科技创新性设计,现智能小车发展很快,从智能玩具到其它各行业都有实 质成果。其基本可实现循迹、避障、检测贴片、寻光入库、避崖等基本功能,这几届的 电子设计大赛智能小车又在向声控系统发展。 . . 第 2 章 方案设计与论证 2.1 主控系统 本设计采用 STC89C52 单片机为主控芯片,通过电机驱动电路和超声波发射接收及液 晶实时显示小车与障碍物的距离红外遥控设计而成,采用模块化的设计方案。并且运用 红外遥控器控制小车的前进,后退,左右转和停止的功能。 2.2 电源模块 本次设计采用了 7805 芯片,因为 7805 电源芯片的电路简单,实用,并且能够完全 满足智能避障小车和单片机控制系统和 L298N(直流电机驱动)芯片的供电。7805 芯片 的实物有 3 个引脚,分别为输入 IN 端、输出 OUT 端和接地 GND 端,一般情况下可以提供 1.5A 的电流,如果在散热足够的情况下可以提供 51 单片机主控模块和直流电机驱动等模 块的电压。根据 7805 电源芯片的情况再结合电机的工作电压,故选取了 12V 电源作为 7805 的输入电源。 2.3 电机驱动模块 2.3.1电机模块选择与论证 方案一:使用步进电机作为智能小车系统的驱动电机,因为步进电机的转动角度可 以精确的定位,这样就可以比较精确的定位小车的前进距离和位置。但是由于步进电机 的输出力矩偏低,并且会随着电机转速的升高而下降,在达到较高的转速时其输出的力 矩会急剧下降,因此不适于小车等对速度有着一定要求的系统。经过综合分析比较决定 放弃此方案。 . . 方案二:使用直流减速电机作为智能小车系统的驱动电机。直流减速电机的转动力 矩比较大,而且体积较小,重量也很轻,使用方便。另外小车电机内部还装有减速齿轮 组,所以并不需要去考虑调速的功能,可以很方便的通过单片机来控制直流减速电机的 正传、反转、停止操作。 综合以上考虑选择方案二的直流减速电机作为整个智能小车的驱动电机。 图 2.1 直流减速电机 2.3.2电机驱动模块选择与论证 方案一:采用继电器对电动机进行控制,通过切换电动机的开关来调整小车的速度。 这个方案的优点是电路相对比较简单,但是它的缺点也比较多,如:继电器的响应时间偏 慢, 寿命较短,容易损坏,可靠性也不是很高。故决定放弃此方案。 方案二:采用专用的电机驱动芯片 L298N 来控制直流减速电机, L298N 芯片(如图 2-2)是一个具有高电压大电流的全桥驱动芯片,一片 L298N 芯片可以分别的控制两个直 流减速电机,在 646V 的电压下,可以提供 2A 的额定电流,额定功率 25W,并且具有过 热自动关断和电流反馈检测功能,安全可靠。该芯片是利用 TTL 电平进行控制的。通过 单片机的 IO 口输出高低电平来改变芯片控制端的输入电平,即可以实现对电机进行正转、 反转和停止操作。另外为了保证 L298N 的正常工作,我还安装了 8 个续流二极管 1N4007。用该芯片作为电机驱动,驱动能力大、操作方便、稳定性好、性能优良。 综合以上分析与论证我们选择方案二的驱动芯片 L298N 作为整个智能小车系统的电 机驱动电路。 . . 图 2.2 L298N 2.4 遥控模块 本设计采用红外遥控来控制信号的传送。选择红外遥控装置作为小车的遥控控制器。 红外遥控是通过遥控发射器内的编码芯片将按键信息调制成一串0和1的二进制代码,然 后通过红外线发出,最后被红外接收装置接收进行解码,再运用单片机对解码后的码信 息进行识别,然后再根据不同的码信息进行不同的控制操作9。 图 2.3 VS1838 封装 . . 2.5 显示模块 方案一:采用 LED 数码管显示。数码管使用简单,价格低廉,但一个数码管只能显 示一个数字,要显示多位数据时要使用多个数码管,这就增加了硬件电路的复杂度和额 外功耗,而且 LED 数码管也无法显示字符。由于我们计划要显示小车运行的速度和路程, LED 数码管没办法显示这么多的内容,因此考虑其它的方案。 方案二:采用 LCD1602 液晶(如图 2.4)显示。LCD1602 液晶具有功耗低,显示内容 丰富清晰,显示信息量大,显示速度较快,界面友好,使用简单等特点而得到了广泛的 应用。并且外围电路也比较简单,因此我们选择此方案。 通过以上方案论述我们选择方案二,显示小车与障碍物距离的任务。 图 2.4 LCD1602 液晶显示器 2.6 避障模块 方案一:用漫反射式光电开关进行避障。光电开关的工作原理是根据光线发射头发 出的光束,被物体反射,其接收电路据此做出判断反应,物体对红外光由同步回路选通 而检测物体的有无。当有光线反射回来时,输出低电平。当没有光线反射回来时,输出 高电平。操作简单但是测量的距离不远。 方案二:用超声波传感器进行测距避障。超声波传感器的原理是:超声波由压电陶 瓷超声波传感器发出后,遇到障碍物便反射回来,然后再被超声波传感器接收。超声波 传感器在避障的设计中被广泛应用。为了使用方便,便于操作和调试,采用集成超声波 测距模块 HC-SR04。 综合考虑本系统只需要检测障碍物,没有十分复杂的环境。为了使用的方便,便于 操作和调试,最终选择了方案二。 . . 第 3 章 硬件设计 3.1 总体设计 智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,通过电机驱动芯片 L298N 来控制前面两个轮子的转动与停止从而达到控制转向的目的,后轮是拖动轮,起支撑作 用。小车距离的检测通过超声波传感器 HC-SR04,将检测到的数据传回单片机进行处理。 小车的避障用超声波避障模块 HC-SR04,将其置于车头,检测到障碍物时,小车做出 相应的反应。 总体设计框图如图 3.1。 键盘遥控 编码芯片 编码调制 红外发射 系统应答 a 遥控部分框图 b 小车部分框图 图 3.1 系统总体设计框图 3.2 驱动电路 电机驱动芯片采用 L298N,是一款承受高压大电流的全桥型直流/步进电压驱动器, 如下图 3.2。 STC89C52 电机驱动 模块 数据显示 模块 红外遥控模块 晶振模 块 超声避障 模块 . . 图 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在该引脚和地之间接小阻值电阻可用来检测电流 . . 图 3.3 L298N 内部原理图 电机驱动 A/B 的控制逻辑如下表所示。 表 3.2 电机驱动 A/B 的控制逻辑 输入信号 使能端 A/B输入引脚 1/3输入引脚 2/4 电机运动方式 110 前进 101 后退 111 紧急停车 100 紧急停车 0XX 自由转动 L298N 可直接对电机进行控制,不需要隔离电路。通过单片机的 I/O 输入改芯片控 制端的电平,即可以对电机进行正反转,停止的操作,操作非常方便,亦能满足直流减 速电机的大电流要求。调试时依照上表,用程序输入对应的码值,即可以实现对应的操 作。其驱动电路原理图如下图 3.4 所示。 . . 图 3.4 L298N 驱动原理图 3.3 遥控电路 红外接收器也叫做一体化红外接收头,其内部是由红外监测二极管,放大器,限 副器,带通滤波器,积分电路,比较器等构成的。红外监测二极管接收到红外信号后 ,会把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平。交流信号进 入带通滤波器,带通滤波器只允许 30khz 到 60khz 的负载波通过,然后脉冲信号再通 过解调电路和积分电路进入比较器,由比较器输出高低电平信号,还原出发射端的信 号波形。但为了提高接收的灵敏度输出的高低电平和发射端是反相的。红外接收头有 很多的种类,一般都有电源引脚、信号输出引脚和接地引脚。根据发射端调制载波的 不同应选用相应解调频率的接收头,本设计我们采用车载遥控发射器、一体化红外接 收头 1838 来解调 HT6221 编码芯片的编码。其实物图如图 3.5 所示: . . 图 3.5(1) 1838 红外接收头 图 3.5(2) 车载遥控发射器 由于红外接收头内部放大器也很大的增益,这样很会容易引起干扰,因此在接收头 的电源引脚上须加上大小在 22uf 以上的滤波电容。本设计的红外接收电路如图 3.6 所示 : 图 3.6 红外接收电路图 其中U6为1838红外接收头,电容C4为滤波电容,DOUT 是解调信号的输出端,直接与 单片机的P3.2引脚即INT0中断相连8。 解码的重点是怎样识别位0和位1,由于位0和位1的低电平脉宽相同但高电平脉宽不 一样。所以需要根据高电平的宽度区别位0和位1,如果从0.56ms低电平信号过后延时了 0.56ms以后如果能读到低电平信号说明该位为0反之则为1,为了可靠起见延时必须介于 0.56ms和1.12ms之间,否则如果该位为0读到的已是下一位的高电平,因此我们取其中间 值即(1.12ms+0.56ms)/2=0.84ms。 当按下遥控器的按键后,便有红外脉冲编码信号发出,经红外接收头接收解码后在 其输出端输出检波整形后的方波信号,然后直接输入至单片机外部中断进行码信息的识 别,单片机再调用相应子程序执行对应的操作。 . . 3.4 显示电路 用 LCD1602 来显示数据,LCD 液晶具有功耗低、显示内容丰富、清晰,显示信息量大, 显示速度较快等特点。其中用滑动变阻器 RV0 来调节显示器的背光亮度。电路原理图如 下图 3.7。 图 3.7 显示电路原理图 3.5 避障电路 设计中采用超声波传感器进行测距避障。超声波传感器的原理是:超声波由压电陶 瓷超声波传感器发出后,遇到障碍物便反射回来,然后再被超声波传感器接收。超声波 传感器在避障的设计中被广泛应用。为了使用方便,便于操作和调试,采用集成超声波 测距模块 HC-SR04(如图 3.8)。 . . 图 3.8 HC-SR04 超声波测距模块 HC-SR04 电气参数如表 3.3 所示,声波时序图如图 3.9(1)所示,超声波检测原理图如 图 3.9(2)所示。 表 3.3 HC-SR04 电气参数 图 3.9(1)超声波声波时序图 . . 图 3.9(2)超声波检测原理图 3.6 主控电路 单片机是控制单元的核心。起着控制小车所有运行状态的作用。单片机控制模块使 用的是 STC 公司生产的STC89C52RC,使用该芯片很容易实现对其它模块的控制。通过对 单片机STC89C52RC写入程序,可以方便的用软件来控制。 . . 图 3.10 单片机最小系统 STC89C52RC单片机最小系统包括了晶振电路,电源电路以及复位电路,其中复位电 路的复位按键用于小车的复位。P1.3P1.7 分别控制电机驱动。其它 P 口用外接控制小车 的各种控制开关,P0 口外接上拉电阻,可用于外接 LCD1602。 STC89C52RC单片机介绍: STC89C52RC 是 STC 公司生产的一种低功耗、高性能 CMOS8 位微控制器,具有 8K 字 节系统可编程 Flash 存储器。STC89C52 使用经典的 MCS-51 内核,但做了很多的改进使得 芯片具有传统 51 单片机不具备的功能。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可 编程 Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 主要特性如下: 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)直接下载用户程序,数秒即可完 成一片。 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.10 图 3.11 STC89C52 引脚图 . . 第 4 章 软件设计 4.1主程序模块的设计 4.1.1主程序的流程图 本设计软件部分主要分为五大模块,分别为显示模块、超声波模块、电机驱动模块、 红外遥控模块、主程序模块。其中定时器 0 用来计数器溢出,超出测量范围,T1 用于检 测脉宽信号;外部中断 0 用于红外遥控。在图 4-1 主程序流程图中,开始时先是单片机 的初始化,包括定时器初始化,外部中断的初始化,液晶的初始化。然后调用循迹子程 序,小车正常行驶,如果遇到了障碍则调用超声波模块子程序,判断前方 30cm 处是否有 障碍物,如果检测到左右障碍则小车后退到安全距离后,再次正常行驶。 . . Y 开关接通 N Y 开始 单片机初始化 调用显示子程序 调用测距子程序 调用红外遥控子程序 遥控信号 调用避障子程序 N 由键值改变小车状态 图 4.1 主程序流程图 4.1.2主程序的设计 void main() EN1 = EN2 = 1;/使能左右电机 cmg88();/关数码管 LCMInit(); /LCM 初始化 delay(5);/延时 DisplayListChar(0, 0, Range);/1602 第一行显示 range 数组的内容 DisplayListChar(0, 1, table);/1602 第二行显示 table 数组的内容 TMOD |= 0 x01;/定时器 0 工作方式 1,16 位定时模式 TMOD = 0 x20; /定时器 1 工作方式 2,8 位自动重装 TH1 = 0 x00; /写 0,表示溢出一次时间是 256 个机器周 . . 期 TL1 = 0 x00; ET1 = 1; /开定时器 1 中断 TR1 = 1; /启动定时器 1 IT0 = 1; /设置外部中断 0 的跳转方式 EX0 = 1; /启动外部中断 0 TH0 = 0; TL0= 0; ET0 = 1;/允许 T0 中断 EA = 1;/开总中断 while(1) StartModule();/启动测距模块 while(!RX);/等待 TR0=1; /开启计数 while(RX);/计数并等待 TR0=0;/关计数 Conut();/计算距离 Avoid();/避障 if(IRok) /判断脉宽是否检测完毕 IRcordpro();/根据脉宽检测出 4 个字节的数据 IRok = 0;/重新等待脉宽检测 if(IRpro_ok) /判断是否解码完成 switch(IRcord2) case 0 x18: forward(); /前进 delay(1000); break; case 0 x52: backward(); /后退 delay(1000); break; case 0 x08: left_rapidly(); /左转 delay(1000); break; case 0 x5A: right_rapidly(); /右转 delay(1000); break; case 0 x1C: stop(); /停止 delay(2000); break; default:break; . . IRpro_ok = 0; delay(65); 4.2电机驱动程序的设计 4.2.1电机驱动程序流程图 电机驱动子函数 默认前进 返回 正常前进检测到右障碍检测到左右障碍 调用右转子程 序 调用前进子程 序 调用左转子程 序 调用后退子程序 右电机停止 左电机正转 左右电机正转右电机正转 左电机停止 左右电机反转 小车右转小车前进小车左转 小车后退 检测到左障碍 图 4.2 电机驱动程序流程图 电机驱动程序流程图如上图 4.2,当接通电源开关时,小车则调用默认前行程序,正 常前行。超声波检测模块启用检测子程序。当检测到小车左侧有障碍物,则小车调用右 转子程序,使小车达到安全行驶距离,右转程序流程一样,不在赘述。如果小车检测到 左右障碍,这时小车会短时间停车,然后调用后退子程序,使小车后退到安全距离,再 次回到正常行驶状态。如果后退到一定距离还未达到安全行驶距离,则小车则会再次调 用相应子程序使小车达到正常行驶的距离。 . . 4.2.2电机驱动程序的设计 #include sbit IN1 = P12; sbit IN2 = P13; sbit IN3 = P16; sbit IN4 = P17; sbit EN1 = P14; sbit EN2 = P15; void delay(unsigned int z) unsigned int x,y; for(x = z; x 0; x-) for(y = 114; y 0 ; y-); void main() EN1 = 1; EN2 = 1; IN1 = 0; IN2 = 1; IN3 = 1; IN4 = 0; delay(3000); EN1 = 0; EN2 = 0; delay(3000); EN1 = 1; EN2 = 1; IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 1; delay(3000); EN1 = 0; EN2 = 0; delay(3000); EN1 = 1; EN2 = 1; IN1 = 0; IN2 = 1; IN3 = 0; IN4 = 0; delay(3000); . . EN1 = 0; EN2 = 0; delay(3000); EN1 = 1; EN2 = 1; IN1 = 1; IN2 = 1; IN3 = 1; IN4 = 0; delay(3000); EN1 = 0; EN2 = 0; while(1); 4.34.3红外遥控程序的设计红外遥控程序的设计 4.3.1红外遥控模块流程图 红外遥控子函数 遥控信号 返回 发射前进信号发射左转信号发射后退信号 调用右转子程 序 调用前进子程 序 调用左转子程 序 调用后退子程序 右电机停止 左电机正转 左右电机正转右电机正转 左电机停止 左右电机反转 小车右转小车前进小车左转 小车后退 发射右转信号 发射停止信号 调用停止子程序 左右电机停转 小车停车 . . 图 4.3 红外遥控模块流程图 在图 4.3 红外遥控模块流程图中,通过遥控器发射控制信号,然后检测分析 P3.2 口 接收到的信号,从而控制小车的行驶状态。程序中为了缓和小车在行进中存在的惯性, 所以每个状态切换时都会有一小段延时效果。 4.3.2红外遥控子程序设计 void timer0() interrupt 1 flag=1; void StartModule() TX=1; Delay10us(2); TX=0; void forward() left_motor_go; right_motor_go; void backward() left_motor_back; right_motor_back; void stop() right_motor_stops; left_motor_stops; void left_rapidly() left_motor_back; right_motor_go; void right_rapidly() . . left_motor_go; right_motor_back; 4.4测距避障模块程序的设计 4.4.1测距模块流程图 N Y 测距子程序 计算与障碍物的距离 调用显示子程 序 返回 避障子程序 有障碍? 后退 左转 前进 返回 发射超声波 接收返回超声波 图 4.4 测距模块流程图 测距模块流程图如图 4.4,开始时单片机先给超声波测距模块 Trig 端发送一个高电 平且这个高电平要持续 20us,然后再给 Trig 端发送一个低电平,即启动了超声波测距模 块,超声波测距模块会自动发送 8 个 40KHZ 的方波,等待是否有信号返回,如果有信号 返回会通过 IO 口超声波测距模块的 Echo 端输出一个高电平,高电平持续的时间就是超 声波从发射到返回的时间,测试距离=(高电平时间*声速(340M/S)/2,单位为 mm。如果 距离小于 30cm,小车会后退并转向。 4.4.2测距模块程序设计 void Conut(void) . . time=TH0*256+TL0; TH0=0; TL0=0; S=(float)(time*1.085)*0.17; if(S=7000)|flag=1) flag=0; disbuff0=10; disbuff1=10; disbuff2=10; disbuff3=10; else disbuff0=S/1000; disbuff1=S%1000/100; disbuff2=S%100/10; disbuff3=S%10; 4.5显示模块程序的设计 4.5.1显示模块流程图 . . 显示子函数 初始化 LCD1602 显示屏 液晶第一列显示: =Range Finder= 液晶第二列显示: Distance:000.0mm 结束 图 4.5 显示模块流程图 图 4.5 为显示模块流程图,先是初始化 LCD1602 然后在液晶的第一行显示=Range Finder=液晶第二列显示Distance:000.0mm然后在主程序不断的调用显示程序刷新 mm 前面的数字。 4.5.2显示程序设计 unsigned char ReadStatusLCM(void) LCM_Data = 0 xFF; LCM_RS = 0; Delay10us(1); LCM_RW = 1; Delay10us(1); do LCM_E = 0; Delay10us(1); LCM_E = 0; Delay10us(1); LCM_E = 1; Delay10us(1); while (LCM_Data return(LCM_Data); . . void WriteDataLCM(unsigned char WDLCM) ReadStatusLCM(); LCM_Data = WDLCM; LCM_RS = 1; Delay10us(1); LCM_RW = 0; Delay10us(1); LCM_E = 0; Delay10us(1); LCM_E = 0; Delay10us(1); LCM_E = 1; Delay10us(1); void WriteCommandLCM(unsigned char WCLCM,BuysC) if (BuysC) ReadStatusLCM(); LCM_Data = WCLCM; LCM_RS = 0; Delay10us(1); LCM_RW = 0; Delay10us(1); LCM_E = 0; Delay10us(1); LCM_E = 0; Delay10us(1); LCM_E = 1; Delay10us(1); void LCMInit(void) LCM_Data = 0; WriteCommandLCM(0 x38,0); delay(5); WriteCommandLCM(0 x38,0); delay(5); WriteCommandLCM(0 x38,0); delay(5); WriteCommandLCM(0 x38,1); WriteCommandLCM(0 x08,1); WriteCommandLCM(0 x01,1); . . WriteCommandLCM(0 x06,1); WriteCommandLCM(0 x0c,1); void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) Y X if (Y) X |= 0 x40; X |= 0 x80; WriteCommandLCM(X, 1); WriteDataLCM(DData); void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) unsigned char ListLength; ListLength = 0; Y X while (DDataListLength0 x19) if (X = 0 xF) DisplayOneChar(X, Y, DDataListLength); ListLength+; X+; . . 第 5 章 软件仿真 5.1 KEIL 软件 Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统, 与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易 用。Keil 提供了包括 C 编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器 等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部分组合在一起。 运行 Keil 软件需要 WIN98、NT、WIN2000、WINXP 等操作系统。如果你使用 C 语言编程, 那么 Keil 几乎就是你的不二之选,即使不使用 C 语言而仅用汇编语言编程,其方便易用 的集成环境、强大的软件仿真调试工具也会令你事半功倍。优点如下: Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易 理解。在开发大型软件时更能体现高级语言的优势。 与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而 易学易用。用过汇编语言后再使用 C 来开发,体会更加深刻。 5.2 Protues 软件 Proteus 软件是英国 Lab Center Electronics 公司出版的 EDA 工具软件(该软件中 国总代理为广州风标电子技术有限公司) 。它不仅具有其它 EDA 工具软件的仿真功能,还 能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前 国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发 应用的科技工作者的青睐。 Proteus 是英国著名的 EDA 工具(仿真软件),从原理图布图、代码调试到单片机与外 围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的完整设计。是目前 世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处 理器模型支持 8051、HC11、PI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家电公司游泳活动组织办法
- 浙江省成考试题及答案
- 食管狭窄试题及答案
- 如何预防孩子手机沉迷
- ssc面试题及答案
- 福建省邵武七中2026届化学高一第一学期期末调研试题含解析
- 教孩子制定学习计划的妙招
- 家电公司服务回访管理细则
- 保安理论知识培训内容课件
- 保安物业基础知识培训课件
- 承建工程合作意向书2024年标准版
- 抖音火花合同电子版获取教程
- 电力系统基础课件
- JJG 365-2008电化学氧测定仪
- 河北传统医学师承关系合同书
- 七年级数学(上)有理数混合运算100题(含答案)
- 园林制图(高职)全套教学课件
- 强化训练四川峨眉第二中学物理八年级下册期末考试综合训练试卷(含答案详解版)
- 网约车营运损失起诉状模板
- 镶贴工施工材料质量控制详细办法培训
- 浅谈第三次农业普查的表式和指标设置
评论
0/150
提交评论