资源描述
#类别编 号本 科 毕 业 论 文智能小车请填写标准的专业名称 如:广播电视工程院别 小二号宋体居中请填写规范的班级名称 如:09广电专 业 班 级姓 名 学 号 指导教师 中国传媒大学南广学院20# 4 月 9 日摘要随着科技的日益发展,人们对汽车的要求越来越高,在市场的不断需求下,新型的多功能小汽车应用技术越来越成熟,同时也推动着汽车智能化的发展.智能汽车与一般所说的自动驾驶有所不同,它指的是利用多种传感器和智能公路技术实现的汽车自动驾驶,智能车辆可以识别周围环境、自动判断、多功能驾驶等集成众多驾驶技术的综合系统,它把计算机技术、传感器技术、信息技术、通讯技术、智能机器识别以与自动化等技术,应用了各种新型的技术.目前,智能车辆主要朝着安全、舒适,和提供优良的车人、人车交换系统.本次设计的智能循迹小车主要以单片机89S52为控制核心,实现自动循迹、避障以与手机遥控.循迹电路采用4路红外光电发射对管,并采用L298作为电机的驱动芯片,并在四位数码管上显示实时路径,完成循迹功能.当不能循迹时,可以采用手机远程进行遥控.当小车避障传感器检测到车的前方有障碍物时,会自动停止运行,并发出报警声.关键字:循迹小车;89S52;L298;电机驱动ABSTRACTAlong with the development of science and technology, people on the car demand is higher and higher, in the market continued demand, the new type of multi-function car application technology is more and more mature, but also promote the development of intelligent, the car. Smart cars and general had said to be automatic driving different, it refers to the use of sensor and intelligent road technology of the realization of the automatic car driving, intelligent vehicle is a collection of environment planning and decision-making, perception, different functions such as auxiliary driving in an integrated system, it focuses on the puter, using modern sensor, information fusion, munication, artificial intelligence and automatic control technology, is typical of high-tech plex. At present the studies of intelligent vehicle is mainly devoted to improve the cars safety, fort, and provide good car interface.This design intelligent tracing the car on main on the single chip puter 89 S52 as control core, with 4 road electrcal to launch tube, and by using the L298 as the motor drive chip, and in the four digital tube display real-time path, plete the following mark function.Keywords:tracking car, 89S52,L298,Motor drive目 录一、绪论4二、硬件电路设计52.1硬件设计总体框图52.2 电源电路设计62.2.1电源电路设计原理62.2.2 AMS1117-5.0 简介72.3单片机最小系统82.3.1控制电路分析82.3.2单片机最小系统分析82.3.3 AT89S52单片机简介92.4 电机驱动102.4.1驱动电路设计102.4.2 LM298内部结构112.4.3 H桥电机驱动电路112.5 循迹电路132.5.1 循迹电路设计132.5.2光电传感器ST178简介142.5.3 LM339简介142.6 数码管显示电路152.6.1 实时显示状态152.6.1 数码管显示分析15三、循迹小车程序设计173.1程序设计框图173.2 循迹程序设计183.2.1 循迹传感器原理与其使用183.2.2 循迹程序分析与设计183.3 电机驱动程序设计21四、系统调试与仿真215.3 系统仿真235.3.1小车仿真图23五、总结:24参考文献25绪论近现代,随着电子科技的迅猛发展,人们对技术也提出了更高的要求.汽车的智能化在提高汽车的行驶安全性,操作性等方面都有巨大的优势,在一些特殊的场合下也能满足一些特殊的需要.智能小车系统涉与到自动控制,车辆工程,计算机等多个领域,是未来汽车智能化是一个不可避免的大趋势.目前正在研制的新型高性能自动驾驶汽车是智能能汽车是一种,这种汽车可以根据周围的环境自动驾驶,人们只要坐在车上就行.这种智能汽车上装有和人类似的眼睛、大脑的CCD图像传感器、计算机系统和自动控制系统之类的设备,这些设备内部都编有庞大的计算机程序,这些程序让汽车具有和人一样的思维,可以思考、判断、行走,并能够自动进行启动、加速、刹车,还能够自动绕过障碍物.在周围环境很复杂的情况下,它的的处理器能随机应变,自动选择最佳驾驶方案,让汽车能正常、顺利地行驶. 一般情况下,智能汽车的眼睛被安装在汽车右前方、上下距离40cm处的两台CCD传感器,CCD传感器内有一个发光设备,并可同时发出两条激光束,交在一定距离内,障碍物的图像只有在这个距离范围内才能被识别.智能汽车的眼睛能识别车体前面450M之间的弧形平面、高度为10cm以上的障碍物.如果汽车前方有障碍物,智能汽车的眼睛 就会向处理器大脑发出信号,处理器大脑根据信号和周围环境实际情况判断是否直行、绕道、减速或紧急刹车停车,并选择最佳方案,然后以发送指令的方式,命令汽车的进行停车、后退或减速.小车大赛以迅猛发展的汽车电子作为参考背景,主要包括控制、识别、传感器、电子、电气、计算机、机械等多门技术的应用比赛.如今车辆智能化的研究和开发突飞猛进,通过这些研究可以提高车辆的控制与驾驶安全性,保证车辆在行驶的过程中安全、高效.一些智能汽车生产厂家,不断研究完善智能化的车辆控制系统,研发人员所做的努力主要是延伸扩展了驾驶员的控制、视觉和感觉效果,能极大地促进道路交通的安全性.以技术弥补人为因素的缺陷是智能车辆的主要特点,即便在很复杂的道路情况下,智能汽车也能自动地的控制车辆绕开障碍物,按照指定的路线行驶.中国第一汽车集团公司和国防科技大学机电工程与自动化学院与20#研制成功我国第一辆自主驾驶轿车,南京理工大学、理工大学、#大学、国防科技大学、清华大学等多所院校联合研制了7B.8军用室外自主车,该车装有彩色摄像机、激光雷达、陀螺惯导定位等传感器.#大学设计并制造了一辆用CCD识别地面铺设的条状路标导航的智能车辆,车辆由图像识别、行驶、转向、制动、避障和其他辅助系统组成.目前,该车可以稳定的跟踪直线、弧线、S型线等轨迹自动行驶,车速可达20km/h.在国家科工委和国家862计划的资助下,清华大学计算机系智能技术与系统国家重点实验室自1988年开始研制的THMR系列移动机器人取得了很大的成功.它兼有面向高速公路和一般道路的功能,目前已经能够在校园的非结构化道路环境下,进行道路跟踪和避障自主行驶.可以预计,我国飞速发展的经济实力将为智能车辆的研究提供一个更加广阔的前景.因此,对智能小车进行深入细致的研究,不但能加深课堂上学到的理论知识,更能将理论转化为实际运用,为将来打下坚实的基础.二、硬件电路设计2.1硬件设计总体框图报警四位数码管显示89S52单片机电机驱动+7.2V电源 手机遥控循迹模块+5V电源图2-1 系统设计框图原理框图简介:系统主要采用89S52单片机为主控芯片,将循迹模块采得的值进行处理,然后控制2个电机,实现左右转与前进后退.并把循迹模块采得的值实时的显示在数码管上,这样便于我们观察循迹的状态,当循迹超过范围时,单片机控制报警电路,发出报警.电源部分给单片机以与各电路供电,本系统电机驱动部分和单片机等数字器件分开供电,单片机等数字器件用+5V电源,电机用+7.2V电源.这样分开供电,避免了电机对单片机等数字芯片与器件的干扰.有利于提高系统的稳定性.2.2 电源电路设计图2-2 电源电路2.2.1电源电路设计原理电源电路我们采用AMS1117-5.0进行稳压,7.2V电源是由两节锂电池串联起来得到的,S1是开关,D1主要保护作用,当我们把正负极接反时,电源不会被烧坏.7.2V的电压经过AMS1117-5.0之后,会变为5V,给单片机等其他的数字电路供电.7.2则是给电机进行供电,这样分开供电主要是为了最大程序的减小电机在运行的过程中对单片机等数字电路和器件产生的干扰.C1和C2是两个滤波电容,对电路起稳定作用.2.2.2 AMS1117-5.0 简介AMS1117系列稳压器有可调版与多种固定电压版,设计用于提供1A输出电流且工作压差可低至1V.在最大输出电流时,AMS1117输出输入之间的压差最大不超1.3V,这个压差与负载的电流成正比. AMS1117的输出电压精度比较高,误差电压调控制在1.5%以内,并且输出电流也可以进行调整,为尽量减少电路超载而造成芯片损坏. AMS1117器件引脚上其他稳压器兼容,主要有SOT-223,8P SOIC,和TO-252等封装. AMS1117 参数 AMS1117 基本参数 输出电流 1 输出电压 Adj,1.5, 1.8, 2.5, 2.85, 3.3, 5.0, * AMS1117 其他特性 初始误差 1.5 压差 1.3 AMS1117 封装类型 SOT-223 TO-252 SO-8 三端口可调节或固定输出电压 :1.5V, 1.8V, 2.5V, 2.85V, 3.3V 和5.0V 输出电流1A 工作压差低至1V 线荷载调节:0.2% Max. 负载调节:0.4% Max. 可选SOT-223,TO-252和SO-8封装 AMS1117 应用 :高效线性稳压器 后置稳压器,用于交换式电源 5V至3.3V线性稳压器 电池充电器 有源SCSI终端 笔记本电源管理 电池供电设备图2-3 AMS1117-5.0应用电路2.3单片机最小系统图2-4单片机控制电路2.3.1控制电路分析本系统主要采用AT89S52作为控制核心,P2口主要接电机驱动和报警电路,P0口接数码管的段,P1口高四位接四位数码管的位选,低四位接循迹模块.18、19接单片机的晶振,9脚接复位.C15起退耦作用,防止电源波动对单片机的影响2.3.2单片机最小系统分析1.电源89S52单片机的电压为4.0V-5.5V.我们采用AMS1117-5.0稳压进行供电,其中C15为瓷片电容,主要起退耦作用,以使单片机能稳定工作.2.晶振 晶振结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快.本系统主要采用的是12M晶振,配合2个30pF的电容构成晶体振荡电路.3复位为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路首先是进行上电复位,复位电路旁边的1uF电容在上电瞬间给RST端一个瞬时的高电平信号,当这个电容上面的电量充满时高电平的信号将回落,即RST端的高电平信号保持的时间是由外部这个充电电容决定的.另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全l态.如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序.2.3.3 AT89S52单片机简介本系统主要采用AT89C51单片机,AT89C51 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器.使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容.片上Flash允许程序存储器在系统可编程,亦适于 常规编程器.在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89C51为众多嵌入式控制应用系统提 供高灵活、有效的解决方案. AT89C51具有以下标准功能: 8k字节Flash,256字节RAM 32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位 定时器/计数器一个6向量2级中断结构,全双工串行口, 片内晶振与时钟电路.AT89C51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式.空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作.掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止.P0口有三个功能1、外部扩展存储器时,当做数据总线如图1中的D0D7为数据总线接口 2、外部扩展存储器时,当作地址总线如图1中的A0A7为地址总线接口 3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻.P1口只做I/O口使用:其内部有上拉电阻.P2口有两个功能1、扩展外部存储器时,当作地址总线使用 2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能除了作为I/O使用外其内部有上拉电阻,还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明. 有内部EPROM的单片机芯片例如8751,为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的, 即:编程脉冲:30脚ALE/PROG 编程电压25V:31脚EA/Vpp 接触过工业设备的兄弟可能会看到有些印刷线路板上会有一个电池,这个电池是干什么用的呢?这就是单片机的备用电源,当外接电源下降到下限值时,备用电源就会经第二功能的方式由第9脚即RST/VPD引入,以保护内部RAM中的信息不会丢失. 注:这些引脚的功能应用,除9脚的第二功能外,在新动力2004版学习套件中都有应用到.上拉电阻在介绍这四个I/O口时提到了一个上拉电阻那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效.ALE/PROG 地址锁存控制信号在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离.在后面关于扩展的课程中我们就会看到8051扩展 EEPROM电路,在图中ALE与74LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出.ALE有可能是高电平也有可能是低电平,当ALE是高电平时,允许地址锁存信号,当访问外部存储器时,ALE信号负跳变即由正变负将P0口上低8位地址信号送入锁存器.当ALE是低电平时,P0口上的内容和锁存器输出一致.关于锁存器的内容,我们稍后也会介绍. 在没有访问外部存储器期间,ALE以1/6振荡周期频率输出即6分频,当访问外部存储器以1/12振荡周期输出12分频.从这里我们可以看到,当系统没有进行扩展时ALE会以1/6振荡周期的固定频率输出,因此可以做为外部时钟,或者外部定时脉冲使用.PORG为编程脉冲的输入端在第五课 单片机的内部结构与其组成中,我们已知道,在8051单片机内部有一个4KB或8KB的程序存储器ROM,ROM的作用就是用来存放用户需要执行的程序的,那么我们是怎样把编写好的程序存入进这个ROM中的呢?实际上是通过编程脉冲输入才能写进去的,这个脉冲的输入端口就是PROG. PSEN 外部程序存储器读选通信号:在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作. 1、内部ROM读取时,PSEN不动作; 2、外部ROM读取时,在每个机器周期会动作两次; 3、外部RAM读取时,两个PSEN脉冲被跳过不会输出; 4、外接ROM时,与ROM的OE脚相接. 参见图28051扩展2KB EEPROM电路,在图中PSEN与扩展ROM的OE脚相接 EA/VPP 访问和序存储器控制信号 1、接高电平时: CPU读取内部程序存储器ROM 扩展外部ROM:当读取内部程序存储器超过0FFFH80511FFFH8052时自动读取外部ROM. 2、接低电平时:CPU读取外部程序存储器ROM. 在前面的学习中我们已知道,8031单片机内部是没有ROM的,那么在应用8031单片机时,这个脚是一直接低电平的.2.4 电机驱动图2-5 电机驱动2.4.1驱动电路设计电机驱动采用L298作为主要的驱动芯片,L298N驱动芯片是由SGS公司的产品,比较常见的15脚Multiwatt封装,内部有4通道逻辑驱动电路.利用LM298与其外部辅助电路和电机构成驱动电路.单片机IO口接LM298的六个输入控制端IN1,IN2,IN3,IN4以与PWM2和PWM2,L298的两个输出端MOTO1,MOTO2分别接两个电机.D3-D9主要是保护电路,保护LM298烧坏,因为当系统断电时,LM298停止工作,但是电机由于惯性还会继续运动,此时电机相当于一个发电机,向外部电源发电.这个电压如果直接加到L298的输出端就可能引起LM298烧坏.所以,必须在这个上面加上8个快恢复二极管,把电机断电时所发的电能吸收掉,这样就可以保护LM298不被烧坏.2.4.2 LM298内部结构图2-6 L298内部结构从内部结构图可知,用三极管组成H型平衡桥,驱动功率大,驱动能力强.同时H型PWM电路工作在晶体管的饱和状态与截止状态,具有非常高的效率.2.4.3 H桥电机驱动电路图2-7中所示这是一个非常常用的电机驱动控制电路.因为它的形状和字母H非常相似,因此叫作H桥驱动电路.4个三极管组成这个电机驱动电路.如图所示,电机驱动电路H桥式通常包括4个三极管和一个电机.导通对角线上的一对三极管,则电机运转.判断不同三极管对的导通与否,然后判断电流的流向,根据电流的流向控制电机的转向.图2-7 H桥结构图对角线上的一对三极管导通则电机运转.例如,如图2-7所示,如果Q1管和Q4管导同时通时,电流就从三极管Q1从左至右如黑线所示流过电机,这样电机就正转了.在图中箭头所示的为电流流过的方向,这时电流将驱动电机正向转动.图2-8 H桥控制电机正转图2-9所示为三极管Q2和Q3导通时电流的流向,电流将从右至左逆时针方向流过电机.当三极管Q2和Q3导通时,电流将从右至左流过电机驱动电机沿逆时针方向转动.图2-9 H桥控制电机反转2.5 循迹电路图2-10 循迹电路2.5.1 循迹电路设计循迹电路采用单光束反射取样式光电传感器ST178,发射管发出红外线光,当遇到黑色物体时,红外光不能被反射回来,所以接收管不能接收到发射管发出的红外光,因而不能导通,所以LM339的同相输入端是高电平,而反相输入端的电压比同相输入端要低,所以LM339的输出端此时为高电平.当遇到白色物体时,发射管发出的红外光可以经过物体反射到接收管,此时接收管导通,运放的同相输入端从高电平被拉成低电平,而反相输入端由于接有电阻,电压比同相输入端要高,从而出现了反相端电压高于同相端电压的情况,所以LM339的输出端此时为低电平.当运放的输出端为高电平时,此时LED不亮,表示检测到的是黑线,当运放的输出端为低电平时,此时LED亮,表示检测到的是白线.根据LED灯的指示,我们可以知道循迹电路有没有正常工作.2.5.2光电传感器ST178简介ST178是单光束反射取样式光电传感器,它采用高发射功率红外发射二极管和高灵敏度光电晶体管组成.检测距离可调范围为4mm-10mm,正向电流为50mA,耗散功率为75mW.其内部原理图如下:图2-11 单光束反射取样式光电传感器2.5.3 LM339简介图2-12 LM339功能引脚配置LM339芯片内部集成四个单独的集成运算放大器,此集成运算放大器的特点是:1信号源的内阻限制较宽;2电源电压范围宽,单电源为2-36V,双电源电压为1V-18V;3失调电压小,典型值为2mV;4共模范围很大,为0Ucc-1.5VVo;5差动输入电压范围较大,大到可以等于电源电压;6输出端电位可灵活方便地选用. LM339集成块采用C-14型封装,外型与管脚排列如图.由于LM339使用灵活,应用广泛,所以世界上各大IC生产厂、公司竟相推出自己的四比较器,如IR2339、ANI339、SF339等,它们的参数基本一致,可互换使用. M339的输出端相当于一只不接集电极电阻的晶体三极管,在使用时输出端到正电源一般须接一只电阻称为上拉电阻,选3-15K.选不同阻值的上拉电阻会影响输出端高电位的值.因为当输出晶体三极管截止时,它的集电极电压基本上取决于上拉电阻与负载的值.另外,各比较器的输出端允许连接在一起使用. LM339可构成 单限比较器、 迟滞比较器 、双限比较器窗口比较器 、振荡器等. LM339还可以组成高压数字逻辑门电路,并可直接与TTL、CMOS电路接口.2.6 数码管显示电路图2-13数码管显示电路2.6.1 实时显示状态显示电路为四位数码管,用来显示实时的循迹状态.通过数码管上的显示,我们可以清楚的判断小车是否正常工作,以与工作的状态.当小车某一路检测到黑线时,在数码管上对应的位上输出1,当小车某一路检测到白线时,在数码管对应的位上输出0.例如当小车第2、3路传感器检测到黑线,其他两路检测到白线时,数码管上显示0110 .2.6.1 数码管显示分析在实际的单片机系统中,往往需要多位显示.动态显示应用非常广泛是一种最常见的多位显示方法,.用数码管显示测得的数据,数码管有8段而每段必需占用一个单片机的IO口,所以一位数码管必须占个单片机IO口,本次设计采用4位数码管,则需要32个I/O 口,而89C52单片机的I/O 口只有32个.动态显示能够很好的解决数码管占用单片机IO口过多的问题.所有数码管的段选全部连接在一起,如何能显示不同的内容呢?动态显示的原理是多位数码管,交替来进行显示,利用人的视觉暂留效果使人看到好像有多个数码管同时显示.在编程时,要用单片机控制段选和位选,所谓的位选是选中其中一个数码管,然后利用单片机输出段码,需要显示的数字就能显示在这位数码管上了,延时一段时间后,再选中另一个数码管,再输出对应的段码,高速交替.在动态显示程序中,各个位的延时时间长短是非常重要的,如果延时时间长,则会出现闪烁现象;如果延时时间太短,则会出现显示发暗且有重影.静态驱动就是给单独每一个LED供电.这样每个LED都有足够的电流,亮度也相应的比较高.动态扫描驱动就是把本来供给一个LED灯的电流,同时分给了N个灯,所以它的亮度会有所降低.当然在同时供给两个led灯电流时不是平均的分配电流,而是led间扫描期间电流不断地交替,扫描的频率依据单片机的速度决定,也就是说各位的数码管上的电流在扫描频率内是供个其中一个led,在下一个扫描频率内是供给了另一个led.由上面的分析可以得到限流电阻R的值若我们想让这个4位数码管的每段工作时的电流为8mA.Uled为正常工作时的电压取1.7V.则我们可以得出限流电阻的取值为所以我们选取100欧的限流电阻.这样每个LED工作时的电流约为8mA.在保证LED能亮的同时不会被烧坏.根据上面的计算可得每位数码的电流为64mA,8550的集电极电流最大可达1.5A,完全满足设计要求.由于单片机最大的拉电流一般约为2-5mA,所以必须串一个1K的限流电阻,此处的三极管相当于开关作用,控制各位数码管的开关.2.7 手机遥控电路图2-14 手机遥控电路手机遥控采用的是HT9170双音多频解码芯片,该芯片可以将手机发出的DTMF双音多频信号转化为D0-D3四个信号输出.用D0-D3表示不同的高低电平值,从而解码相应的DTMF信号.然后用解码出来的DTMF信号与单片机进行通信.双音多频 DTMFDual Tone Multi Frequency,双音多频,由高频群和低频群组成,高低频群各包含4个频率.一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字.DTMF信号有16个编码.利用DTMF信令可选择呼叫相应的对讲机.CCITT规定每秒最多按10个键,即每个键时隙最短为100MS,其中音频实际持续时间至少为45MS,不大于55MS,时隙的其他时间内保持静默,因此按键产生双音频信号时,相继的两个信号间隔一段时间;解码器利用这个时间识别出双音频信号,并转换成对应的数字信息,而且要识别出间隙信息.因此流程包含音频任务和静默任务,前者是产生双音频采样值,后者产生静默样值,每个任务结束时,要重置定时器和下一个任务.其中静默任务还要加上一个任务:从数字缓冲区取出数字并解包.解包就是将数字映射为对应的行列音频特性,装载指针指向振荡器特征表对应的正确位置.两个任务轮流执行.由CCITT国际电报 咨询委员会的规定,数字之间必须有适当长度的静音,因此编码器有两个任务,其一是音频信号任务,产生双音样本,其二是静音任务,产生静音样本.每个任务结束后,启动下一个任务前音频信号任务或静音任务,都必须复位决定其持续时间的定时器变量.在静音任务结束后,DSP从数字缓存中调出下一个数字,判决该数字.信号所对应的行频和列频信号,并根据不同频率确定其初始化参数.双音多频的拨号键盘是44的矩阵,每一行代表一个低频,每一列代表一个高频.每按一个键就发送一个高频和低频的正弦信号组合,比如1相当于697和1209赫兹.交换机可以解码这些频率组合并确定所对应的按键.与单音编码不同,DTMF信号是采用8中取2的方式,从高低两个音组中各取一个音频复合而成来代表0-9十个和其他功能码,再加上这8个音频信号的各频率同不存在谐波关系,大大减少了虚假信号灯干扰,因而DTMF信号工作可靠性特别是抗干扰能力很强.图2-15HT9170解码输出表在编码时将击键或数字信息转换成双音信号并发送,解码时在收到的DTMF信号中检测击键或数字信息的存在性.一个DTMF信号由两个频率的音频信号叠加构成.这两个音频信号的频率来自两组预分配的频率组:行频组或列频组.每一对这样的音频信号唯一表示一个数字或符号.DTMF信号即双音频信号,最先用于程控 交换系统来代替号盘脉冲信号,主叫用户摘机按键拨号后, 所对应的DTMF信号通过 线传到程控交换机中的DTMF接受电路,交换机中的微机识别被叫 后,接通主被叫用户实现双方通话.DTMF信号还用于自动控制系统,如果把DTMF的发送电路用于主控系统,接收电路用于被控系统,就可以方便地组成有线或无线通信系统,其通道数视需要而定,16通道以内每通道只需编一位即可,若需要更多通道,则可像 编号一样编为两位或两位以上的. 机中通常有16个按键,其中有10个数字键09和6个功能键*、#、A、B、C、D.由于按照组合原理,一般应有8种不同的单音频信号.因此可采用的频率也有8种,故称之为多频,又因它采用分别从高低频中任意抽出1种进行组合来进行编码,所以又称之为8中取2的编码技术.根据CCITT的建议,国际上采用的多种频率为697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8种.用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键三、循迹小车程序设计3.1程序设计框图判断小车是否偏离读取各传感器电平初始化开始 右偏直行左偏左转调整继续保持右转调整数码管显示图3-1 程序设计框图3.1.1 keil 简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用.Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起.运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统.如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍.Keil公司是一家业界领先的微控制器MCU软件开发工具的独立供应商.Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc.Keil公司制造和销售种类广泛的开发工具,包括ANSI C编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心real-time kernel.有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案.其Keil C51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种.Keil公司在20#被ARM公司收购.其两家公司分别更名为ARM Germany GmbH和ARM Inc.Keil公司首席执行官Reinhard Keil表示:作为ARM Connected munity中的一员,Keil和ARM保持着长期的良好关系.通过这次收购,我们将能更好地向高速发展的32位微控制器市场提供完整的解决方案,同时继续在uVision环境下支持我们的8051和C16x编译器.C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境IDE,可以完成编辑、编译、连接、调试、仿真等整个开发流程.开发人员可用IDE本身或其它编辑器编辑C或汇编源文件.然后分别由C51与C51编译器编译生成目标文件.OBJ.目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件.ABS.ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中.使用独立的Keil仿真器时,注意事项* 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振.* 仿真器上的复位按钮只复位仿真芯片,不复位目标系统.* 仿真芯片的31脚/EA已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM其CPU的/EA引脚接至低电平的目标系统中使用.3.2 循迹程序设计3.2.1 循迹传感器原理与其使用本次设计中,我们采用了4路传感器排成一排.一般来说,传感器越多,循迹效果越好.我们本次设计采用的是一对光电管,由发射红外光和接收红外光两个管组成.当光电对管通过深颜色物体时,由于发射光被吸收很多,能反射出来的光线就小,能被接收管收到的光线就更少;反之,当光电滴灌通过浅颜色物体时,由于发射光被吸收较少,能反射出来的光线就多,能被接收管接收到的光线也随之增多.而光电接收管会随着接收光线的多少而发生电压或电流变化,我们根据这些电参数变化就可以知道传感器碰到的是深颜色物体还是浅颜色物体.赛道之所以要做成黑底白线,或白底黑线,就是为了让电参数变化差异增大,更便于我们判断.红外光电对管传输的实际是一个模拟量,并非是一个数字量,一般我们可以通过AD转换器将其变为数字量再进行处理,通过AD转换器,我们可以知道场地的灰度,可以适应不同的场地要求.本次设计中由于采用了LM339,将模拟量通电压比较器转化为了开关数字量0、1,再传送给单片机.单片机通过判断这些开关数字量就可以得知循迹的状态.3.2.2 循迹程序分析与设计 0 1 1 0图3-2 小车直行状态上图3-2所示为小车的直行状态,红色代表传感器,黑色代表循迹路线,直行时,传感器的电平为0110 .当单片机读到P1口的低四位为0110时,就起动直行函数. 0 1 0 0 1 1 0 0图3-3 小车向左微偏状态 图3-4 小车向左中度偏移状态 1 0 0 00 0 0 0 图3-5 小车向左严重偏移状态 图3-6 小车向左完全偏移状态上图所示为小车的向左偏移的四种状态.以上四种状态则分别对应程序里面四种函数:若P1口低四位状态=0100,小车轻微向左偏离轨道,则执行向右微转函数若P1口低四位状态=1100,小车中度向左偏离轨道,则执行向右中转函数若P1口低四位状态=1000,小车严重向左偏离轨道,则执行向右大转函数若P1口低四位状态=0000,小车完全向左偏离轨道,则执行立即停止函数0 0 1 00 0 1 1图3-7 小车向左微偏状态图3-8 小车向左微偏状态 0 0 0 1 0 0 0 0 图3-9 小车向左微偏状态图3-10 小车向左微偏状态上图所示为小车的向左偏移的四种状态.以上四种状态则分别对应程序里面四种函数:若P1口低四位状态=0010,小车轻微向右偏离轨道,则执行向左微转函数若P1口低四位状态=0011,小车中度向右偏离轨道,则执行向左中转函数若P1口低四位状态=0001,小车严重向右偏离轨道,则执行向左大转函数若P1口低四位状态=0000,小车完全向右偏离轨道,则执行立即停止函数在实际的检测过程中,由于地面不干净或者其他一些因素的干扰,还有可能P1口低四位出现的电平状态不在上述范围之列,例如:0101,1010,111,0111等种情况,我们对其不作处理,让小车继续保持原来的状态.在书写程序时我们还要考虑抖动问题,因为可能由于地面的污点,造成程序在瞬间有一个不确定的状态,而这个状态有可能触发单片机执行相应的动作,从而造成小车在循迹的过程中运行不够稳定.所以当我们检测到某一状态时,应该适当的延时,等待状态稳定再执行相应的函数.void xunji unsigned char xj; P1=0xff; xj=P1&0x0f; if|back;if| straight;if|right;if|left;ifstop; stop; beep=1; delay; beep=0; delay; straight; delay; 3.3 电机驱动程序设计电机驱动程序主要包括左转、右转,前进,后退,停止这5个大部分.而左转与右转以根据所偏移轨道的程度再进行细分.void go /直行函数 M1=0; M2=1; M3=0; M4=0; pwm1=1; pwm2=0;/后退void back /后退函数 M1=1; M2=0; M3=0; M4=0;/停止void stop /停止 M1=0; M2=0; M3=0; M4=0;/右转void runright M1=0; M2=1; M3=0; M4=1;/左转void runleft M1=0; M2=1; M3=1; M4=0;3.4 手机遥控程序设计手机遥控采用的是HT9170双音多频解码芯片,该芯片可以将手机发出的DTMF双音多频信号转化为D0-D3四个信号输出.用D0-D3表示不同的高低电平值,从而解码相应的DTMF信号.然后用解码出来的DTMF信号与单片机进行通信.其程序如下:go /手机控制小车部分switch case 0x08: straight; /前进 2P0=0x05; break; case 0x04: left; /左转 4 P0=0x09; break; case 0x0c: right; /右转 6 P0=0x0d; break; case 0x14: stop; /停车 5 P0=0x0b; break; case 0x02: back; /后退 8 P0=0x11; break; case 0x06: P0=0x19; xunji; break; case 0x10:P0=0xf9; break; / 1 case 0x18: P0=0xB0; break; / 3 case 0x1c:P0=0xF8; break; / 7 case 0x12:P0=0x90; break; / 9 case 0x0a:P0=0xC0; break; / 0 if P2=0x00;四、系统调试与仿真5.1.硬件调试做硬件焊接完成之后,我们必须对硬件进行调试,发现其中可能存在的问题,并对其进行改进.硬件调试的方法方法一:用万用用表和其它仪器仪表进行检测方法二:采用软件测试硬件的方法进行检测方法分析:这两种方法各有优点,方法一能直接准确的确定元件的故障所在点,并直接进行故障排除.但是此方法必须对元件进行一一检测,检测的过程非常慢.对于一个大系统和元件比较多的电路来说,此种方法不适合方法二用软件来控制硬件,编写某一电路的控制程序,看这部分的电路的运行结果是否与书的软件控制的效果一致.如果不一致,则证明这部分电路有问题.这种方法可以迅速的判断某一部分电路的故障,对于大系统来说,这种方法可以缩小故障的范围,再对所出现的故障进行排除,节约系统调试的时间.这个数控直流稳压电源系统中,我们把电路分成几个小模块,采取方法一和方法二相结合的测试方法进行测试.测试步骤:1.用万用表对电路中的电源线进行测量,我们先用万用表的蜂鸣档,将万用表的红黑表笔接到电路电源线进行测量,若发现蜂鸣器响,则证明电源线有短路.如蜂鸣器没有响,则证明电源线无短路现象.2.再用蜂鸣档对单片机的电源、晶振、复位等电路进行测量,看有没有连接好.若连接正常,则对系统进行通电.通电前先拨出单片机.3.测量单片机的工作电压.看是否正常,若不正常.再用万用表进行检测,排除电源故障4.若电源工作正常,插上单片机.编程控制,数码管的亮灭,以与数码管按键等,看是否正常.若都正常,测证明电路硬件连接无误.若有故障,再用万用表对出故障的模块进行检测.5.2.软件编写与调试软件调试是建立在硬件调试的基础之上的.调试完硬件之后,我们就开始编写程序,对程序进行调试.我们先画出程序的流程图,然后根据流程图来编写程序程序编写调试方法:方法一:根据流程图,直接编写.方法二:先编写部分模块的程序,再对模块程序进行整合方法分析:方法一中直接根据流程图写,适合小规模的程序,对于大规模的程序不适合,且程序的可移植性差.方法二中可以移植相似的程序,节约程序编写的工作量.对于大规模的程序比较适合.程序的编写也相对比较轻松.可以节约程序的编写时间.在本系统中,我们采取方法二来进行软件的编写与调试程序编写和调试方法:1.建立主程序,定义各端口.2.写出数码管、按键的模块程序3.对各模块程序进行整合4.对整合的模块进行调试5.对最终的程序进行优化5.3 系统仿真本系统仿真采用proteus仿真软件,并结合KEIL C进行联合调试.Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计.是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,20#又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型.在编译方面,它也支持IAR、Keil和MPLAB等多种编译器.丰富的器件库:超过27000种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用.在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程.PROTUES 是单片机课堂教学的先进助手.PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化.前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果.它的元器件、连接线路等却和传统的单片机实验硬件高度对应.这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等.课程设计、毕业设计是学生走向就业的重要实践环节.由于PROTUES提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台.随着科技的发展计算机仿真技术已成为许多设计部门重要的前期设计手段.它具有设计灵活,结果、过程的统一的特点.可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险.相信在单片机开发应用中PROTUES也能茯得愈来愈广泛的应用5.3.1小车仿真图图5-2小车仿真图五、结语:经过前面的努力,我完成智能小车方案的确定,原理图的设计,程序还有仿真设计.通过这次毕业设计,让我的更加扎实的掌握了专业知识,也算是对大学四年所学知识的一次回顾与运用吧.在设计的过程中并非当初想的那样一帆风顺,从硬件到软件,我遇到了各种各样的问题,在解决这些问题的过程中,我意识到了我前面几年专业方面知识欠缺,设计经验不足等问题.这次亲手从设计原理图到最后把仿真做出来,让我觉得实践比原来自己纸上谈兵难多了.这次智能循迹小车的设计,是毕业前对我们大学四年所学知识的一个检验.检验我们的硬件设计能力,软件设计能力,还有查阅资料与人沟通等各方面的能力.同时也将我们大学四年的知识运用到实践中.在设计的过程中,我首先设计硬件,要画原理图.以前的课程中学过protel99se这个画图软件.但是由于长时间没有用,并且那时上这个门时练习不多也不怎么熟练,所以在设计原理图的过程中很吃力,不得不查找protel99se的相关资料,再进行画图.经过几天的查找资料看其操作教程,最后完成了原理图设计.在完成画完图之后,买回电子元器件,开始着手焊接.在编写软件时,为了能尽快把程序调试好,我学习了protues仿真软件,利用这个仿真软件,在线实时调试程序.因为利用Protues在程序编译完成后,就可以直接运行程序.而如果不仿真,则每次要将编译完成的代码通过下载线下载到单片机里面,再通电运行,这样很浪费时间.所以我先在protues仿真软件里面进行仿真,仿真好了之后,再下载到单片机里面进行检验.在写程序时,也遇到了不少问题,自己平时没有经常的练习写程序,所以在面对这样一个系统时,不知道从哪里下手.于是在网上找了相关的例程来学习.经过几天的学习,终于找到一点当年写程序的感觉了.在调试的过程中虽然遇到一些困难,但是通过请教周围的朋友,最终得以解决.完成硬件与软件的设计之后,再回顾此循迹小车的设计,心中感慨万千,从理论到实践,让我明白了,学校里面学了很多很多的东西,但是我们要和实践相结合
展开阅读全文