数不样,可根据接收到的红外线的强弱判断是否到达或者偏离黑带。通过采用反射式光电检测电路对跑道上的黑线进行检测,并用两个遮光套管套住发光管和接收管以定的角度贴近跑道,这样可以消除外界光线的干扰,信号检测如图。图信号检测.行程计算本设计采用红外检测,因为它具有定位精度高可靠性强等优点,故采用红外光电码盘测速方案。具体电路图如图所示。安装在电动机轴上的光栅会随着电动机的转动而转动,红外发光二极管和红外三极管分装在光栅两侧,当红外发光二极管点亮时,三极管就会接收到二极管的红外信号。这样当电机转动起来时,光栅随着电机转动,三极管就会不断接收到红外信号。然后将这些信号传送至单片机,经过计数器的计数就可计算出行车距离。通过车轮转圈,记录个脉冲,储存在计数器中,进行二进制乘法及码转换以获得准确里程。则里程脉冲数车轮周长。图行程检测.系统原理最初启动时,由按键启动小车,复位。将小车放置在黑线跑道上,由外围电路的超声波传感器和红外光电传感器进行检测,检测小车是否在黑道轨道上行驶,是否偏离轨道,然后将检测到的数据送至单片机计数显示,单片机经过数据处理后,经过脉宽调速技术,控制小车的实时运动,由数码管显示小车的行驶路程和时间,这样就提高了小车的总体性能。如下图。电动小车模块控制器模块车头传感器模块图系统原理图第章硬件设计系统硬件以为核心,包括个模块电路电动驱动模块信号检测模块单片机控制处理模块和显示模块。.电动驱动模块电动驱动采用的是高低电平进行信号控制。当输入时是截止状态,当输入时,电机正转,当输入时,电机反转,但不能高电平同时输入其中代表高电平,代表低电平。利用改变脉冲宽度控制电机的转速,使具有不同的转速,分高速和低速两种状态。.信号检测模块信号检测模块主要是由红外发光二极管超声波传感器红外三极管和光敏二极管构成。当小车在黑线上行驶时输出高电平,在白纸上时输出低电平。.单片机控制处理模块用光电传感器检测不同的信号,并经过单片机对信号进行处理,配合脉宽调速程序,使其控制电机的正反转,实现加速减速和转向。通过单片机内部定数器计数器进行定时计数,再用单片机串行输入输出口进行显示控制。这种控制系统电路成熟工作稳定容易实现控制。.显示模块此设计的显示模块主要是往返时间和行驶里程的显示。里程显示和往返时间的显示利用的是位数码管的共用,采用数码管动态扫描的方式。行驶里程显示用霍尔集成块作检测头,当磁钢经过时输出个低电平。.最小应用系统设计般最小系统都具有载入程序,在线调试,复位,数据传输和数字模拟信号之间的相互转换等功能。最小系统硬件般包括下载口,扩展端口,串口和相关功能的芯片组成。是片内有的单片机,因此,这种芯片构成的最小系统简单﹑可靠。在用单片机构成最小应用系统时,将时钟电路和复位电路接在单片机接上构成最小应用系统。以实现单片机片上硬件功能,包括,对左电动机组右电动机组.左下方传感器正前方传感器右下方传感器的控制和与计算机串口进行通信等功能,并且方便今后对该单片机系统的直接使用和扩展。时钟电路时钟电路可以简单定义如下.就是产生象时钟样准确的振荡电路。.任何工作都按时间顺序。用于产生这个时间的电路就是时钟电路。时钟电路般由晶体震荡器晶震控制芯片和电容组成。片内设有个由反相放大器所构成的振荡电路,和分别为振荡电路的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式时钟电路是在和引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体可以在.之间选择,电容值在之间选择,电容的大小可以起到频率微调作用。如图。外部时钟电路是接地,接外部振荡器。对外部振荡信号无特殊要求,只要保证脉冲宽度,般采用频率低于的方波信号。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。为了提高温度稳定性,应采用电容。图内部时钟电路图复位电路的复位是由外部的复位电路来实现的。单片机有个用于构成内部振荡器的反相放大器,和分别是放大器的输入输出端。石英晶体和陶瓷谐振器都可以用来起构成自激振荡器。从外部时钟源驱动器件的话,可以不接,而从接入。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。复位电路通常采用上电自动复位和手动复位两种方式。在输入端出现高电平时实现复位和初始化。在振荡器运行的情况下,要实现复位操作,必须使引脚至少保持两个机器周期个振荡周期的高电平。在第二个机器周期内执行内部复位操作,以后每个机器周期重复次,直至端电平变低。复位期间不产生及信号。内部复位操作使堆栈指示器为,各端口都为,特殊功能寄存器都复位为,但不影响的状态器.端口定义定义红外接收端口完成红外接收端口的定义定义延时子程序定义延时时间变量开始进行延时循环子程序返回定义小车控制子程序将电机正向电平置低将电机反向电平置低将电机正向电平置低将电机反向电平置低关闭前方左侧指示灯关闭前方右侧指示灯将此状态延时段时间判断小车控制指令类型前进判断是否是前进将电机正向端口置高将电机正向端口置高数码管显示前进状态退出判断后退判断是否是后退将电机反向端口置高将电机反向端口置高数码管显示后退状态将前方右侧指示灯置低亮将前方左侧指示灯置低亮退出判断左转判断是否是左转将电机反向端口置高将电机正向端口置高数码管显示左转状态将前方左侧指示灯置低亮退出判断右转判断是否是右转将电机正向端口置高将电机反向端口置高数码管显示右转状态将前方右侧指示灯置低亮退出判断默认情况下的判断直接退出判断定义红外定时器子程序向定时器定时间寄存器填入高八位值向定时器定时间寄存器填入低八位值自增变量加定义红外接收中断子程序将定时计数器关闭!将红外接收指示灯状态取反判断接收到的数据是判断到就将当前位写将当前位向左移动位判断接收到的数据是将当前位写将当前位向左移动位将红外接收位计数器加判断是否接收到位数据是位数据时,则将数据暂存到高位变量中判断是否接收到位数据关闭红外定时器关闭红外外部中断打开定时计数器定时时间间隔变量清零判断用户码是否正确取出接收到的低八位数据判断低八位数据的值下列那位电源说明按下了电源键将小车停止将运行标志位置返回说明按下数字键数码管显示数字将小车置于前进状态返回说明按下了数字键数码管显示数字将小车置于后退状态返回说明按下了数字键数码管显示数字将小车置于左转状态返回说明按下了数字键数码管显示数字将小车置于右转状态返回说明按下了数字键数码管显示数字返回说明按下了数字键数码管显示数字返回说明按下了数字键数码管显示数字返回说明按下了数字键数码管显示数字返回说明按下了数字键数码管显示数字返回说明按下键数码管显示数字返回将接收到的数据清零将接收计数器清零将接收高低数据变量清零返回将定时器计数器清零打开定时器中断定义串口通信子程序定义串口数据接收变量判断是否接收数据。当引脚返回低电平以后,从地址开始执行程序。对于加电复位电路,加电瞬间,端的电位与相同,随着电路充电电流的减小,端的电位逐渐下降。只要端保持以上的高电平就能使单片机有效地复位。复位电路中的参数通常由实验调整。当振荡频率选用,使选,选便能可靠地实现加电复位。若采用电路接施密特电路的输入端,施密特电路输出端接单片机和外围电路的复位端,即可使系统可靠地同步复位。第章软件设计系统软件设计说明在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每部分叫做个模块。所谓“模块”,实质上就是为完成功能所需的段程序或子程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的特点是模块相对独立,功能单,编写相对简单,可以独立编写调试可集体开发,缩短开发周期。不同的模块可以由不同的人员开发,最终能够合成完整的程序开发出的模块,可在不同的应用程序中多次使用,减少重复劳动,提高开发效率测试更新以模块为单位进行而不会影响其他模块。本系统软件采用模块化程序设计,由主程序中断子程序显示子程序等构成。.主程序设计主程序清单见附表录。软件流程如图流程图所示图流程图.显示子程序设计程序清单见附录。避障子程序设计程序清单见附录。.可编程逻辑器件可编程逻辑器件是公司研制的种电可擦除的可重复编程的低密度器件。以最大.的传输延迟时间,结合高性能的工艺与电可擦悬浮栅工艺可为市场提供最高速度的性能。高速擦写时间允许快速和有效的重复编程。依靠输出逻辑宏单元允许用户来构建,这种通用的结构提供了最大的设计灵活性。作为的许多可能结构形式中最重要的个子集,结构被列在宏单元描述部分的表里面。借助于全部功能熔丝图参数的兼容性能够仿真任何种结构。因此,实现了所有的产品的现场可编程性和可操作性。此外,规定次的擦写循环和超过年的数据保持能力。技术特性•高性能工艺最大传输延迟.时钟输入到数据输出最大.先进的工艺•功耗比双极型减少到低功率器件上的典型值为功率器件上的典型值为•对所有引脚有效上拉•工艺可重组合逻辑电路可重编程单元测试合格率高速电可擦数据保留年•个输出逻辑宏单元复杂逻辑设计的最大灵活性可编程输出极性具有全部功能熔丝图参数兼容性的仿真引线的设备•所有寄存器的预载和开电源复位的功能可测性•应用包括将接收到的数据放入暂时变量判断接收到的数据是否小于将接收到的数据通过数码管显示出来将串口数据置于小于状态向电脑返回当前接收到的数据清除接收中断标志位判断是否是发送中断清除发送中断标志位主程序入口定义可执行标志位变量将接收变量数值初始化将计数器变量数值初始化将定时器计数器初始化将高低计数器初始化对闪灯数据进行初始化选择定时器为两个位定时器对定时器进行计数值进行初始化同上,时间大约为同意开始定时器同意开启外部中断设定外部中断为低边缘触发类型设置串口模式为位数据设置定时计数器模式给定时器高八位初始化初值给定时器低八位初始化初值开启定时器开启串口通信功能开启接收中断标志总中断开启将小车置于前进状态数码管显示数字程序主循环闪灯总延时判断光敏电阻的状态将前方右侧指示灯点亮将前方左侧指示灯点亮在光敏电阻为不通的状态下将前方右侧指示灯熄灭将前方左侧指示灯熄灭判断延时期间是否有红外信号输入将可执行标志位置判断是否有按下将小车置于停止状态改变小车运行状态标志位!改变按键标志位跳转到标签判断是否有按下将小车置于前进状态改变小车运