《循迹小车智能预测控制方法研究毕业论文.doc》由会员分享,可在线阅读,更多相关《循迹小车智能预测控制方法研究毕业论文.doc(35页珍藏版)》请在三一办公上搜索。
1、题 目:循迹小车智能预测控制方法研究姓 名: 学 号: 系 别: 物理与机电工程学院 专 业: 自动化 年级班级: 2010级1班 指导教师: 2014年5月18日毕业论文(设计)作者声明本人郑重声明:所呈交的毕业论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全了解有关保障、使用毕业论文的规定,同意学校保留并向有关毕业论文管理机构送交论文的复印件和电子版。同意省级优秀毕业论文评选机构将本毕业论文通过影印、缩印、扫描等方式进行保存、摘编或汇编;同意本论文被编入有关数据库进行检索和查阅。本毕业论
2、文内容不涉及国家机密。论文题目:循迹小车智能预测控制方法研究作者单位:物理与机电工程学院作者签名: 年 月 日目 录摘要1引言21.绪论22.方案设计与论证22.1循迹模块32.2控制模块32.3时钟模块设计52.4复位模块设计62.5驱动模块72.6反馈模块72.7机械系统82.8电源系统83.硬件设计93.1信号采集模块93.2电源模块103.3驱动模块103.4总体设计113.5预测控制算法114.软件设计114.1总体程序流程图114.2总程序134.3软件仿真165.结论17参考文献18附录18附录1:循迹小车实物图19附录2:程序代码20致谢31循迹小车智能预测控制方法研究摘 要:
3、本设计主旨就现阶段已经实践的智能车基础上开发,原有的在运行中不太稳定,添加预测功能使其更加平稳快速。主要有四个模块,分别是控制模块、信息采集模块、驱动模块和反馈模块。信息采集模块用以对黑线路况检测。控制模块主要采用STC89C52单片机为控制芯片。电机驱动模块采用L298N专用电机驱动芯片,使整个系统有更好的稳定性。反馈模块主要由霍尔传感器与单片机和信息采集模块共同完成。信息采集模块将采集到的路况信息传入STC89S52单片机,当小车行驶速度有偏差或者在将要转弯时,霍尔传感器把即时速度反馈到单片机里,先由PID算法程序处理偏差,单片机根据处理结果再调整,传输信息,使舵机做出相应调整,更加平稳快
4、速的转弯行驶,实现预测循迹功能。关键词:PID;循迹智能小车;STC89C52单片机;L298NResearch on the Control Method ofRobotIntelligentPredictionAbstract: This design theme is already practice at the present stage of smart car based on the development, the original is not so stable in running, add the prediction function to make it more
5、 steady and rapid. There are mainly four modules, respectively is control module, information collection module, drive module and feedback module. Information acquisition module for the black line traffic detection. Control module mainly adopts STC89C52 microcontroller to control chip. Motor drive m
6、odule adopts special motor L298N drive chip, make the whole system has better stability. Feedback module is mainly composed of hall sensor and single-chip computer and information acquisition module. Information acquisition module of traffic information collected into the STC89S52 microcontroller, w
7、hen the small car speed deviation or in turn, the hall sensor in the instant speed feedback to the single chip microcomputer, first by the PID algorithm processing deviation, monolithic integrated circuit to adjust according to the results of the processing, transmission information, make the steeri
8、ng gear accordingly, more steady and rapid turning drive, realize forecast tracking function. Key Words: PID; Algorithm Smart Car; STC89C52 Microcontroller; L298N引言目前,在企业生产技术不断提高、对自动化技术要求不断加深的环境下,智能车辆以及在智能车辆基础上开发出来的产品已成为自动化物流运输、柔性生产组织等系统的关键设备。世界上许多国家都在积极进行智能车辆的研究和开发设计。智能小车,是一个集环境感知、规划决策,自动行驶等功能于一体的综
9、合系统,它集中地运用了计算机、传感、信息、通信、导航及白动控制等技术,是典型的高新技术综合体。国内外的许多大学及研究机构都在积极投入人力、财力研制开发针对特殊条件下的安全监测系统1。其中包括研究使用远程、无人的方法进行实现,如机器人、远程监等。无线传输的发展使得测量变得相对简单而且使得处理数据的速度变得很快甚至可以达到实时处理。1. 绪论21世纪循迹智能小车得到很快发展,在玩具智能车以及其相关应用领域都有了实质性的跨越。智能车大致具有避障、循迹、检测贴片、避崖、寻光入库等基础性能,这几届的电子设计竞赛智能循迹小车在声控系统方面有了进步。比较出名的飞思卡尔智能小车更是走在前列2。本设计具有预测功
10、能,在原有出现偏差就调整的基础上,添加PID算法控制,在出现偏差时,先由PID算法处理偏差,再根据处理结果舵机进行相应的调整。用以避免小车在运行中出现误差和故障而不稳定,有一定的实用价值。通过这次设计,把自己所学习的理论知识与实践紧密结合在一起,从实践中加深对单片机的认识与理解,也从中找到理论的不足之处,具有一定意义。2. 方案设计与论证根据要求,方案确定在已经实践过的智能车基础上,加装光电检测器和霍尔传感器,达到对智能车的方位、运行速度、实时运动状态的测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。这种方案能实现对电动车的运动状态进行实时控制预
11、测,灵活、可靠、稳定,可满足对系统的各项要求3。2.1 循迹模块小车循迹原理是小车在贴有黑胶带的地板上行驶,由于黑色和白色对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”黑线。该模块采用比较普遍简单的红外探测器。红外探测器,是将入射的红外辐射信号转变成电信号输出的器件。红外辐射是波长介于可见光与微波之间的电磁波,人眼察觉不到。要察觉这种辐射的存在并测量其强弱,必须把它转变成可以察觉和测量的其他物理量。一般说来,红外辐射照射物体所引起的任何效应,只要效果可以测量而且足够灵敏,均可用来度量红外辐射的强弱。现代红外探测器所利用的主要是红外热效应和光电效应。这些效应的输出大都是电量,或者
12、可用适当的方法转变成电量。 在这里我采用TCRT5000型光对管4。(电路图如图1)图1 红外对光管原理2.2 控制模块根据设计要求,此设计属于多输入量的复杂程序控制问题。据此,拟定了两种方案,并进行了对比论证。如下:(一)采用PLC作为主控系统,PLC虽然性能稳定但是价格昂贵,为此,我们不采用该种方案,进而提出了第二种设想。(二)整体系统采用单片机来实现,对运行中的小车进行控制,依此达到特定的功能。对整体结构进行分析,最主要的还是小车的自动控制的实现,在这方面,单片机的优点就显现出来即快速、容易、易操作。如此,单片机可以发挥出其相应的很多优势,廉价、较强的控制能力以及寻址能力。所以,这是一种
13、比较符合的方案5。根据该设计需要具有多开关量输入的复杂程序控制系统,擅长对多开关量处理的标准单片机,因此不能用简单I/O接口和小体积的程序存储器单片机,D/A、A/D功能也没有必要选择。经过分析,我选定了STC89C52单片机(如图)作为本设计的主控装置,51系列单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余。在综合考虑了传感器、两部电机的驱动等诸多因素后,我们决定采用一片单片机,充分利用STC89C52单片机的资源。2.2.1 STC89C52简介STC89C52单片机是利用CMOS工艺和高密度非易失性存储器制造而成,功能强、灵活性高、低电压、性
14、能好、价格合理,封装如图,其内部结构如图2。图2 STC89C52封装STC89C52的主要特性(1)8K字节程序存储空间(2)512字节数据存储空间(3)内带2K字节EEPROM存储空间(4)可直接使用串口下载(5)AT89S52单片机(6)8K字节程序存储空间(7)256字节数据存储空间(8)自带2KB的EEPROM存储空间STC89C52单片机属于51&52系列单片机,没有多大区别,只是内部多了一个EEPROM空间,可以串口下载程序,指令执行速度快一倍。结构框图如图3时钟电路中央处理器CPUROMRAM定时/计算器ROM串行接口中断系统PP0 P1 P2 P3 TxD RxD INT0
15、INT1图3 STC89C52结构框图2.3 时钟模块设计时钟信号作为单片机各种操作时间基准,通常有两种方式:内部振荡方式和外部振荡方式。由于内部振荡方式得到的信号比较稳定,所以选择内部振荡。AT89C51单片机内部的振荡器由高增益反相放大器构成,输入端为XTAL1,输出端为XTAL2,在两端跨接石英晶体和电容C1、C2,就可以构成我们需要的稳定的自激振荡器了。振荡脉冲的频率范围为fOSC=024MHz,在本次设计中采用的是12MHz的晶振,所以振荡信号频率为12MHz,从XTAL2端输入到片内的时钟发生器上6。通常C1和C2取30pF左右,对频率起到稳定和微调作用。2.4复位模块设计复位操作
16、使单片机系统各部件处于确定的初始状态,并从初始状态开始工作。常见的的有上电复位和按键复位,本系统采用上电复位。AT89C51单片机的复位信号从RST引脚输入,进入到片内的施密特触发器,复位信号高电平有效,有效时间持续24个振荡周期即两个机器周期。其工作原理是在加电瞬间电容通过充电来实现复位操作。电容常取C=30F,电阻R=1000。蜂鸣器作为声音的输出设备,常见的有:有源蜂鸣器和无源蜂鸣器。有源蜂鸣器的内部有振荡电路,加电源后就可以发出声音,缺点是只能发出单一的音调。而电子琴需要发出不同的音调,无源蜂鸣器可以满足。本设计采用无源电磁式蜂鸣器。无源蜂鸣器的理想信号是方波,交流信号在其内部产生磁通
17、,交变的磁通通过与磁环恒定磁通的叠加,使钼片按照给定的方波信号频率振动并促使共振腔发声6。音频驱动电路通常选用晶体管放大电路,本次设计中选用S8550晶体管,它是一种PNP型硅三极管。当S8550处在放大状态即发射结正偏,集电结反偏,三个电极IE(发射极电流)、IB(基极电流)、IC(集电极电流)在电流上满足:(1)发射极电流受基极电流的控制,这种控制作用称为晶体管的电流放大作用7。在电路中将PNP管的基级串上电阻后与单片机的P3.5口相连,发射极接蜂鸣器的负极,正极接电源,集电极接地,电路图如图9所示。P3.5口不断地输出频率不同的方波信号,交流信号经三极管放大后,通过蜂鸣器就可以发出不同的
18、音调。其中三极管S8550参数如下:(1)集电极最大电流ICM=-1.5V。(2)特征频率fT=100MHz。(3)反向电压最高值VCEO=-2.5V。(4)最大电流放大系数hFE=8530010。2.5 驱动模块电机驱动模块拟用两种解决方案,分别如下:(1)采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。(2)采用功率三极管作为功率放大器的输出控制直流电机。线性驱动应用是一种最为简单和最为直接的驱动应用方式,其电路简单、体积小巧,能满足一些特定的场合应用较多。采用由达林顿管组成的H型桥
19、式电路(如图4)。采取由单片机控制达林管,让其在能够调节的占空比开关状态下运行。这种电路由于工作在管子的饱和截止模式下,拥有高效率的特性,H型桥式电路保证了简单的实现对转速和方向的控制功能,图4 H桥式电路实际使用的时候,用分立元件制作H桥是很麻烦的,好在现在市面上有很多封装好的H桥集成电路,接上电源、电机和控制信号就可以使用了,在额定的电压和电流内使用非常方便可靠。比如常用的L293D、L298N、TA7257P、SN754410等。现市面上有很多此种芯片,我选用了L298N11。2.6 反馈模块单片机程序中PID算法的应用和霍尔传感器测速的应用。PID控制已成为智能自动化控制的研究中最为活
20、跃而又富有成果的领域7。从过去的传统与现代控制技术的应用发展历史来讲PID控制研究与应用已经得到十分迅速地发展。然而,在很多新兴的模糊控制技术方法不断涌现人们视野之后,人们更加清楚地认识到了模糊控制研究中所面临的众多理论问题己经成为模糊PID控制技术广泛研究应用的严重障碍。例如,PID控制技术还尚未在工业生产过程控制中得到如同日常家电产品一样的推广和应用,在这其中包含有如何解决“控制性能优于传统PID控制器的模糊控制器设计”问题。世界各先进国都曾先后做过对锅炉、炼钢炉、蒸汽机以及汽轮发电机组等PID控制的计算机研究和仿真,他们也进行了PID控制算法和经典的传递函数算法之间的计算机研究仿真比较。
21、所有结果表明:PID控制比传统的经典控制要稳定,效果也更加良好。世界各国的优秀科技工作者采用电子计算技术和PID控制算法,对工业生产过程控制进行了大量的仿真研究和试验。并且成功的把仿真内容准确的应用于实际中去,研制出了非常多成功的PID控制应用开发系统8。本系统中,在小车出现偏差时由图像采集模块将信息传给单片机,不进行立即调整,由PID程序对偏差进行微分积分以及相应的比例算法进行处理,再根据处理结果对小车进行调整。霍尔传感器一般由霍尔元件和磁钢组成,当霍尔元件和磁钢相对运动时,就会产生脉冲信号,根据磁钢和脉冲数量就可以计算转速,进而求出车速。这样使小车具有前进和后退的检测功能,并用指示灯显示;
22、记录小车的行驶时间,实时计算小车的行驶速度,根据路况,调整速度。出现偏差,及时反馈控制模块进行调整。2.7 机械系统本题目要求小车的机械系统稳定、快速、灵活、简单,因此采用前驱,后轮采用两个万向轮。小车上装有电池、电机、电子器件等,使得电机负担较重。为使小车能够顺利启动,且运动平稳,在直流电机和轮车轴之间加装了三级减速齿轮。2.8 电源系统采用4节普通1.5V干电池单电源供电,但6V的电压太小,不同时给单片机与与电机供电。电机在运行过程中产生的反向电动势可能会影响单片机的正常工作。所以决定独立供电,即单片机控制系统和光对管与电机分开供电。由于单片机为低功元件而可采用普通1.5v电池(共4节)供
23、电,电机为大功耗器件因而单独采用(900mAh)供电。3.硬件设计硬件总体设计如图5:反馈模块按键与显示驱动电机转向舵机图像采集模块单片机STC89C52图5 总体结构图本系统是基于Freescsle公司的16位单片机的智能车控制系统,综合了传感器技术、自动控制技术。中央处理器采用STC89C52,控制所有的外围设备及传感器系统协调运行。3.1 信号采集模块为了防止因传感器太少引起的误动作,因而在车体前段安装了5个红外光对管(如图6),有效的减小了误动作的发生,减小了小车冲出跑道的几率。图6 5路光对管3.2 电源模块本模块主要是对采集信号进行分析,同时控制电机起停、正反转。,该模块包括电源模
24、块,串口电平转换模块,以及I/O口扩展模块。电源模块为系统提供稳定的电源,串口电平转换模块可以将电脑与单片机串口相连从而实现程序的下载以及串口打印debug调试功能。I/O扩展排针将单片机的管脚引出,可以实现灵活的扩展功能。3.3 驱动模块本模块主要是对单片机传送过来的高低电平信号进行处理,控制电机起停、正反转。原理图如图7:图7 驱动模块原理图3.4 总体设计智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,调制前面两个轮子的转速起停从而达到控制转向的目的,后轮是万向轮,起支撑的作用。将循迹光对管分别装在车体下的左右。当车身下左边的传感器检测到黑线时,主控芯片控制左轮电机停止,车向左修正,
25、当车身下右边传感器检测到黑线时,主控芯片控制右轮电机停止,车向右修正。由于系统采用模块化结构,各个模块之间采用杜邦线连接。3.5 预测控制算法PID控制已成为智能自动化控制的研究中最为活跃而又富有成果的领域,从过去的传统与现代控制技术的应用发展历史来讲PID控制研究与应用已经得到十分迅速地发展。该小车采用PID算法镶嵌到智能小车单片机程序中。用红外光来采集道路图像。通过红外光的场信号与行信号传送给单片机的ETC模块,利用中断控制图像采集,并将采集的8位数据通过数据接口传给单片机4。PID控制设计:模糊逻辑整定控制器的表达式为(2) 其中,为校正速度量,其值随校正次数增加而减小。为了简单可以将它
26、们均设成常数。(3) 注意,这里求和式子不是全部的PID控制器积分项,正常的应该和采样周期T相乘,为简单起见,将变量中,上式同样对进行处理。这样可以推导出状态方程为:(4)这时,式中的控制量可以改写成(5)4.软件设计4.1 总体程序流程图如图8:开始光电开关扫描右转前进左边扫描右边扫描左转前面障碍物或偏差霍尔传感器测速或PID算法处理调整后执行循迹子程序到达终点系统初始化NNNYYY前边扫描图8 程序流程图4.2总程序PID控制算法程序:#include#includetypedefunsignedcharuint8;typedefunsignedintuint16;typedefunsig
27、nedlongintuint32;/*函数声明*/voidPIDOutput();voidPIDOperation();/*/typedefstructPIDValueuint32Ek_Uint323;/差值保存,给定和反馈的差值uint8EkFlag_Uint83;/符号,1则对应的为负数,0为对应的为正数uint8KP_Uint8;uint8KI_Uint8;uint8KD_Uint8;uint16Uk_Uint16;/上一时刻的控制电压uint16RK_Uint16;/设定值uint16CK_Uint16;/实际值PIDValueStr;PIDValueStrPID;uint8out;/
28、加热输出uint8count;/输出时间单位计数器/*PID=Uk+KP*E(k)-E(k-1)+KI*E(k)+KD*E(k)-2E(k-1)+E(k-2);(增量型PID算式)函数入口:RK(设定值),CK(实际值),KP,KI,KD函数出口:U(K)/PID运算函数*/voidPIDOperation(void)uint32Temp3;/中间临时变量uint32PostSum;/正数和uint32NegSum;/负数和Temp0=0;Temp1=0;Temp2=0;PostSum=0;NegSum=0;if(PID.RK_Uint16PID.RK_Uint16)/设定值大于实际值否?if
29、(PID.RK_Uint16-PID.RK_Uint1610)/偏差大于10否?PID.Uk_Uint16=100;/偏差大于10为上限幅值输出(全速加热)elseTemp0=PID.RK_Uint16-PID.CK_Uint16;/偏差PID.Ek_Uint321)/E(k)E(k-1)否?Temp0=PID.Ek_Uint320-PID.Ek_Uint321;/E(k)E(k-1)PID.EkFlag_Uint80=0;/E(k)-E(k-1)为正数elseTemp0=PID.Ek_Uint320-PID.Ek_Uint321;/E(k)Temp2)/E(k-2)+E(k)2E(k-1)否
30、?Temp2=(PID.Ek_Uint320+PID.Ek_Uint322)-Temp2;/E(k-2)+E(k)2E(k-1)PID.EkFlag_Uint82=0;/E(k-2)+E(k)-2E(k-1)为正数elseTemp2=Temp2-(PID.Ek_Uint320+PID.Ek_Uint322);/E(k-2)+E(k)0/*KD*E(k-2)+E(k)-2E(k-1)*/if(PID.EkFlag_Uint82=0)PostSum+=Temp2;/正数和elseNegSum+=Temp2;/负数和/*U(K)*/PostSum+=(uint32)PID.Uk_Uint16;if(
31、PostSumNegSum)/是否控制量为正数Temp0=PostSum-NegSum;if(Temp0100)/小于上限幅值则为计算值输出PID.Uk_Uint16=(uint16)Temp0;PID.Uk_Uint16=(uint16)Temp0;elsePID.Uk_Uint16=100;/否则为上限幅值输出else/控制量输出为负数P,则输出0(下限幅值输出)PID.Uk_Uint16=0;elsePID.Uk_Uint16=0;/*函数入口:U(K)函数出口:out(加热输出)/PID运算植输出函数4.3 软件仿真4.3.1原理图如图9: 图9 仿真原理图5结论根据仿真图和实际所购买
32、的元器件清单进行安装。通过改变循迹板滑动变阻器大小来调试红外对光管的灵敏度,通过改变延时程序来改变速度的大小。经调试实践,小车运行良好。本毕业论文已经出现在市面上的智能车的基础上,采用PID算法以及模糊控制对智能小车进行预测控制,加装光电检测器,能够对智能车的运行状况、运行速度进行实时测量,同时把扫描出的信息送到单片机里进行分析处理,再由单片机里PID算法进行相应的比例、积分、微分处理,根据处理结果对小车进行智能控制,达到让小车在轨道上运行时出现偏差或者遇到转弯处提前做到预测控制,可以使智能小车平稳快速的沿着轨道转弯,避免冲出轨道、在原地打滑等不稳定因素。针对循迹小车进行智能预测控制功能的设计
33、与开发,本论文主要研究了以下几方面内容:(1)单片机最小系统研究;(2)智能预测控制程序设计;(3)循迹小车智能预测控制功能的设计与开发。根据实践结果,加有预测功能的智能小车,在循迹避障等环节存在一定的优势。抛开了以前小车循迹遇到障碍时直接调整小车偏差,中间加一个PID算法,使其出现偏差时先由PID对其处理分析,再做调整,如此,小车在运行过程中更加平稳快速。参考文献1 吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用M.北京:清华大学出社,2005.2 何利民.MCS-51系列单片机应用系统设计系统配置与接口技术M.北京:北京航空航天大学出版社,2003.3 诸静等.智能预测控制及其应用M.上
34、海:浙江大学出版社,2002.4 黄湘云,朱学峰.预测控制的研究现状及展望J.石油化工自动化,2005,(2): 27-31.5 席裕庚,耿晓军,陈虹.预测控制性能研究的新进展J.控制理论与应用,2000,17(4): 469-475.6 李军.51系列单片机高级实例开发指南M.北京:北京航空航天大学出版社,2004.7 王琰,郭燕.基于C51单片机的智能循迹小车设计与实现J.南京化工学院自动控制系,2013,8(14): 20-13.8 彭仁明.智能小车控制系统的设计M.绵阳师范学院,2009,11.9 李伟龙.智能循迹小车设计M.西北民族大学,2013,8(2): 29-15.10 刘金琨
35、.先进PID控制MATLAB仿真M.北京:电子工业出版社,2004.11 王伟.广义预测控制理论及其应用M.科学出版社,1998.附 录附录1:循迹小车实物图附录2:程序代码#include/包含51单片机相关的头文件sbitLeftLed=P20;/定义前方左侧指示灯端口sbitRightLed=P07;/定义前方右侧指示灯端口sbitFontLled=P10;sbitLeftIR=P35;/定义前方左侧红外探头端口sbitRightIR=P36;/定义前方右侧红外探头端口sbitFontIR=P37;/定义前方正前方红外探头端口sbitM1A=P00;/定义左侧电机驱动A端sbitM1B=
36、P01;/定义左侧电机驱动B端sbitM2A=P02;/定义右侧电机驱动A端sbitM2B=P03;/定义右侧电机驱动B端sbitB1=P04;/定义语音识识别传感器端口sbitSB1=P06;/定义蜂鸣器端口voidtingzhi()M1A=0;/将M1电机A端初始化为0M1B=0;/将M1电机B端初始化为0M2A=0;/将M2电机A端初始化为0M2B=0;voidqianjin()M1A=1;M1B=0;M2A=1;M2B=0;voidhoutui()M1A=0;M1B=1;M2A=0;M2B=1;voidzuozhuan()M1A=0;M1B=1;M2A=1;M2B=0;voidyouz
37、huan()M1A=1;M1B=0;M2A=0;M2B=1;voiddelay_nus(unsignedinti)/延时:i=12,i的最小延时单12usi=i/10;while(-i);voiddelay_nms(unsignedintn)/延时nmsn=n+1;while(-n)delay_nus(900);/延时1ms,同时进行补偿voidControlCar(unsignedcharConType)/定义电机控制子程序tingzhi();switch(ConType)/判断用户设定电机形式case1:/前进/判断用户是否选择形式1qianjin();break;case2:/后退/判断
38、用户是否选择形式2houtui();/M2电机反转break;case3:/左转/判断用户是否选择形式3zuozhuan();/M2电机正转break;case4:/右转/判断用户是否选择形式4youzhuan();/M1电机正转/M2电机反转break;case8:/停止/判断用户是否选择形式8tingzhi();break;/退出当前选择voidmain()/主程序入口bitRunFlag=0;/定义小车运行标志位/RunShow=0;/初始化显示状态ControlCar(8);/初始化小车运行状态while(1)/程序主循环Start:LeftLed=LeftIR;/前方左侧指示灯指示出
39、前方左侧红外探头状态RightLed=RightIR;/前方右侧指示灯指示出前方右侧红外探头状态FontLled=FontIR;SB1=FontIR;if(FontIR=0)/三个红外检测到黑线,就前进ControlCar(2);/左侧没有信号时,开始向右转一定的角度delay_nms(2000);ControlCar(3);delay_nms(1500);gotoNextRun;if(FontIR=1)ControlCar(1);/右侧没有信号时,开始向左转一定的角度delay_nms(10);gotoNextRun;gotoStart;NextRun:ControlCar(1);红外遥控程
40、序:#include/包含51单片机相关的头文件#defineuintunsignedint/重定义无符号整数类型#defineucharunsignedchar/重定义无符号字符类型ucharcodeLedShowData=0x03,0x9F,0x25,0x0D,0x99,/定义数码管显示数据0x49,0x41,0x1F,0x01,0x19;/0,1,2,3,4,5,6,7,8,9ucharcodeRecvData=0x19,0x46,0x15,0x44,0x43,0x40,0x0D,0x0E,0x00,0x0F;ucharIRCOM7;staticunsignedintLedFlash;/定义闪动频率计数变量unsignedcharRunFlag=0;/定义运行标志位bitEnableLight=0;/定义指示灯使能位/*完成基本数据变量定义*/sbitS1State=P10;/定义S1状态标志位sbitS2State=P11;/定义S2状态标志位sbitB1State=P12;/定义B1状态标志位sbitIRState=P13;/定义IR状态标志位sbitRunStopState=P1