版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华南理工大学第四届智能控制设计大赛“自动往返电动小汽车”设计报告 自动化科学与工程学院 06级3班队长:黄亮组员:邓祥龙 刘海新目录内容简介 1摘要 1设计内容要求 1各环节功能— 2方案论证与比较 3总体设计方案 1显示方案 4电机方案 6电机驱动方案 6测距离方案 7信号检测方案 8设计与论证 9系统硬件总图 9系统资源分配表 10主程序流程图 11执行程序 11测试数据及测试结果分析 15 9 10 11 11特色 9程序模块与地址分配 9主程序流程图 10各控制器件的控制字与初始化 11收获与收获 15鸣谢 15自动往返电动小汽车摘要:为了实现电动小汽车的自动往返和智能控制,我们通过比较决定采用单片机控制系统。系统设计以AT89S52单片机为控制核心,辅以传感器、控制电路、显示电路等外围器件,构成了一个电动小汽车的自动控制系统。本设计使用光电传感器检测标志线,由单片机对各种传感器的信息进行综合判断和处理,然后发出指令控制电机的转动,实现了小车在直线方向上的调速、刹车、停车、倒车返回等各种运动形式。本设计采用PWM脉宽调制技术实现对电机的精确控制,设计的发挥部分通过红外线检测记录小车车轮转过圈数,计算出行车距离。小车还可以自动记录,显示一次往返时间和行驶距离。关键字:自动往返单片机控制PWM脉宽调制Introduction:设计任务及要求设计并制作一个能自动往返于起跑线与终点线间的小汽车.允许用玩具汽车改装,但不能用人工遥控(包括有线和无线遥控)。跑道宽度0.5m,表面贴有白纸,两侧有挡板,挡板与地面垂直,其高度不低于20cm。在跑道的B、C、D、E、F、G各点处画有2cm宽的黑线,各段的长度如图1所示。1。2设计要求1.基本要求车辆从起跑线出发(出发前,车体不得超出起跑线),到达终点线后停留10秒,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上汽车电源开关开始计时)。到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车辆中心点与终点线或起跑线中心线之间距离作为偏差的测量值)。D~E间为限速区,车辆往返均要求以低速通过,通过时间不得少于4秒,但不允许在限速区内停车。2.发挥部分自动记录、显示一次往返时间(记录显示装置要求安装在车上)。自动记录、显示行驶距离(记录显示装置要求安装在车上)。其它特色与创新。1.3说明不允许在跑道内外区域另外设置任何标志或检测装置.车辆(含在车体上附加的任何装置)外围尺寸的限制:长度≤20cm,宽度≤15cm。必须在车身顶部明显标出车辆中心点位置,即横向与纵向两条中心线的交点.方案论证与比较2.1总体设计方案方案一:纯硬件方案本方案基于硬件逻辑电路和脉冲电路的工作原理,采用计数器循环计数,再通过译码器译出相关状态,使触发器置位或复位,定时单稳使能工作,从而驱动相关继电器动作,以控制汽车电机的工作状态,最终实现汽车的自动往返、减速与直线行驶、以及定时停车等功能。该方案逻辑设计复杂,使用器件品种多,组装困难,故障率高,体积大,控制精度差,功能扩展难度大,发挥空间小,性能价格比较低.方案二:智能化方案本方案采用红外线光电检测与单片机智能控制相结合的技术,对小车的运行状态实时拾取相关信息送入单片机,通过CPU运算处理后,再发出相应的控制指令,由驱动执行电路控制汽车的运行姿态,最终实现汽车自动往返,减速行驶,全速前进以及定点定时停车等功能,以达到设计目的。与全硬件方案相比,智能化方案具有软件编程灵活,运算控制精确,自由度大,可靠性高,电路简单,体小量轻,成本低,功能易于扩展,显示直观,智能化程度高等优点。为此,本设计及制作采用智能化方案。2。2显示方案方案一:LED数码显示屏 LED就是lightemittingdiode,发光二极管的英文缩写,简称LED.它是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。 LED显示屏按显示器件可分为LED数码显示屏和LED点阵图显示屏。其中,LED数码显示屏为八段数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏. LED数码管显示的优点:单片机对其进行编程控制简单,数码管亮度够,功耗小,小型化,寿命长,耐冲击和性能稳定.缺点:数码管的显示符号单一,仅为0~9和几个字母;当需要显示的内容较多时,需要用到较多的数码管,对于单片机对其进行控制时,会浪费I/O口的资源。方案二:LCD液晶显示屏LCD(LiquidCrystalDisplay),中文多称“液晶平面显示器”或“液晶显示器”。其工作原理就是利用液晶的物理特性:通电时排列变得有序,使光线容易通过;不通电时排列混乱,阻止光线通过,说简单点就是让液晶如闸门般地阻隔或让光线穿透。LCD显示的优点:LCD显示的符号非常丰富,普通的符号一般都能够显示,如26个字母的大小写等;LCD可以显示的内容较多,如1602液晶模块显示屏有两行,每行可以显示16个字符,并且,通过刷新可以实现更多内容的显示,满足多内容显示的需要。缺点:单片机编程对其进行控制较LED数码管复杂,编写程序过程要注意对其进行读写操作的时序要求;消耗功率较大。经过比较,再结合这次设计所需显示的数值数目较多,所以采用LCD液晶显示屏作为显示器。2.3电机方案我们采用普通玩具小车作为制作模型,小车自带电机。由于电机的调速比要求较高,故电机的额定电压不能太小.又由于电机的额定电压太高时,对其的驱动控制较难。综合考虑,决定采用额定电压为6—9V的小型直流电机。经过测量小车所带电机满足上述要求。电机转速控制方案众所周知,直流电动机转速n的表达式为n=(U-IR)/(Ceφ)式中:U—--—电枢端电压I—--—电枢电流R————电枢电路电阻φ———每极磁通量Ce———-电动机电动势常数由上式可得,直流电动机的转速控制方法可分为两类。一、励磁控制法这是一得对励磁磁通进行控制来改变转速的方法。其中,励磁控制法在低速受磁极饱和的限制,在高速时,励磁线圈电感较大,动态响应较差,所以这种控制方法用得很少.二、电枢控制法这是一种对电枢电压进行控制来改变转速的方法。现在,大多数应用场合都使用电枢控制法。电压可以采用开关管进行控制。上图是利用开关管对直流电动机进行PWM调整控制的原理图和输入输出电压波形。在(a)中,当开关管的栅极输入高电平时,开关管导通,直流电动机电枢绕组两端有电压Us。t1秒后,栅极输入变为低电平,开关管截止,电动机电枢两端电压为0.t2秒后,栅极输入重新变为高电平,开关管的动作重复前面的过程.这样,对应着输入的电平高低,直流电动机电枢绕组两端的电压波形如图(b)所示。电动机的电枢绕组两端的电压平均值Uo为Uo=t1*Us/(t1+t2)=(t1/T)Uo=αUs式中α——--——-占空比,α=t1/T.占空比α表示了在一个周期T里,开关管导通的时间与周期的比值.α的变化范围为0≤α≤1.由上式可知,当电源电压不变的情况下,电枢的端电压的平均值Uo取决于占空比α的大小,改变α值就可以改变端电压的平均值,从而达到调整的目的,这就是PWM调速原理。在PWM调速时,占空比α是一个重要参数。以下3种方法都可以改变占空比的值.定宽调频法这种方法是保持t1不变,只改变t2,这样使周期T也随之改变。调宽调频法这种方法是保持t2不变,而改变t1,这样使周期T也随之改变.定频调宽法这种方法是使周期T保持不变,而同时改变t1和t2。前两种方法由于调速时改变了控制脉冲的周期,当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因此这两种用得很少.目前,在直流电动机的控制中,主要使用定频调宽法。常用PWM控制信号的产生方法有4种:分立电子元件组成的PWM信号发生器、软件模拟法、专用PWM集成电路、单片机的PWM口。经过比较,再结合现有的AT89S52单片机资源,决定采用软件模拟法。即利用单片机的定时器产生PWM信号,简单而又不会占用太多的CPU。电机的转速控制选用电枢控制法,即利用单片机的定时器产生PWM信号控制开关管的导通与判断时间,从而控制电机两端的电压,最终达到控制电机转速的目的.2.4电机驱动方案方案一:集成驱动芯片:采用专门的电机驱动芯片L298N,L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,静态电流小,输出电流大,电路简单,散热效果好,不容易烧坏,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。方案二:分立元件组成驱动电路:用三极管分立元件来驱动,用分立元件电路较复杂,静态电流较大,需要调试参数,功率小,散热性能差,饱和导通压降小。但是对于直流电机用分立元件构成驱动电路。由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛。但是这种电路工作性能不够稳定。经过比较,我们发现使用BJT或MOS分立元件组成驱动H桥需要相应的功率管驱动电路与之配套,虽然功率较大,但电路复杂不符合本次应用的要求,故本系统采用集成电机驱动芯片L298N。2.5测距离方案方案一:采用霍尔集成片:该器件内部有三片霍尔金属板组成,当磁铁正对金属板时,由于霍尔效应,金属板发生横向导通,因此可以在车轮上安装磁片,而将霍尔集成片安装在固定轴上,通过对脉冲的记数进行车转圈数的测量。方案二:采用直射式光电检测器(红外对管):直射式光电检测器的发光管和接收管相对安放在发射与受控物的两端,中间相距一定距离.由于该开关是沟槽结构,我们可以将其沟槽固定镶嵌于车轮边沿.并在小车的轮子边沿上均匀的开10个口,当车轮转动时光电检测器的沟槽遇到开口便发射和接受信号,因此产生连续脉冲。通过计算脉冲的数量便可以轻松算出小车经过的距离。计算公式如下:S=10N/LL:车轮的周长,10:车轮开口的数量,N:脉冲数,S:小车通过距离.由于方案二实现起来较为简单,且成本较低,电路简单,所以采用红外对管测距离的方案.车轮缺口(共开了车轮缺口(共开了11个口)2.6信号检测方案采用基于红外发射二极管构成光电检测机构。由于路径标志的黑线会吸收红外光,而白色的地面则会反射红外光线,光敏接收管接受不同亮度的光线后流过的电流有所不同,对电流信号进行采样产生电压信号,应用比较器与基准电压比较后即可输出单片机可以接受的开关量,以用于车辆姿态的控制。采用红外光电传感器进行路径识别有算法简单,运算量少适合一般单片机控制的优点,但最大缺点是不能预知道路前方的状态。介于普通的反射式光电传感器已经能够满足要求,我们采用了ITR—9909反射式光电传感器。总体设计方案及具体模块设计总体设计方案3。1系统设计方案我们的自动往返小车是在普通玩具小车的基础上制作的,由于普通玩具小车控制电路基本上是纯硬件电路。若要使小汽车完成复杂运动的自动控制功能(不能用人工遥控),会带来硬件电路复杂的缺点.为了更好的实现小汽车的智能运动,我们设计了一种基于单片机AT89C512芯片的自动往返玩具小车的控制系统。整体设计方案如图1,我们采用单片机AT89C52为主控制器;采用C语言进行软件编程实现各种算法和逻辑控制;以红外光电检测到的开关信号作为中断源,送入AT89C52中断源INT1;AT89C52再对中断请求做出响应,并在P111及P110口输出控制驱动电路的脉冲;驱动电路控制直流电机的转速和转向;并将相关实时数据输出到LCD液晶显示.单片机单片机AT89S52直流电机直流电机驱动模块标志线的红外检测信号直流电机直流电机驱动模块标志线的红外检测信号液晶显示红外对管的检测信号液晶显示红外对管的检测信号图1整体设计方案框图3.2系统实现功能1。1自动调速小汽车在行驶过程中能够实现自动检测标志线。并将检测到的信号传至单片机,由控制系统对驱动电路发出调速命令。实现对小车速度的智能控制。该功能可以通过控制系统对驱动电路行进部分送入脉冲驱动信号来实现,并根据所需要的速度来确定脉冲的占空比.1.2自动往返当小汽车到达终点站后,停止行驶。此时计数器开始计时,当停止时间达到10s,再从终点返回起点.这项功能要求控制系统能对返回标志进行正确的检测,并在时间到达时向驱动电路发送反向驱动信号.1。3自动记录并显示一次往返时间和行驶距离作为此次自动往返小车的发挥部分,我们增加了对往返时间和行驶距离的实时显示,当小汽车到达终点时能够把一次往返路程显示出来,并且在小车运行时把瞬时时间也显示出来。3。3系统软件实现系统主程序流程图:图二、系统软件流程图主程序为了达到预期的目标,本驱动程序采取顺序控制和中断服务执行的方法,主程序据往返小车的动作要求,从开始到结束顺序地安排了小车在各个区域的动作,而小车从一个状态进入另一个状态,主要以小车检测到的黑线条数line来作为标志,检测黑线的装置是前后各一个的红外对管,这样能更精确地转移到另一个状态。相关简单描述中断程序在主程序执行过程中,INT0中断,INT1中断用于红外检测,当遇到黑线,INT0或INT1口将输入低电平,从而触发黑线检测服务程序。Time0作为定时器,当计满50ms时产生溢出中断,从而起计时作用。3。4系统总框图系统总框图相关简单描述具体模块设计:3.2硬件模块设计本自动往返电动小汽车控制系统可以分成:电机驱动模块、光电检测模块、测距离模块、系统显示模块、电源模块,现在分别对各模块进行分析介绍。3。2。1电机驱动模块本自动往返电动小汽车系统要求车辆能正转运行,且使用单电源供电,故要使用H型电机驱动桥控制电机运行。H型电机驱动电路主要有使用BJT或MOS分立元件组成的电路和集成驱动芯片两种.使用BJT或MOS分立元件组成驱动H桥需要相应的功率管驱动电路与之配套,虽然功率较大,但电路复杂不符合本次应用的要求,故本系统采用集成电机驱动芯片.常用的H型驱动芯片有L298、TA8435等,我们采用专门的电机驱动芯片L298N,L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,静态电流小,输出电流大,电路简单,散热效果好,不容易烧坏,而且还带有控制使能端.L298N内部包含4通道逻辑驱动电路。可以方便的驱动两个直流电机.L298N芯片输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。(下图为电机的驱动模块电路图)图一:电机驱动模块电路图速度控制:对于电机的控制我们采用了脉冲宽度调制(PWM)的方法。PWM调制器原理如下图所示,当开关接通时,电源E加到电机上;当开关断开时,电源与电机断开,电机两端的电压近似为零.如此反复循环,电机两端的电压波形如图5(b)所示.好象是电源电压E在一段时间(T—ton)内被斩断后形成的,故称斩断器。电机得到的平均电压为Vd=tonE/T=δE式中,T为开关元件的开关周期;ton为开关元件开通时间;δ=ton/T为开关占空比。这种在开关元件频率不变的条件下,通过改变开关的导通时间来控制平均输出电压大小的方法称为脉冲宽度调制(PWM)。在此设计中采用脉宽调制(PWM)的方式控制电机,直流电机的转速Vd由驱动脉冲的宽度决定:Vd=D×Vmax=N100×Vmax式中D=t/T称为占空比,N为脉宽长度,Vmax为电机的最高速度。D越大Vd就越高;反之则反1。直流电机的调速过程是,让它启动一段时间,然后切断电源,电机因惯性而降速转动,当转速降到一定限度时,电源再次接通,电机因此再加速.不断的给电枢两端送入脉冲电压就可以使电动机转速控制在指定的速度范围内。图二、PWM调制器原理我们的小车由两个电机驱动,为了简单明了地讲述我们对两个电机的控制,现列出下表.电机的控制表:电机1状态P0。0P0.1电机2P0.2P0.3停止00停止00正转01正转01反转10反转10刹停11刹停113。2。2光电检测模块:采用基于红外发射二极管构成光电检测机构.由于路径标志的黑线会吸收红外光,而白色的地面则会反射红外光线,光敏接收管接受不同亮度的光线后流过的电流有所不同,对电流信号进行采样产生电压信号,应用比较器与基准电压比较后即可输出单片机可以接受的开关量,以用于车辆运动形式的控制。采用红外光电传感器进行路径识别有算法简单,运算量少适合一般单片机控制的优点,但最大缺点是不能预知道路前方的状态。介于普通的反射式光电传感器已经能够满足要求,我们采用了ITR—9909反射式光电传感器。下图为本自动往返小车系统的光电检测方案。图二:光电检测模块标志线的红外检测:我们采用ITR—9909反射式光电传感器来识别轨迹上的黑线标记信号,这种光电开关的红外发射管和接收管位于同一侧,光敏三极管只能接收反射回的红外光.当车身下面是黑线时,由于黑线吸收部分光,光敏三极管接收到的红外光不能使光敏三极管导通,光电开关输出高电平,当车身下面是白色的地面时,红外发射管发射的光经其反射后,被接收管接受,光电开关输出低电平。将反射式光电开关的输出接至CPU的INT1输入端。车在前进和后退过程中,小车每过一道黑线,便产生一次中断申请,从而调用相应的子程序,随着小车的不断行驶,相应的程序依次被调用执行,使小车在跑道上按设计要求时快、时慢、时前进、时后退。3.2.3测距离模块:由于红外对管性价比较高、电路简单,实现起来较为简单且满足测量精度要求,所以采用红外对管测距离。我们采用WYCH208直射式光电检测器(红外对管)来实现测距离的功能。直射式光电检测器的发光管和接收管相对安放在发射与受控物的两端,中间相距一定距离。由于该开关是沟槽结构,我们可以将其沟槽固定镶嵌于车轮边沿。并在小车的轮子边沿上均匀的开11个口,当车轮转动时光电检测器的沟槽遇到开口便发射和接受信号,因此产生连续脉冲。通过计算脉冲的数量便可以轻松算出小车经过的距离。下图为测距离模块的硬件实现。图测距离模块框图距离的计算:我们将光电对管的检测信号送入中断INT0,利用单片机AT89C52采集输出的脉冲个数进行计数结果设为变量COUNT,一个脉冲所对应的小车前进的距离乘以脉冲的个数便得到小车前进的距离1即:距离=脉冲个数×单个脉冲所对应的小车前进的距离.计算公式如下:S=N*L/11L:车轮的周长,11:车轮开口的数量,N:脉冲数,S:小车通过距离。图红外对管示意图车轮缺口(共开了车轮缺口(共开了11个口)图车轮构造示意图3。2。4显示模块:LCD显示的符号非常丰富,普通的符号一般都能够显示,如26个字母的大小写等;LCD可以显示的内容较多,如1602液晶模块显示屏有两行,每行可以显示16个字符,并且,通过刷新可以实现更多内容的显示,满足多内容显示的需要.由于这次设计所需显示的数值数目较多,所以我们采用了LCD液晶显示屏作为显示器.显示模块设计如下图所示.显示模块框图我们要显示的内容包括小车的往返时间和行驶距离。我们通过调用测距离和计时的模块,得出所需要的数据,经过单片机的处理,输送到LCD液晶显示器显示。附时间的计算:定时器工作在模式1下,16位计数器,设定计数器的计数初值为216-160000并且允许中断,中断一次表明间隔时间为60ms,对中断次数TCICOUNT进行累计。则时间TIMER的计算公式为TIMER=(TCICOUNT360ms)/100。3。2.5电源模块电源模块要保证系统供电充足并且稳定.电源模块的框图如下所示:主电源镉镍电池组主电源镉镍电池组三端稳压器74L05三端稳压器74L05电机驱动模块测距离模块(光点对管)单片机系统测距离模块(光点对管)单片机系统光电检测模块图电源模块框图我们的自动往返小车系统采用单一的镉镍模型电池组供电,电池正常工作电压在6~8.4V之间。由于系统的功率回路和单片机数字系统共用同一电源,大功率回路的开关会导致电源电压波动(低于6.5v),同时电池电量有限,故需要采用低压降高效率的稳压电路为数字系统提供稳定电源供应.适合本系统使用稳压电源主要有降压式开关电源(Buck变换器)和低压降线形稳压电路(LDO)两种.降压式开关电源适合于低压大电流的场合,电路结构较复杂,成本较高。而本系统数字电路部分的功耗较低,故采用低压降线形稳压电路对数字系统进行供电.如下图所示,电池输入的电压经过一级LC滤波滤除功率电路产生的尖峰脉冲后送三端稳牙器74L05进行稳压,为单片机系统提供+5。0V的工作电压.图电源模块框图测试与调试测试数据:数据次数总时间路程终点延时限速区延时起点误差终点误差123453.3软件模块设计第四章
软件设计
4.1
软件程序流程图
4.1.1
主程序流程图
4.1。2
子程序流程图
4.2
编程
4.3
调试
4。3。1
IAR
Embedded
Workbench(嵌入式工作台)
4。3。2
软件模拟调试
4。3.3
Flash下载硬件调试
系统资源分配表引脚功能名称功能P0。0L298N的IN0Line0小车前进时测得的黑线数P0.1L298N的IN1Line1小车后退时测得的黑线数P0。2L298N的IN2countT时间脉冲中断数P0。3L298N的IN3countD路程脉冲计数P0。4左侧电机PWM产生h小时数P0.5右侧电机PWM产生m分钟P1。4测距离输入脉冲s秒P2.0-P2。7液晶数据发送口P3.0单个LED灯P3。1Rs,液晶寄存器选择信号P3.6Rw,液晶读写信号P3。7E,液晶片选信号P3.2INT0中断,小车前面测线P3。3T0中断,时钟脉冲P3。4INT1中断,小车后面测线P3.5T1中断,用于即路程程序清单//**********************往返小车驱动程序**********************//#include<reg52。h>//***********************************************************////*********************宏定义*******************************//#define uintunsignedint#defineucharunsignedchar //********************变量定义******************************//sbitLPWM=P0^4; //定义左pwm产生变量sbitRPWM=P0^5;sbitL0=P0^0;sbitL1=P0^1;sbitR0=P0^2;sbitR1=P0^3;sbitDIS=P1^4;//路程输入引脚sbitrs=P3^1;//液晶寄存器选择信号sbitrw=P3^6;//液晶读写信号sbite=P3^7;//液晶片选信号sbitled=P3^0;sbitint0=P3^2;uintcontT,contD;//时间计数,路程计数ucharh,m,s; //时分秒uintdis;uintline0,line1,k; uinta,b;uintqw=0,bw=0,sw=0,gw=0,tmp=0;ucharTAB[10]=”0000CM";ucharTAB1[8]=”00:00:00”;//**********************函数定义***************************************//voidwrite_code(uchar);voidwrite_data(uchar);voidruntime();//**********************延时程序**************************************//voiddelay(uintn) { uinti,j; for(i=n;i>0;i--) for(j=12;j〉0;j-—); //延时0。1ms}voiddelay10() //延时十秒{ uinti=0; RPWM=0; LPWM=0; while(i〈=9) { if(contT==20) { i++; runtime(); } }}//*****************************END***************************************////************************延时******************************************///*voiddelay1(uintn){ uinti; for(i=n;i>0;i-—) { RPWM=0; LPWM=0; delay(1); RPWM=1; LPWM=1; delay(4); LPWM=0; delay(1); }}*///**********************液晶初始化程序********************************//voidinit(){ uinti=0; e=0; //选中液晶 rw=0; //写液晶 write_code(0x38); write_code(0x0c); write_code(0x06); write_code(0x80+5); for(i=0;i〈7;i++) {write_data(TAB[i]); delay(5);} write_code(0x80+0x40+4); for(i=0;i<8;i++) //延时50ms { write_data(TAB1[i]); delay(5);} TMOD=0x51; TH0=(65536—50000)/256; TL0=(65536—50000)%256; EA=1; ET0=1; TR0=1; contT=0;}//***********************END***************************************////************************液晶数据、指令写入程序*********************//voidwrite_code(ucharx){ rs=0; //rs为低电平表示写代码 e=0; P2=x; delay(5); e=1; delay(5); e=0;}voidwrite_data(uchary){ rs=1; //rs为1,表示写数据 e=0; P2=y; delay(5); e=1; delay(5); e=0;}//*************************END***************************************////************************时间显示辅助程序*******************************//voidTdisplay(ucharadd,ucharnum){ uchartemp; temp=num/10+0x30; num=num%10+0x30; write_code(add); write_data(num); delay(5); write_code(add—1); write_data(temp); delay(5);}//************************END***************************************////************************路程显示程序******************************//voidDdisplay(){ a=TH1; b=TL1; contD=a*256+b; dis=contD*1.91; //计算路程 qw=dis/1000; tmp=dis-qw*1000; bw=tmp/100; tmp=tmp-bw*100; sw=tmp/10; gw=tmp—sw*10; write_code(0x80+8); write_data(gw+0x30); delay(5); write_code(0x80+7); write_data(sw+0x30); delay(5); write_code(0x80+6); write_data(bw+0x30); delay(5); write_code(0x80+5); write_data(qw+0x30); delay(5);}//******************************END************************************////*************************时间显示程序*********************************//voidruntime() { if(contT==20) //如果时间到1秒,则显示一次; {contT=0; s++; if(s==60) { s=0; m++; if(m==60) { m=0; h++; if(h==24) { h=0; } Tdisplay(0x80+0x40+5,h); } Tdisplay(0x80+0x40+8,m); } Tdisplay(0x80+0x40+11,s); }}//****************************END************************************////************************电机方向控制程序***************************//voiddjqd(ucharhead) { 运行 if(head==0) //当head为零时,电机正向; { R0=0; R1=1; L0=0; L1=1; } if(head==1)//当head为1时,电机反向运行; { R0=1; R1=0; L0=1; L1=0; } }//****************************EMD******************************////*****************************PWM产生程序*********************//voidPWM(uintnum,uintn) //参数num=0,代表小车前进;num=1,代表后退.{ //参数n为:当到第n条线时程序退出; while(1) { RPWM=0; LPWM=0; delay(1); RPWM=1; LPWM=1; delay(8); if(contT==20) //够十秒则显示时间一次 { runtime(); Ddisplay(); } if(num==0) { if(line1==n) break; } else { if(line0==n) break; } }}//*******************************************************************////*******************************主函数******************************////******************************************************************// voidmain(){ led=0; IT0=0; //INT0中断触发方式:低电平触发 IT1=0; //INT1中断触发方式:低电平触发 TMOD=0x51; //Time0为定时器,工作方式1;Time1为计数器,工作方式1 TH1=0; TL1=0; EA=1; //开总中断 EX1=1; //开INT1中断 ET1=1; //开Time1中断计数路程 TR1=1; //启动Time1 init(); //液晶初始化 djqd(0);//方向选为前进 PWM(0,3); //前进,直到检测到第三条线退出PWM djqd(1); RPWM=1; LPWM=1; delay(100); djqd(0); while(1)//进人限速区 { RPWM=0; LPWM=0; delay(3); RPWM=1; LPWM=1; delay(1); if(contT==20) { runtime(); Ddisplay(); } if(line1==4)//离开限速区 { PWM(0,5);//到终点则停止 djqd(1); RPWM=1; LPWM=1; delay(500); break; } } delay10(); //延时10秒,即终点停十秒 line0=0; EX1=0; //关中断1 EX0=1; 、//开中断0 djqd(1);//方向改为倒退 PWM(1,2); djqd(0); RPWM=1; LPWM=1; delay(100); djqd(1); while(1) //进入限速区 { RPWM=0; LPWM=0; delay(3); RPWM=1; LPWM=1; delay(1); if(contT==20) //够1秒则显示时间 { runtime(); Ddisplay(); } if(line0==4) { PWM(1,4); djqd(0); RPWM=1; LPWM=1; delay(500); break; } } RPWM=0; LPWM=0; runt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加工车间年度个人工作总结(23篇)
- 装饰公司股份转让合同书(3篇)
- 广东省广外实验2024-2025学年高二上学期10月月考 数学试题含答案
- 幼儿园师德师风论坛活动方案策划
- 江苏省苏州市(2024年-2025年小学五年级语文)统编版期末考试((上下)学期)试卷及答案
- 2024年BOD自动在线监测仪项目投资申请报告代可行性研究报告
- 2024-2025学年重庆乌江新高考协作体高三上学期二调英语试题及答案
- 上海市市辖区(2024年-2025年小学五年级语文)人教版综合练习(下学期)试卷及答案
- 2024年甘肃公务员考试申论试题(县乡卷)
- 垃圾误时投放
- 知识产权法治宣传活动
- 《现代护士职业素养》课件
- 2024年度患者健康教育制度
- 聚氨酯保温板
- 小学生劳动技能培养与就业市场需求
- 导管相关性尿路感染学习课件
- 疑难信访培训课件
- 云南省昆明市五华区2023-2024学年九年级上学期期末英语试卷+
- 人教版七年级数学上册期中测试卷-附带有答案
- 道路旅客运输企业双体系建设的政策法规与标准培训
- DB3714-T 0004-2021 肉种鸭强制换羽技术规程
评论
0/150
提交评论