基于单片机AT89C52智能循迹小车的设计.doc
报告编码:安阳师范学院本科学生毕业论文基于单片机AT89C52智能循迹小车的设计作 者 李伟利 系 (院) 物理与电气工程学院 专 业 电子信息工程 年 级 2005 级 学 号 05181005 指导老师 李建法 日 期 2009.6.6 学生诚信承诺书本人郑重承诺:所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师教育机构的学位或证书所使用过的材料。所有合作者对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。签名: 日期: 论文使用授权说明本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。签名: 导师签名: 日期: 基于AT89C52单片机智能循迹小车的设计李伟利(安阳师范学院 物理与电气工程学院, 河南 安阳 455002)摘 要:本系统采用AT89C52为核心进行设计,合理利用了该芯片上丰富的资源,实现小车检测,寻迹,控制等功能,同时,系统对获取的信息进行实时显示。本系统针对现实中出现的对于工业机器人智能循迹的需求,适当进行了简化。本次设计的智能小车,会自动沿着黑线行走,所行走的距离实时地显示出来 ,同时可以通过PWM信号控制小车的速度。为了使小车的信息能够实时传输主控制系统,并很好的完成行走和转向等功能,就需要设计一套较为实用和可靠的算法,程序。关键词:循迹;PWM;算法;数码显示 1引言当今社会,科学技术日新月异,时代前进的步伐越迈越快,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能,监控等系统已经得到充分的发展与应用,智能机器人也就应运而生。同时,在建设以人为本的和谐社会的过程中,智能服务机器人能够完成考古发掘,海底探密,宇宙探索等危险作业,以保证人身安全。国家中长期科学和技术发展规划纲要一文指出:智能服务机器人是在非结构环境下为人类提供必要服务的多种高技术集成的智能化装备。以服务机器人和危险作业机器人应用需求为重点,研究设计方法、制造工艺、智能控制和应用系统集成等共性基础技术。重点研究低成本的自组织网络,个性化的智能机器人和人机交互系统、高柔性免受攻击的数据网络和先进的信息安全系统。 本次设计系统主要分为红外检测模块,小车控制模块,状态显示模块。单片机通过红外检测模块等采集到的信息控制小车转向,行驶速度和显示。2 设计任务、要求和技术指标21 任务(1) 设计并制作一个智能小车,实现沿黑线行走而且不出线。(2) 小车从起跑线出发(车体不得超过起跑线),沿引导线到达终点(与车体垂直的黑线)。2.2 要求(1) 利用检测电路实现对黑线的检测功能,要求检测电路检测尽可能的简单(2) 机器车一旦启动,便由程序控制完成灵活的行走方式。即在黑线的指引下前进,实现急停,转向和转向灯的控制。(3) 机器车开始行走的同时,开始显示行走距离。(4) 车体尺寸以一般玩具小车为限。(5) 无竞争-冒险,无抖动。2.3 技术指标(1) 红外检测电路能够检测到0.5-2cm左右的黑线。(2) 机器车偏离黑线,要求迅速做出调整,能够重新回到黑线。(3) 距离显示为行走时间的实时显示,显示距离的长度范围为0999.9米。(4) 车身长度为20.5cm,宽度为9.5cm,高度为7.5cm。(5) 检测信号为电压信号。3 方案分析与论证3.1 主控系统的分析与论证根据设计要求,我们认为此设计属于输入量的复杂程序控制问题。据此,我们拟定了以下两种方案并进行了综合的比较论证,具体如下:方案一:采用组合数字电路实现核心控制的方案采用组合电路实现控制和处理功能,具有速度快,资源丰富的优点,但是实现多路控制和附加功能上受到限制,且功能越多电路越复杂。因此该方案不被采用方案二:采用单片机为核心控制的方案采用单片机作为控制和处理的核心,可使电路的复杂程度大大降低,尤其是实现小车的自动控制上显现出独特的优势。由于单片机AT89C52是一种低功耗,高性能CMOS 8位单片机,片内含有8K的可反复擦写的只读程序存储器和256B的随机存取数据存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器和FLASH存储单元,32个可编程I/O口线,3个16位定时/计数器,8个中断源,低功耗空闲和掉电模式,完全符合设计的要求,所以采用AT89C52作为核心部件的方案较为理想。3.2显示系统分析与论证显示模块主要用于显示行走路程,由于显示范围为0999.9米,因此可采用四位一体共阳的数码管作为显示元件。在显示驱动电路中我们拟定了二种设计方案:方案一:采用静态现实的方案采用四片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,且静态现实的内容无闪烁,但电路消耗的电流较大,占用I/O口较多,而本设计的电机消耗电流已经很大,应尽量在其他电路中节约电流的消耗,因此该方案不被采用。方案二:采用动态现实的方案采用专用数码管译码器BC7281B(以下简称7281)和74LS164共同协作来作为驱动的动态显示电路,它只占用主控系统的两个I/O口,大大节约了I/O口,且动态扫描7281单独控制,不需单片机定时扫描,这样就节约了单片机的定时单元用于做驱动和车速检测,故采用本方案。3.3检测系统分析与论证由于本设计中的技术指标要求识别精确范围0.52 cm,因此本定方案中采用的是反射式的未经调制的红外收发管ST168作为检测黑线的传感器。考虑到该传感器要检测的距离比较短,所以采用的加套管的方法避免外界自然光线的影响,没有加入补偿电路,这样大大简化了电路的设计,为了使小车更好的沿循迹线行走,我们加入了四路检测黑线,且让他们独立工作,由主控系统循环检测。3.4电机控制系统分析与论证方案一:采用继电器对电机的开和关进行开关的切换调整。这个方案简单,但是响应慢,机械结构易损坏并且寿命不长。方案二:利用电阻分压原理,采用数字电位器调整电机的分压从而达到调速的目的,缺点是无法大电流驱动,降低工作效率而且不易实现。方案三:采用复合观组成的H型PWM电路,这种电路的优点是使管子工作在占空比可调的开关状态,提高使用效率实现电机转速的微调,并且H型的驱动电路可以简单的方式实现的方向控制。电机的控制系统主要是由控制行走电机和方向调整电机的电路所组成,该电路要求驱动电流足够大且在控制中不会发生竞争-冒险现象,因此在设计中我们采用方案三即图一的设计方案,图一中的二极管有效地实现了电路保护和正反向电流的控制,也避免了竞争-冒险,采用差分放大电路可提供足够大的电流,实验证明该方案三很好,电压控制安全可靠,可被采用。4 功能概述及系统原理框图4.1 功能概述和技术指标分析本次设计系统主要是让小车自主的沿着预先设计好的黑线行驶,从出发到结束都不会脱离黑线,同时显示小车所行走的距离,行驶中的各种转向都伴有相应转向灯的点亮,直到小车检测到结束黑线,点亮结束指示灯。本设计的小车采用市场上常见的具有前导向轮的玩具车车体,该车体有双电机,前电机控制小车的转向,后电机控制小车的前进后退及速度。这种小车的设计大大简化了小车的控制过程,使得控制程序简化,但是也有个不足之处即有最小转向半径的要求,这就要求循迹线的弯道设计必须大于小车的最小转向半径。系统技术指标主要偏重于功能性。小车行走功能依靠对电机的驱动及调速,我们采用H桥式驱动电路实现直流电机的正反转及转速控制;循迹采取的方法是红外探测法,由四组红外光电探测器对行走地面的颜色识别从而判断行走路线;路程检测采用霍尔元件对磁性物质的检测来实现,当霍尔元件检测到小车车轮上的磁性物质时,霍尔元件输出低电平,将此低电平输入到计数器中断中,每当计数值满,就显示出来小车的所行走的距离。4.2 系统原理框图硬件组成框图如图所示:主要有AT89C52单片机、红外检测电路、路程检测电路、显示电路、驱动控制电路、方向控制电路。AT89C52系统数码显示驱动控制方向控制红外检测电路路程检测电路图 15 硬件电路及介绍5.1 电机驱动控制电路电机驱动控制模块采用的是分立元件制作,具体电路见下图2所示。电机驱动电路由I/O口输出信号送RUNF和RUNB,VCC是给电机供电的电源。电机的控制原理为:通过RUNF和RUNB的不同电平输入,在M处得到正反向控制电压实现电机的正反转,例如:当RUNB为高RUNF为低时,三极管T4,T6,T9导通;T5,T7,T8截止,此时二极管D1导通,从而驱动电机正向转动。当需要电机反转时,同理只需要输入端RUNF和RUNB的电平反向即可。输入端由AT89C52的 I/O控制。 两路输入信号的均为 30Hz 占空比为 30% 控制电路的控制方式如表1所示:图2表 1 电机驱动方式列表信号名称输入输出RUNF0正向电压RUNB1RUNF1反向电压RUNB0RUNF0短路RUNB0RUNF1短路RUNB1注:小车转向模块的电路与驱动模块电路相同5.2 电源模块采用9V蓄电池为直流电机供电,将9V电压降压、稳压到5V,为外围芯片供电。我们利用LM7805芯片将9V的锂电池降压到5V,由5V电压来给单片机和其它控制模块供电。具体电路图如下图25.3 距离检测模块距离检测模块是采用霍尔元件进行感应检测,这样可以很好提高检测的准确性,检测原理是利用计数器中断1,计算小车车轮的直径,在小车的车轮上装上一个小铁片,当霍尔元件检测到一次低电平,计数器中断加一,达到预先设置的数值时,显示距离,这是一种最为简单,实用的方法,算法少,占用单片机运行时间短,可以更好的使单片机一直工作在主程序循迹程序中。具体硬件原理图如下:图4 5.4 显示模块显示部分有两部分组成,一部分由六个发光二极管组成以指示各部分工作状态,单片机开始工作时D1灯亮,小车在行走过程中,左转时D2、D3亮,右转时D4、D5亮,停止时D6点亮。电路原理图如图5 所示。另一部分由一个四位一体的共阳数码管组成显示机车运行的路程,该部分的主要芯片为BC7281B,该芯片的驱动能力强,占用I/O口少,且不用单片机进行动态扫描,不需要译码,大大的节省了单片机有限的资源和显示所占用的时间。 图5图65.5 红外检测模块设计红外检测模块主要是由ST168组成。ST168采用高发射功率红外光电管和高灵敏光电晶体管组成,其测试距离为5-10mm,ST168的外形及内部结构如下图: 图7红外检测模块电路原理图如上图 所示此电路的工作原理:当ST168检测到白线时,自身所发射的红外光线被白色反射接收到,使得自身的光电三极管导通,在LM319的4号引脚将检测到低电平,低于5号引脚的比较电平2.5V,在12号引脚上将输出低点平,相反,当检测到黑线时,自身所发出的红外被黑色吸收,光电三极管截止,4号引脚为高电平,12号引脚输出高电平,单片机根据这个开关量做出反应,来控制小车的左右转向。该检测系统共有四个这样的模块,分别为左一,左二,右一,右二,具体分配如下图:图8左一,右一,作为循迹主要检测部分,左二右二作为辅助检测,其控制原理如下:当检测到左一,或者右一有高电平信号时,说明小车已经偏离了黑线,调整,但是由于车速,小车自身反映时间或者弯道太大的缘故,使得小车在还没有调整过来之前,已经超出了左一,或者右一得检测范围,这样可以由左二右二做出补偿调整,使得小车重新回到轨道上来。5.6 主控系统电路该系统由单片机AT89C52实现。AT89C52的主要性能有:与MCS-51产品兼容;8KB的在线可重复编程快闪存储器;宽工作电压范围为2.7V6V;256×8位SRAM;15条可编程I/O线;2个16位定时器/计数器;全静态工作方式:0Hz24Hz等。设计采用了12M晶振,5V电源供电,把P1、P2、P4口作为普通I/O线用,P3口为中断等的接入口。另外,P0口的驱动能力最强,可用于直接驱动LED灯。输入口都可以吸收20mA的灌入电流,当向端口写入电平“1”时,可作为输出引脚。主控系统电路主要承担计时,数据采集和送出控制信号的功能,对目标识别与控制起着核心作用,各功能通过软件实现。单片机AT89C52主控电路图如下图9 所示:图96 软件设计6.1智能小车程序流程说明程序主要通过程序主模块通过调用各个子模块来实现,主模块的任务包括:对I/O口的循环检测,调用相关子程序对输入响应进行相应的处理。由于AT89C52有三个定时器,在本设计中可将T0用于计数器和数码管显示距离的控制;将T1用于脉冲编码调制(PWM)和频率的调节。两个定时器均采用中断工作方式,且默认其优先级,即计数器的优先级高于定时器优先级。T1工作在定时方式模式1中,T0工作再计数方式模式2中。对工作模式寄存器(TMOD),中断允许控制(IE)的设置如表2所示,程序的主流程图如图(10)所示表2TMOD (89H)D7D6D5D4D3D2D1D000010110IE (A8H)EAESET1EX1ET0EX0101010程序初始化,I/O口检测与调整,控制端和定时器的软件设置清单如下:RUNF EQU P0.1 RUNB EQU P0.0 ;驱动口设置 Y1 EQU P2.7 Y2 EQU P2.6 Z1 EQU P2.5 Z2 EQU P2.4 ;调整信号 TL EQU P0.2 ;左转调整口 TR EQU P0.3 ;右转调整口 ZS EQU P3.6 ;停止指示灯 CLK BIT P1.1 DAT BIT P1.0 PWMH DATA 30H PWML DATA 31H ;脉宽调制设置 JS DATA 32H ;计数 YS DATA 33H ;延时外层嵌套 TIMER DATA 34H ;延时用寄存器 TIMER1 DATA 35H TEMP DATA 36H TH1_D EQU 0FEH ;定时器初始化设定值 TL1_D EQU 18HMOV TMOD,#16H ;T0工作于模式2,T1工作于模式1 MOV TH1,#0FcH MOV TL1,#18H MOV TH0,#0FFH MOV TL0,#0FFH ;设置T0,T1初值 SETB ET1 SETB ET0 SETB TR0 ;T0开始计数 SETB EA :开中断.XJ: MOV A,P2 ;读入调整信号 ANL A,#0F0H ;p2低4位至零,高4位不变 MOV B,A ;B=P2 ANL A,#0A0H ;P2的5和7位不变 CJNE A,#0A0H,NEXT_XJ ;5和7位都为1则跳转,否则停止 SJMP STOPNEXT_XJ: MOV A,B ANL A,#50H ;p2的第4、6位不变 CJNE A,#50H,ZZ_1;判断是否停止 ;p2的4、6全为 1 停止,否则跳转 SJMP STOPZZ_1: JB Z1,ZZ ;是否左转 JB Z2,DTL JB Y1,YZ ;是否右转 JB Y2,DTR AJMP XJ开始初始化程序参数设置T0,T1计数器初始化BC7281启动电机停止?左1=1?左2=1?右1=1?右2=1?小调整左转向短延时关闭转向调整大调左转向小调整右转向短延时关闭转向调整大调整右转向倒退缓冲停止NNNNYYYYY图10主程序流程图6.2 各功能子模块及流程说明开始初始化bc7281显示设置为0够10cm吗?(37H)+1(37H)=A?(37H)=0显示调用(38H)+1(38H)=A?(38H)=0(39H)+1(39H)=A?(39H)=0(40H)+1结束NNNNYYYY(1)显示模块:主要功能是显示小车行走的距离,由程序控制,T0计数器每计数满,代表小车以行走完10cm的距离,这时使得存放距离的最低位数据(4位数据存放地址由低到高依次为37H,38H,39H,40H)加一,并由单片机控制BC7281B显示,具体流程图如下:START_DELAY: MOV TIMER1,#225 DJNZ TIMER1,$ DJNZ TIMER,START_DELAY MOV R7,#12H LCALL SEND_BYTE MOV R7,#15H ;显示第四位 LCALL SEND_BYTE MOV A,DISP_3 ANL A,#0FH ADD A,#30H MOV R7,A LCALL SEND_BYTE;BC7281初始化结束*计数中断显示*COUNT: PUSH ACC MOV A,DISP_0 MOV R7,#15H ;显示第一位 LCALL SEND_BYTEMOV A,DISP_0ANL A,#0FHADD A,#0MOV R7,ALCALL SEND_BYTEMOV A,DISP_0INC AMOV DISP_0,A CJNE A,#0AH,COUNT_BACKMOV DISP_0,#0 MOV R7,#15H;显示第三位 LCALL SEND_BYTEMOV A,DISP_2ANL A,#0FHADD A,#20HMOV R7,ALCALL SEND_BYTE COUNT_BACK:POP ACCRETI开始保护现场重新装入计数初值第pwmh次?RUNF电平变低第pwmh次吗RUNF电平变高恢复现场,结束NNYY(2)电机控制及PWM脉冲模块:主要任务是实现电机的快慢速,正反转控制。控制电机为直流电机,通过PWM信号控制,PWM控制信号由软件产生,PWM信号的占空比由软件来设定。当小车偏离轨迹时通过软件改变前轮电机控制标志RUNF和RUNB的电平控制小车的左右转向,同理控制小车后轮的前进和倒退,并有PWM信号控制小车的速度快慢。该控制程序有定时器中断1完成。电机控制程序清单如下:PUSH ACC ;保护现场 MOV TH1,#TH1_D MOV TL1,#TL1_D ;定时器重新装入初值 MOV A,JS INC A MOV JS,A CJNE A,PWMH,CS CLR RUNFCS: CJNE A,PWML,FH SETB RUNF MOV JS,#00HFH: POP ACC ;恢复现场,返回 RETI7 系统调试与测试测量仪器:卷尺,万用表,双踪示波器,WYJ-30V/10A晶体管直流稳压电源。7.1 测试电路的调试与测试该电路的调试主要是调节红外检测传感器电路的R11(图7)的阻值,由于这个电阻可以调节ST168的发射管的发射功率,提高其发射功率就能调节其有效距离,但是由于没有补偿电路,在调节过程遇到了很多的麻烦,即外界的干扰强,如果电阻调的过小,那么ST168的发射功率过大,从而使得有效距离太远,检测距离太近造成对黑线也反射,失去了检测黑线的意义,但是如果电阻太高,使得发射功率过小,使得对白线也是低电平,同样失去了检测的意义,在接近需要电阻时,自然光的影响较大,甚至外界光线稍微变化,就会出现ST168输出电平的变化,为了解决这个影响,我们将ST168在稍微弱的光线下有效距离调到0.5-1cm,然后加入套管,屏蔽到大部分的自然光的影响,最后的调试电阻R11的阻值为1.2k,获得了极大的成功,即使在黑暗和强光的照射下,依然能能够很好的使用,经测试,左一,左二,右一,右二检测成功。7.2显示电路的调试与检测显示电路由于以前的制作多次用到BC7281,所以,硬件上没有出现问题,但是在调试中出现因送显示占用较多的时间,使得循迹过程出现偏差,我们做了如下调整:第一位时,只点亮第一位数据,这样在显示的过程就减少了因为送其他没有变化的数据,而不占用多余的时间,最后结果:智能小车在开动时,小车显示距离初始化为零,每当小车行走10cm,小车都能准确的进行加一显示,并且显示清晰,实验结果表明功能完全实现,测试成功。7.3电机控制电路的调试与测试在电机开启后小车能够准确的沿着预先设置的黑线前进,在转向过程中能够准确的给出转向灯,当检测到前方有横置黑线即默认结束线时,遇到了一些麻烦,当小车走到结束黑线时,由于小车的速度和车身角度,使得检测模块没有完全对准黑线,而程序控制中最初以红外检测全高电平即为停止(全部检测到黑线),这时即使有三个红外检测口已经检测到黑线,那个小车依然进行循迹程序,最后我们做出了调整,即考虑到黑线宽度使得四个红外检测的左边和右边在循迹过程中不可能同时检测到黑线,如果检测到,即为停止线,所以在停止控制中,将停止的程序控制写为左一左二的任意一个检测到黑线的同时右一右二的任意一个也检测到黑线,即为停止,在执行停止程序时考虑到惯性的影响我们将小车的停止程序改为令小车迅速开启反向电机,利用倒退来缓冲惯性,使得小车能够急停。最后测试,完全符合要求,测试成功。7.4方向调整电路的调试与测试小车在行进的过程中,最初容易出现小车偏离黑线虽然已经做出了调整,但是调整的时间长,又重新走偏,甚至走出线,我们调整了转向的延时时间,经测试,在做小调整时,延时时间为1ms,大调整为直到回到线上才停止转向。这样即使在急转外上即弯道的半径小于小车的最小转动半径,小车即使出线,也能够准确的从新回到黑线上去,最后测试成功。8 结论充分分析我们的系统,其关键在于实现小车对黑线的识别与系统控制,而在这一点上,单片机就显示出来它的优势识别控制简单,方便,快捷。这样一来,单片机就可以充分发挥其速度快,有较为强大的控制功能及可位寻址操作的功能,且价格低廉,可用附加电路实现电路的扩展。因此可看出电子领域的智能化发展,必将向着更加灵活,更加方便的轨道发展,智能化把人类带进梦幻般的世界是完全可能的,我们的生活也将更加的璀璨多彩。9 致谢衷心地感谢院、系领导的大力支持,特别感谢李建法老师,感谢他在毕业设计过程中对我们的毕业设计给予的基础知识、专业知识以及应用实践等诸多方面指导与帮助,让我们得以顺利完成毕业设计,使我的大学生活能够顺利地画上圆满的句号。最后请允许我向所有关心支持我们毕业设计的领导、老师、同学表示我最诚挚的感谢!参考文献1 李朝青.单片机原理及接口技术 M.北京:北京航空航天大学出版社,2005.92 谢自美.电子线路综合设计M.武汉:华中科技大学出版设,2006.63 郁有文,常建,程继红.传感器原理及工程应用.M.西安:西安电子科技大学出版社,第2 版,2000.84 Timothy J.Maloney, Moden Industrial ElectronicsM.北京:科学出版社,20025 童诗白,华成英.模拟电子技术基础M.北京:高等教育出版社,20016 闫石.数字电子技术基础M.北京:高等教育出版社,19987 陈尚松,雷加,郭庆.电子测量与仪器M.北京:电子工业出版社,1998 A Traction-Control System Based On MCULi Weili(School of Physics and Electrical Engineering, Anyang Normal University, Anyang, Henan 455002)Abstract:This system uses AT89C52 chip as a core and its rich resources to achieve a smart car with functions of detection,motion,control and others, meanwhile system will obtain the information for real-time display. In view of the reality of the system for working of the industry of robot along the line demand, we make a proper conduct of a simplified, Among them, they have a smart car. In the process, the smart car will automatically run along the black route and the distance of road line will be through system module and real-time transmission shows it.meanwhile we can control the speed of smart car through the signal of PWM, In order to achieve the purpose, we have to design black wire and also with the purpose of making Dolly have the ability of real-time transmission of information to the control of system,and achieve functions of its run and turn very well we should design a more practical and reliable algorithm and program.Keywords: Traction-Control ; PWM; algorithm; display附录一 电路原理图附录二 电路PCB图附录三 程序清单RUNFEQU P0.1RUNBEQU P0.0 ;驱动口设置Y1 EQU P2.7 Y2 EQU P2.6 Z2 EQU P2.4 ;调整信号TL EQU P0.2 ;左转调整口TR EQU P0.3 ;右转调整口ZS EQU P3.6 ;停止指示灯TLF EQU P0.5TRF EQU P0.6TRB EQU P0.7CLK BIT P1.1DAT BIT P1.0PWMH DATA 30H PWML DATA 31H ;脉宽调制设置JS DATA 32H ;计数YS DATA 33H ;延时外层嵌套TIMER DATA 35HTEMP DATA 36HDISP_0 DATA 37HDISP_1 DATA 38HDISP_2 DATA 39HDISP_3 DATA 40HTH1_D EQU 0FEH ;定时器初始化设定值TL1_D EQU 18HPWMH_D EQU 5 ;脉宽调整占空比PWML_D EQU 14PWMH_DD EQU 4;*;*主程序*;* ORG 0000H AJMP START ORG 000BH LJMP COUNT ORG 001BH LJMP DRIVING ;驱动中断ORG 0030HSTART: MOV TMOD,#16H ;T0工作于模式2,T1工作于模式1MOV TH1,#0FcHMOV TL1,#18HMOV TH0,#0FFHMOV TL0,#0FFH ;设置T0,T1初值SETB ET1 ;开中断SETB ET0SETB EASETB TR0 ;T0开始计数;初始化BC7281MOV TIMER,#50START_DELAY:MOV TIMER1,#225DJNZ TIMER1,$DJNZ IMER,START_DELAYMOV R7,#12HLCALL SEND_BYTEMOV R7,#0C8HLCALL SEND_BYTEMOV DISP_0,#0MOV DISP_1,#0MOV DISP_2,#0MOV DISP_3,#0LCALL DISPMOV R7,#15H;显示第三位LCALL SEND_BYTEMOV A,DISP_2ANL A,#0FHADD A,#20HMOV R7,ALCALL END_BYTEMOV R7,#15H;显示第四位LCALL SEND_BYTEMOV A,DISP_3ANL A,#0FHADD A,#30HMOV R7,ALCALL SEND_BYTE;BC7281初始化结束SETB RUNFCLR RUNB ;初始化驱动端口MOV YS,#1ACALL DELAYMOV PWMH,#PWMH_DMOV PWML,#PWML_D ;设置脉宽值MOV JS,#00H ;设置计数值SETB TR1 ;T1开始走时;*;*循迹模块的程序*;*XJ: ;初始化,清转向标志MOV A,P2 ;读入调整信号ANL A,#0F0H MOV B,AANL A,#0A0HCJNE A,#0A0H,NEXT_XJSJMP STOP NEXT_XJ:MOV A,BANL A,#50HCJNE A,#50H,ZZ_1;判断是否停止SJMP STOPZZ_1: JB Z1,ZZ ;是否左转JB Z2,DTL JB Y1,YZ ;是否右转JB Y2,DTRAJMP XJ;左转程序ZZ: MOV PWMH,#PWMH_D CLR TR SETB TL ;判断是否调用大调整程序 CLR TLF CLR TL_BACK_LED SETB TRF SETB TRB MOV YS,#01H LCALL DELAY ;小调整程序 CLR TL LJMP XJDTL: MOV PWMH,#PWMH_DD CLR TR SETB TL CLR