《基于51单片机控制的自动停泊小车的设计与实现毕业设计论文.doc》由会员分享,可在线阅读,更多相关《基于51单片机控制的自动停泊小车的设计与实现毕业设计论文.doc(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、青岛理工大学琴岛学院毕业设计(论文)本科专业学生毕业设计(论文)题 目: 基于51单片机控制的自动停泊小车的设计与实现系 别: 计算机工程系专 业: 电子信息工程年 级: 2010级学 号: 20100302022姓 名: 白昂松指导教师: 刘 博青岛理工大学琴岛学院毕业设计(论文)摘 要 在当今社会,汽车更加成为了千家万户必不可少的工具。然而,对于大多数人来说,将车子停车入车位都是件头疼的事,尤其是停入那种前后各一辆车的车位,也叫顺列式车位,新手对这种车位最为恐惧。如果稍有不慎,那么停车时发生刮蹭的小事故的几率非常高。为了解决驾驶员们的这一难题,自动停泊技术走进了人们的视野中。此次设计采用S
2、TC89C52RC单片机作为控制核心,由L298N电机驱动模块来控制小车的运动轨迹,利用超声波模块进行与障碍之间距离的检测,还使用了红外避障模块对障碍进行检测,最后使用了LCD1602显示屏对数据进行显示,以提示驾驶员。整个系统先由电机驱动模块控制小车移动,期间由红外避障模块进行障碍物检测,如果检测到障碍,超声波模块则开始测量距离并显示在LCD液晶屏上,并且小车停止移动。上述流程循环至小车停入库内,最后由超声波传感器测量小车与后方障碍物的距离,并最终做出调整。整个过程由单片机进行数据处理,是一种既方便又安全的停车方式。 论文中首先提出了整体方案,然后在对STC89C52RC单片机开发及运用的基
3、础上对各个模块的工作原理及其特性进行了分析与介绍,并加以说明。在论文中还对系统的软件结构进行介绍。在对硬件工作原理的理解为前提条件,用C语言编程来实现系统的功能。 关键词:超声波传感器;STC89C52RC单片机;自动停泊;C语言Abstract Nowadays, automobile has become an essential tool for every family. Almost every family has their own car. however, how to parking a car is a headache thing for many people, es
4、pecially parking to the column spaces. The parking scratches accident is very high. In order to solve the difficulties, automatic berthing technology into peoples vision. This design uses the STC89C52RC single-chip microcomputer as control core, by L298N motor driver module to control the movement o
5、f the car, using the ultrasonic module and the distance between the obstacle detection, also used the infrared obstacle avoidance module to detect obstacles, finally uses the LCD1602 display screen to display the data. The whole system module to control the car driven by a motor to move first, durin
6、g the obstacle detection by infrared obstacle avoidance module, if detected obstacle, ultrasonic module began to measure distance and displayed in the LCD screen, and the car stop moving. The process cycle to the car stopped within the library, and finally the trolley and the rear obstacle distance
7、is measured by the ultrasonic sensor, and eventually make adjustments. The whole process by single-chip computer for data processing, it is a convenient and safe way of parking. The thesis first puts forward the overall plan, and then based on STC89C52RC MCU development and application, and explaine
8、d. In the paper also introduces the software structure of the system. On the premise of understanding of the working principle of the hardware conditions, using C language programming to realize the function of the system. Key Words: The transducer STC89C52RC SCM Automatic parking The C language目 录第
9、一章 引 言11.1研究背景及发展现状11.2研究目的及意义11.3研究内容1第二章 方案的论证及设计22.1自动泊车系统的设计要求22.2系统的主要功能2第三章 自动泊车系统的硬件设计43.1自动停泊小车的硬件系统43.2 STC89C52单片机的电路图及引脚说明43.3 L298N电机驱动模块73.4 超声波传感器模块103.5 红外避障模块123.6 LCD1602液晶显示14第四章 自动泊车系统的软件设计164.1开发软件164.1.1 Keil软件的介绍164.1.2 STC_ISP软件介绍174.2 自动泊车系统主程序174.3 L298N电机驱动程序194.4 超声波测距程序19
10、4.5 红外避障模块程序214.6 LCD1602液晶显示程序21第五章 自动停泊小车的测试24结 论26致 谢27参考文献28附 录29附录一29附录二36III青岛理工大学琴岛学院毕业设计(论文)第一章 引 言1.1研究背景及发展现状 在当今社会,科技不断发展和更新,逐渐形成了家有一车的趋势,拥有一辆自己的汽车成为了当今社会人们生活中的重要一部分。然而拥有了自己的爱车之后,许多棘手的问题也都随之而来。最重要的是考取驾照,考取驾照时,倒库和移库作为必考科目之一,有一定的道理。只要不开车就要停车,如果作为一名新手或者倒车技术还不够硬的驾驶者,这无疑是最折磨人的事情,导致发生爱车小规模摩擦等不必
11、要的麻烦。为了解决这种情况的发生,各大汽车厂商研发出了自动泊车功能,自动泊车逐渐进入了人们的视野之中,并广泛被大众使用。1.2研究目的及意义 伴随着汽车的普及和人们物质文化水平的提高,自动停泊小车正迅速地走进人们的生活中来,自动泊车系统不但给人们带来方便,也让停车成为了一种享受。自动泊车作为一个强大的控制系统,对距离的检测和车辆行驶速度的把握能力要远远强于驾驶者的手动控制。自动泊车是由处理器,检测系统和控制系统组成。先由检测系统来检测汽车周围的环境和汽车自身状况,然后传出到处理器,对数据进行处理。最后由控制系统来控制汽车的行动方式和轨迹,从而达到自动停车的功能。在此过程中,驾驶员需要按下启动自
12、动停泊装置的按钮即可,双手可完全脱离方向盘既舒适又简单。1.3研究内容 本次设计就是利用所学的单片机知识设计一款具有自动停泊功能的小车,对小车进行自动倒入车位、测量安全距离和对驾驶员的危险距离提示等功能进行完善,并且参照各大汽车制造商研发出来的自动泊车功能,对自己的小车进行完善与改进,并与生活接轨做出一款既能丰富自己知识面又能应用到现实生活中的设计。研究的内容有:具有自动倒车与停泊,对切入车位的角度和车辆行驶的速度进行控制;超声波检测距离,并将距离呈现给驾驶者,提供距离信息给驾驶员;危险距离提示,给予驾驶员提醒,使驾驶员作出相应判断。并将这一系列的功能用基于单片机的小车来实现。第二章 方案的论
13、证及设计2.1自动泊车系统的设计要求 整个系统应用51单片机作为处理数据的核心部位,并利用其它各部件实现侧方位停车,与距离检测,危险提示等模块来实现此次自动停泊小车的设计。 应对各个模块、各部件结构进行熟悉了解,对代码进行编写和优化,以及外围传感器的驱动和测距模块所使用的相关电气化元器件的工业要求。 首先要确定小车开启自动停泊模式的位置,然后计算好距离、角度和速度然后进行倒车,利用小车后面的红外模块对障碍物进行检测,确保倒车过程能顺利实现。完成倒车后利用超声波模块检测车尾与后面障碍物的距离,并显示在LCD显示屏上,最后对位置进行调整。整个过程中要计算好车与停车位的参数,比如:车身长度与宽度,入
14、库时车与障碍形成的角度,停车的长度与宽度,还有小车实现功能时的位置。2.2系统的主要功能 本次设计的自动停泊小车具有以下功能: 1、自动将小车停泊到停车位中(列式停车位)。 2、LCD1602距离显示:先输出超声波模块所测出的距离。 3、红外避障:对障碍物进行探测。 4、超声波测距:测量小车与后方障碍物的距离。 5、蜂鸣器报警提示:进行危险状态提示。 系统功能图如下图2-1所示。图2-1 系统功能图 用图的方式可以展示出本次设计:基于51单片机的自动停泊小车设计的基本工作原理,输入输出部分。超声波传感器和红外传感器能够让车更加规范的完成倒车动作,而LCD1602液晶屏和蜂鸣器也能让驾驶者更加顺
15、利地得到实时数据,并且完成倒车。第三章 自动泊车系统的硬件设计3.1自动停泊小车的硬件系统 在本次的毕业设计中自动停泊小车的硬件上主要使用了:STC89C52RC的单片机、超声波传感器、红外线避障传感器、L298N电机驱动模块以及小车部件等。将自动泊车系统应用于小车上,使普通小车转变成具有自动停泊功能的小车并能模拟自动泊车的基本过程。自动停泊小车的硬件框图如下图3-1所示。 图3-1 自动停泊小车的硬件框图 图3-1表示自动泊车系统应用在小车上时,各个输入、采集数据的模块的工作状态以及通过单片机计算处理后的作出的数据输出和相应的电机驱动状态的展现。3.2 STC89C52单片机的电路图及引脚说
16、明 STC89C52单片机是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K BYTES的可反复擦写的FLASH只读程序存储器和256BYTES的随机数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容。功能强大的STC89C52单片机适合于许多较为复杂的控制应用场合【11】。引脚图如图3-2所示: 图3-2 STC89C52RC引脚图 主要特性如下: l 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,兼容MCS51兼容系统;l 8k可反复擦写(大于1000次)FLASH R
17、OM;l 256x8bit内部RAM;l 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单片机);l 工作频率范围:040MHz,相当于普通 8051 的 080MHz,实际工作频率可达48MHz;l 用户应用程序空间为8K字节;l 时钟频率0-24MHz;l 双向32个I/O口 复位后为:P1/P2/P3/P4是准双向口/弱上拉, P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻;l ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可
18、完成一片;l EEPROM功能;l 看门狗功能;l 3个16位可编程定时/计数器中断,即定时器T0、T1、T2;l 2个外部中断源,共8个中断源;l 通用异步串行口(UART),还可用定时器软件实现多个 UART;l 工作温度范围:-40+85(工业级)/075(商业级);l PDIP封装。 STC89C52RC 单片机的工作模式:l 掉电模式:典型功耗0.1A,可由外部中断唤醒,中断返回后,继续执行原程序;l 空闲模式:典型功耗 2mA;l 正常工作模式:典型功耗4Ma7mA; STC89C52RC 引脚功能说明:l 40个引脚按其功能可以分为以下三类;l 电源及时钟引脚Vcc、Vss;XT
19、AL1、XTAL2;l 控制引脚PSEN、ALE/PROG、EA/Vpp、RESET;l I/O口引脚P0、P1、P2、P3,为四个八位I/O口的外部引脚。 P0 口是一个双功能的八位并行口,字节地址为80H,位地址为80H87H。端口的各位具有完全相同但又相互独立的电路结构。P0口作为双功能口(地址/数据复用口和通用I/O口),当P0口用作地址/数据复用口时,是一个真正的双向口,用作与外部储存器的连接,输出低八位地址和输出/输入8位数据。当P0口作为通用I/O口时,需要在片外接上拉电阻 ,此时端口不存在高阻抗状态,因此是一个准双向口;当作为通用的I/O口输入时,应先向端口输出锁存器写入1。P
20、0口可驱动8个LS型TTL负载。 P1端口(P1.0P1.7,18引脚):八位,准双向I/O口,在内部具有自带的上拉电阻。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入“1”时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流(I)。 此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。 在对 Flash ROM 编程和程序校验时,P1接收低8位地址。 P2端口(P2.0P2.7,2128引脚):P2口是一
21、个自带内部上拉电阻的8位双向 I/O 端口当单片机扩展外部储存器及I/O口时,P2口作为高八位地址线总线用,输出高八位地址,P2口也可以当做普通的I/O口使用。当作为普通的I/O口输入时,应先向端口输出锁存器写入1;P2口与P0口输出的低八位地址一起构成16位地址,可以寻址64KB的地址空间,在访问外部程序存储器和16位地址的外部数据存储器时,P2送出高8位地址。在访问8位地址的外部数据存储器时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。 在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。 P3端口(P3.0P3.7
22、,1017引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3口作为第二功能的输出/输入或第一功能通用输入,均需将相应位的锁存器置1。实际应用中,由于复位后P3口锁存器置1,满足第二功能所需要的条件,所以不需要任何设置工作,就可以进入第二功能操作。当某位不作为第二功能使用时,作为第一功能I/O口使用。引脚输入部分有两个缓冲器,第二功能的输入信号取自缓冲器BUF3的输出端,第一功能输入信号取自缓冲器BUF2的输入端【8】。 RST(9引脚):复位信号输入端,高电平有效。在此引脚加上持续时间大于2个机器周期的高电平,就可以使单片机复位。当单片机正常工作时,次引脚应该为0.5V的低电平。当看门
23、狗定时器溢出时,该引脚将输出长达96个时钟震荡周期的高电平。 ALE/ ROG(30引脚)ALE为CPU访问外部程序存储器或外部数据存储器或外部数据存储器提供一个地址锁存的信号,将低八位地址锁存在片外的地址锁存器中。 在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。 如果需要,通过把地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。,ALE将被微弱拉高。这个ALE使能标志位(地址位8EH 的SFR的第0位)的设置对微控制器处于外部
24、执行模式下无效:外部程序存储器选通信号是外部程序存储器选SEN通信号。3.3 L298N电机驱动模块L298N芯片的介绍L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片的主要特点是工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载;采用标准TTL逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作;有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。L298N芯片如图
25、3-3所示:图3-3 L298N芯片 L298N的工作原理: 在L298N模块中有两组H桥驱动电路,每一组桥H电路中有4个三极管,四个三机关两两相对,在导通时,可以控制流过电机的电流的方向,并通过此方法来控制电机的正传反转等,从而控制此小车的行进方向。此模块有IN1、IN2、IN3、IN4四个逻辑输入端,其中IN1、IN2控制一个电机,IN3、IN4控制另一个电机。当IN1输入高电平为1、IN2输入低电平为0时,IN1、IN2所控制的电机正转,当IN1输入为低电平0,IN2输入高电平1时,电机反转。将PWM引脚上的跳线帽去掉后,从ENA、ENB端输入,可控制电机速度。 L298N芯片引脚说明:
26、 1 脚: 电流监测端A 2 脚: 输出端 3 脚: 输出端 4 脚: 功率电源电压(+12V) 5 脚: 输入端 6 脚: 时能端(通过电阻接地) 7 脚: 输入端 8 脚: GND接地 9 脚: 逻辑电源电压端(+5V) 10脚: 输入端 11脚: 使能端 12脚: 输入脚 13脚: 输出端 14脚: 输出端 15脚: 电流监测端B L298N电机驱动模块原理图如下图3-4所示:图3-4 L298N电机驱动模块 L298N电机驱动模块参数:l 驱动芯片: L298N双H桥直流电机驱动芯片;l 驱动部分端子供电范围Vs:5V12V;如需要板内取电,则供电范围Vs:+6V+12V;l 驱动部分
27、峰值电流Io:2A;l 逻辑部分端子供电范围:Vss:5V7V(可板内取电5V);l 逻辑部分工作电流范围:036mA;l 控制信号输入电压范围:低电平:0.3VVin1.5V; 高电平:2.3VVinVss;l 使能信号输入电压范围: 低电平:0.3Vin1.5V(控制信号无效);高电平:2.3VVinVss(控制信号有效);l 最大功耗:20W(温度T75时);l 存储温度:25130;l 驱动板尺寸:52mm*44mm*33mm(包括散热片和铜柱高度);l 其他扩展:控制方向指示灯、逻辑电源选择接口。3.4 超声波传感器模块超声波测距是利用超声脉冲回波渡越时间法来实现的。设超声波脉冲由传
28、感器发出到接收所经历的时间为t,超声波在空气中的传播速度为c,则从传感器到目标物体的距离D可用下式求出: D = ct /2。本次毕业设计使用的是HC-SR04超声波测距模块。HC-SR04超声波测距模块可提供 2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。超声波传感器系统框图如图3-5所示:图3-5 超声波传感器系统框图主要功能: 1、距离测量; 2、温度测量; 3、光亮度测量。超声波传感器模块原理如下图3-6所示:图3-6超声波传感器模块原理图 基本工作原理: 1、采用I/O口TRIG触发测距,给最少10us 的高电平信号; 2、
29、模块自动发送8个40KHz的方波,自动检测是否有信号返回; 3、有信号返回,通过I/O 口ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S)/2。 基本参数:n 工作电压:DC 5V;n 工作电流:15mA;n 工作频率:40KHz; n 探测距离范围:2cm4m; n 测量温度范围:0至+100(精度:1); n 测量角度:15度; n 数据输出方式:iic和uart(57600bps)两种方式,用户任选;其中UART方式,是以7个字节为一组,以0x55开头的3个数据是距离数值;以0x66开头的2个数据是温度数据以0x77开头
30、的2个数据是光照度数据。0x550x660x77是为区分3个数据而增加的数据头; n 时间限制:支持如下2种探测方式;(1)持续探测;(2)受控间歇探测; n 距离数据格式:以毫米为最小数据单位,双字节 16进制传输,前高后低; n 温度数据格式:以摄氏度为最小数据单位,单字节 16进制传输; n 光照数据格式:单字节16进制传输;光线暗时数值大,光线亮时数值小; n 工作温度范围:0至+100;n 存放温度:-40至+120;n 外形尺寸:48mm*39mm*22mm(H)。 传播限制: 1、超声波探测时,被测物的表面如果为布料、毛料等会出现很大的误差,因为布料或者是毛料对超声波的反射率很小
31、。 2、测距时,被测物体的面积不少于0.5平方米且平面要保持平整,否则会出现误差,影响测量的结果。3.5 红外避障模块在本次设计中红外避障模块安装于小车的车尾左右两侧,其主要作用是检测后方是否有障碍物存在,并控制蜂鸣器报警,对危险距离进行提示,并提醒驾驶者后方有障碍物。红外避障模块原理如下图3-7所示:图3-7 红外避障模块上图的红外避障模块展示了其基本的工作原理:红外二极管发射红外线波,遇到障碍后,红外线波返回被模块上的红外接收装置接收到,并将信息传递给单片机,然后做出相应的处理。模块描述:红外模块由光电传感器组成,光电传感器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。
32、光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电阻器,入射光强,电阻减小,入射光弱,电阻增大。还有另一种入射光弱,电阻减小,入射光强,电阻增大。只要人眼可感受的光,都会引起它的阻值变化。该传感器模块对环境光线适应能力强,由红外发射管发射出一定频率的红外线,当检测方向遇到障碍物时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围280cm,工作电压为3.3V5V。该传感器的探测距离的优点是可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于
33、机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。模块参数说明:u 当模块检测到前方障碍物信号时,电路板上绿色指示灯点亮电平,同时OUT 端口持续输出低电平信号,该模块检测距离280cm,检测角度35,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少;u 传感器主动红外线反射探测,因此目标的反射率和形状是探测距离的关键。其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大;u 传感器模块输出端口OUT 可直接与单片机I/O 口连接即可,也可以直接驱动一个5V继电器。连接方式:VCC-VCC;GND-GND;OUT-I/O;u 比较器采用
34、LM393,工作稳定;u 可采用3-5V直流电源对模块进行供电。当电源接通时,红色电源指示灯点亮;u 具有3mm的螺丝孔,便于固定、安装;u 电路板尺寸:3.1CM*1.5CM;模块接口说明(3线制):1、VCC外接3V-5V电压(可以直接与5V单片机和3V单片机相连);2、GND外接GND;3、OUT小板数字量输出接口(0和1)。3.6 LCD1602液晶显示本设计采用LCD1602,即工业字符型液晶,能够同时显示16x02即32个字符(16列2行)。LCD1602液晶屏原理图如下图3-8所示:图3-8 LCD1602封装图及相关引脚图接口定义如下:1脚:Vss为地电源;2脚:VDD为电源正
35、极;3脚:VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度;4脚:RS为数据命令选择端寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;5脚:R/W读写选择端,高电平为读操作,低电平为写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据;6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;714脚:D0D7为8位双向数据线;15脚:BLA背光电源正极;16脚:BLK背光电源负极。基本
36、操作时序:1、读状态:输入:RS=L, RW=H, E=H 输出:D0D7=状态字;2、写命令:输入:RS=L, RW=L, D0D7=指令码,E=高脉冲 输出:无;3、读数据:输入:RS=H, RW=H, E=H 输出:D0D7=数据;4、写数据:输入:RS=H, RW=L, D0D7=数据,E=高脉冲 输出:无。复位说明(初始化):n 延时15ms;n 写命令38H(不检测忙信号);n 延时5ms;n 写命令38H(不检测忙信号);n 延时5ms;n 写命令38H(不检测忙信号);n 以后每次命令、读/写数据操作之前均需要检测忙信号;n 写命令38H:显示模式设置;n 写命令08H:显示关
37、闭;n 写命令01H:显示清屏;n 写命令06H:显示光标移动设置;n 写命令0CH:显示开及光标设置。 第四章 自动泊车系统的软件设计4.1开发软件本次自动停泊小车的设计主要使用了Keil C51编程软件进行程序的编写,以及STC_ISP程序烧制软件对单片机进行程序烧录。4.1.1 Keil软件的介绍 1、C51开发系统基本知识Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,包括C语言编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案。Keil C51是在ANSI C基础上针对51单片机的硬件特点进行的拓展,并向51单
38、片机上移植,经过多年努力,C语言已经成为公认的高效、简介而又贴近51单片机硬件的实用高级编程语言。目前大多数的51单片机用户都在使用C语言进行程序设计。用C51进行单片机软件开发,具有如下优点:(1) 功能十分强大;(2) 可读性好;(3) 可移植性好;(4) 可维护性得到加强;(5) 易学易用。 2、Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可以IDE本身或其他编辑器编辑C或汇编源文件。然后分别由C51
39、及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的.Hex文件,以供调试器Dscope51或Tscope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 使用独立的Keil仿真器时,注意事项:(1)仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换其他频率的晶振;(2)仿真器上的复位按钮只复位仿真芯片,不复位目标系统;(3)仿真芯片的31脚(/EA)已接至高电平,所以仿真是只能使用片内ROM
40、,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。优点:(1)KEIL C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势;(2)与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C语言来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。4.1.2 STC_ISP软件介绍STC_ISP是一款单片机下载编程烧录软件
41、,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。4.2 自动泊车系统主程序本次设计的主程序主要是对超声波模块及LCD液晶屏等模块进行初始化并调用定时器。并使小车进行功能的实现。是主程序中的部分代码如下所示(while循环体中的部分省略): 主程序部分代码:void main(void)uint a;uchar flag_c ;Sound = 1;LCMInit();DisplayListChar(0, 1, Cls); TMOD=0x01; TH0=0; TL0=0; ET0=1; EA=1; BZ_L=
42、1; BZ_R=1;flag_c = 0;while(1) .自动停泊小车系统的主程序主要是对各个模块进行初始化以及调用定时器。以上为主程序的主要代码(while循环体中的部分省略)此代码为设计的主程序main()部分,首先此段代码对程序中的变量、超声波模块、LCD进行初始化。并开始对小车的功能进行实现。主程序流程图如图4-1所示: 图4-1 主程序流程图以上为该系统的流程图,此流程图表现了主程序的作用与运行主程序的运行过程,如果在运行次程序时满足所有条件,程序将完成自动泊车的全过程。4.3 L298N电机驱动程序L298N电机驱动模块可以实现小车的5个运动状态,包括小车的停止、前进、后退、左
43、转、右转。当4个状态引脚IN1,IN2,IN3,IN4为逻辑输入端,当接收到高、低电平信号时,执行对应的小车运动状态。 L298N电机驱动模块程序如下所示: void Go() IN1=1; IN2=0; IN3=1; IN4=0 . void Left() IN1=0; IN2=1; IN3=1; N4=0; 以上程序部分即展示了小车5种运动状态下的状态引脚的电平信号值。本次设计采用的是IN1和IN2引脚控制左端电机,IN3和IN4控制右端电机的2轮小车,通过控制不同的电平对引脚的输入从而控制小车当前的状态。4.4 超声波测距程序超声波测距模块主要是测量小车后方与障碍物之间的距离,同时可以通
44、过液晶显示屏来显示车辆后方与后方障碍物的距离。当红外避障模块监测到后方有障碍物时,小车进行停车操作,此时超声波进行距离检测。超声波测距模块测距部分程序如下所示:void ceju(void)StartModule();while(!RX);TR0=1; while(RX);TR0=0;Conut(); delayms(80);以上程序为超声波测距的实现,当模块输出口(RX)为0时开始等待,并且开启计数,当模块输出口为1时开始计数并等待,然后关闭计数,最后调用Conut函数进行计算对距离进行计算,并且进行延时。超声波测距流程图如图4-2所示: 图4-2 超声波测距流程图从流程图可以看出在无论小车
45、在任何运动状态中只要红外壁障模块测出小车后方有障碍物,超声波模块就开始测量距离。 4.5 红外避障模块程序在本次设计中,红外模块的作用是对小车的运动状态进行控制。安装在小车车尾左右放置,通过红外臂章模块对两侧的障碍物进行探测从而控制小车运动状态,同时,蜂鸣器作出报警相应提示,此时应注意车身周围是否存在障碍物。红外模块的功能可以独立完成,只需要给此模块一个高或低的电平即可。当红外模块发射管发射出的的红外线被红外模块的接收管接收时,此段程序开始执行。当左右两侧检测到障碍物时,蜂鸣器进行报警,小车进行停车操作,并打开延时。延迟过后蜂鸣器关闭报警状态。红外避障模块工作流程图如图4-3所示: 图 4-3 红外避障流程图在此流程图中,我们可以看出红外模块在不同的工作状态下所执行的运行状态和执行的操作也不相同。当遇见障碍物时蜂鸣器