单片机系统课程设计成绩评定表设计课题:自动避障小车学院名称:电气工程学院专业班级:自动1105学生姓名:学号:指导教师:设计地点:31-630设计时间:指导教师意见:成绩:签名:年月日单片机系统课程设计课程设计名称:自动避障小车专业班级:自动1105学生姓名:学号:指导教师:课程设计地点:31-630课程设计时间:单片机系统课程设计任务书学生姓名专业班级学号题目自动避障小车课题性质产品设计课题来源自拟指导教师主要内容(参数)利用增强版51MCU设计一个自动避障小车,实现以下功能:1、自主判别障碍,自动避开障碍;2、识别出多障碍区和空旷区;3、能在空旷区快速行进,在多障碍区适当速度行进。任务要求(进度)第1天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第2-5天:按照确定的方案设计电路。画出总体电路图,而且选好各个元件的参数、数量类型。然后由原理图生成PCB,用热转印法腐蚀这个电路板。第6-7天:构建硬件系统,并且测试确认都可以正常工作。之后完成机械部分和硬件部分的搭建。第8-11天:编写程序,设计软件,并且开始撰写课程设计报告。第12-13天:整体调试,逐步完善。第14天:完成课程设计报告。主要参考资料【1】张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:国防工业出版社,2004【2】《单片机程序设计实例》清华大学出版社【3】《单片机应用设计200例》【4】《单片机程序设计及应用》李华军,电子工业出版社审查意见系(教研室)主任签字:年月日目录1概述--------------------------------------------------------------41.1研究背景-----------------------------------------------------41.2设计思想及基本功能-------------------------------------------42总体方案设计------------------------------------------------------42.1方案论证-----------------------------------------------------42.2系统框图-----------------------------------------------------52.3总体方案设计-------------------------------------------------63硬件电路设计------------------------------------------------------73.1电源电路-----------------------------------------------------73.2晶振电路-----------------------------------------------------83.3复位电路-----------------------------------------------------83.4键盘电路-----------------------------------------------------83.5显示电路-----------------------------------------------------93.6超声波测距电路----------------------------------------------103.7舵机电路----------------------------------------------------113.8电机驱动电路------------------------------------------------113.9电机转速测量电路--------------------------------------------133.10设计PCB和腐蚀电路板---------------------------------------144系统软件设计-----------------------------------------------------164.1分模块程序设计----------------------------------------------184.2主程序设计--------------------------------------------------205系统调试-------------------------------------------------------206总结-----------------------------------------------------------22参考文献:-------------------------------------------------------23附录A硬件电路图-------------------------------------------------24附录B源程序----------------------------------------------------251概述1.1研究背景科技的发展趋势之一就是让几乎所有的东西具有一定的智能。这样的智能一方面可以避免人的复杂性带来的错误,另一方面,作为人的能力的延伸,快速、便捷地适应环境。本文研究的超声波自动避障小车,就是让小车具有一定的智能,可以作为有人驾驶车辆的一部分,帮助司机及早发现司机还未觉察的危险。另外,可以应用在无人控制系统里,代替人类完成信息接收、处理和判断。那么这样它还有更广阔的应用和发展空间。这个月我国嫦娥三号载着玉兔号月球车踏上了月球,已经开始探索活动。玉兔号月球车可以自动寻找有价值的目标,自动避开障碍物,自动寻找最优路径等等,这些功能在原理上都差不多,只是所用仪器以及控制算法的不同。1.2设计思想及基本功能小车设计的基本思路是:不断扫描前方180°左右的水平面内的物体,根据反馈的距离和方位信息确定前方的地形是开阔还是多障碍。然后根据这些信息通过路径最优算法选择前进方向。小车的基本功能是识别空旷区和多障区;自动避开障碍物;能够在空旷区快速行驶。2总体方案设计2.1方案论证首先是测距方案:方案一:激光测距优点:测速快,适应范围广,精确;不过相对于自动避障小车系统,有点大材小用。激光测距是点对点的测距,一般进行远距离测距比较精确。如是近距离激光测距,必须要涉及到微小时间测量,51MCU无法胜任。因此激光测距方案否定。方案二:超声波测距优点:结构简单,成本低,便于与MCU联机工作。测量范围从5CM到几百米的距离内精度在毫米级。尽管它测量的是点到面的距离,但是定向性满足本小车系统的要求。而且,数据处理简单。可以考虑。方案三:雷达测距不太现实,受到本人技术水平限制,无法驾驭雷达测距系统,此外,雷达应用于较大范围的测量和监控,如果用于本小车,同样涉及到微小时间测量,以及雷达数据处理,51MCU难以胜任。否定!方案四:红外线测距优点:技术难度低,数据处理简单,但是测量开关信号比较好,测量连续信号不够准确。测量的精度有点低。因此不是一种较好的测距方法。综合各因素,选用超声波测距。其次是微控制器的选择:可选的微控制器有:51系列的STC89C52RC、STC12C5A60S2;TI公司的MSP430G2553;飞思卡尔的MC9S12XS128MAL;意法的STM32F407-Discovery;(这些玩儿过一点,而且最小系统板手边都有)根据本系统的需求,需要两路同频率(50hz)的PWM控制两个舵机、一路PWM频率约几千赫兹控制电机、三个个定时器做脉冲捕捉、至少两个外部中断输入、一个并行6800总线接口。除了51系列的两款,其他一片足以胜任。而且对于意法的F407显得大材小用。飞思卡尔的S12比较合适;TI的G2553的引脚有点少(20个),外围电路设计的会复杂一点,成本也会高一点。60S2用两片比较合适;用89C52比较麻烦,两片也不够。根据个人能力,以及时间和进度方面考虑选用60S2,60S2呢,它的资源有:完全兼容51的两个定时器T0、T1和两个外部中断;两路拥有独立波特率的串行口;一个PCA定时器,可产生两路同频的PWM;八个10位精度的AD转换通道;一个硬件SPI接口。2.2系统框图系统框图如图2.2所示单片机电源超声波测距模块舵机模块显示模块电机模块图2.2系统框图2.3总体方案设计两片60S2一个做主机,一个做从机,通过串行口通信,传递数据。主机用到的功能有:(1)、定时器T1和外部中断INT1,作用是:测脉宽,用到的IO是P3^3;P2^0作为超声波测距模块的触发功能引脚;(2)、定时器T0和PCA产生两路同频率的PWM,作用是:T0的溢出率作为PCA的计数脉冲产生50HZ的PWM控制两路舵机。使用T0作为PCA的时钟源,可以通过改变T0的溢出率改变输出的频率。用到的IO是P1^3和P1^4;(3)、外部中断INT0接一个按键。(4)、串口一使用独立波特率发生器,与从机通P3^0和P3^1;(5)、并行数据接口:P0口作为6800并行总线的数据总线P2^7、P2^6和P2^5作为控制总线,分别为:EN(总使能)、R\W(读写控制)、C\D(命令数据控制);地址总线CS接地,一直处于选通状态。从机用到的功能:(1)、串行口一使用独立波特率发生器P3^0和P3^1与主机通讯;(2)、PCA产生一路PWM,P1^2共同控制电机速度。(3)、定时器T0和T1作为编码器脉冲计数和测脉宽使用,测量电机的转速。3硬件电路设计首先是单片机的最小系统如图3.1、3.2所示P1.0/ADC0/CLKOUT21P1.1/ADC12P1.2/ADC2/ECT/RXD23P1.3/ADC3/CCP0/TXD24P1.4/ADC4/CCP1/SS5P1.6/ADC6/MISO7P1.5/ADC5/MOSI6P1.7/ADC7/SCLK8RST/P4.79P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T0/CLKOUT014P3.5/T1/CLKOUT115P3.616P3.717P2.728XTAL.018XTAL.119GND20VCC40P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732EX_LVD/P4.6/RST231ALE/P4.530NA/P4.429P2.627P2.526P2.425P2.324P2.223P2.122P2.021U1*steer1steer2MRSTRTTRECHOKEY1KEY2MXTALINMXTALOUT+5D0D1D2D3D4D5D6D7buzzTRIGC/DR/WENY1CRYSTALC2CAPC3CAPMXTALINMXTALOUTR171K+C51uF+5S3SW-PBMRST图3.1单片机的最小系统P1.0/ADC0/CLKOUT21P1.1/ADC12P1.2/ADC2/ECT/RXD23P1.3/ADC3/CCP0/TXD24P1.4/ADC4/CCP1/SS5P1.6/ADC6/MISO7P1.5/ADC5/MOSI6P1.7/ADC7/SCLK8RST/P4.79P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T0/CLKOUT014P3.5/T1/CLKOUT115P3.616P3.717P2.728XTAL.018XTAL.119GND20VCC40P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732EX_LVD/P4.6/RST231ALE/P4.530NA/P4.429P2.627P2.526P2.425P2.324P2.223P2.122P2