您的当前位置:首页正文

基于单片机智能遥控小车的设计

2022-03-29 来源:易榕旅网
基于单片机智能遥控小车的设计

摘 要

智能作为现代的新发明,也是以后的发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车就是其中的一个体现。本次设计的简易智能小车,采用80C51单片机作为小车的检测和控制核心;采用光敏电阻感应外部各方向光线强弱, ADC0809处理相关信息之后,得到与光强相对应的数字量,并把信号送到单片机,单片机接收信号之后,按照预定的工作模式控制小车按照预先设计好的路线或轨道行驶;采用超声波模块测量小车与障碍物距离;采用红外线遥控远程人为控制小车行驶状态;采用gem4561ae实时显示小车障碍物的距离,小车停止行驶后,轮流显示小车行驶时间、行驶距离;本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能。

关键词:单片机80C51;超声波测距;红外遥控;自动循迹

目 录

1 前 言 ........................................................................................................................................... 3 2 方案设计与论证 ......................................................................................................................... 4 2.1 智能行驶方案 .......................................................................................................................... 4 2.1.1寻光方案 ................................................................................................................................ 4 2.1.2 检障方案 ............................................................................................................................... 5 2.2 比较器的选择 .......................................................................................................................... 7 2.3 遥控方案的选择 ...................................................................................................................... 8 2.4 行车距离检测 .......................................................................................................................... 9 2.5 显示系统 ................................................................................................................................ 10 2.6 直流调速系统的选择 ............................................................................................................ 11 2.7 前行与倒车的控制 ................................................................................................................ 12 2.8 系统原理图 ............................................................................................................................ 13 3 硬件设计 ................................................................................................................................... 15 3.1 80C51单片机硬件结构 ......................................................................................................... 15 3.2 最小应用系统设计 ................................................................................................................ 16 3.2.1 时钟电路 ............................................................................................................................. 16 3.2.2 复位电路 ............................................................................................................................. 17 3.2.3 烧写接口电路 ..................................................................................................................... 17 3.3 前向通道 ................................................................................................................................ 18 3.3.1 前向通道的含义 ................................................................................................................. 18

3.3.2 超声波障碍检测 ............................................................................................................... 18 3.3.4 光源检测电路 ..................................................................................................................... 19 3.4 后向通道 ................................................................................................................................ 19 3.4.1 PWM脉宽调速 ................................................................................................................... 19 3.4.2 逻辑延时环节 ..................................................................................................................... 20 3.4.3 电源的设计 ......................................................................................................................... 21 3.5 红外线遥控电路 .................................................................................................................... 21 3.6 显示电路设计 ........................................................................................................................ 21 4 软件设计 ................................................................................................................................... 20 4.1 设计流程 ................................................................................................................................ 20 4.2 软件抗干扰技术 .................................................................................................................... 22 4.2.1 数字滤波技术 ..................................................................................................................... 22 4.2.2 软件陷阱技术 ..................................................................................................................... 22 4.2.3 “看门狗”技术 ................................................................................................................. 22 4.3 程序设计 ................................................................................................................................ 24 4.3.1 红外解码 ............................................................................................................................. 24 4.3.1.1 UPD6121G的编码 ........................................................................................................... 24 总 结 ..................................................................................................................................... 26 附 录 ........................................................................................................................................... 27 参考文献 ......................................................................................................... 错误!未定义书签。 致 谢 ............................................................................................................. 错误!未定义书签。

1 前 言

是一个智能化的时代,各种智能化设备正在逐步替代人为的操作。随着汽车工业的迅速发展,关于智能汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。设计的智能小车能够实时显示时间、速度、里程,具有自动寻迹、寻光、避障功能,可程控行驶速度、红外遥控行驶。

本系统能实现对小车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用MCS-51系列中的80C51单片机。以80C51为控制核心,利用超声波传感器检测道路上的障碍并测量与障碍之间的距离,小车能够的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。通过对本小车研究,我们可以初步构建智能汽车的模型与理论基础。

对于智能汽车的研究,国内外都有很大的成就,谷歌的无人驾驶汽车,已经能够在高速公路上安全行驶数千公里,在高速行驶下都能有这么好的操控能力,无非是智能汽车领域的一座里程碑。对于智能泊车系统,现在也已经进入了民用领域,很多车型也装配了该系统,有了他,汽车用超声波传感器扫描路面两侧,通过比较停车的空间和车辆的长度,自动寻找合适的停车位。找到合适位置后,驾驶者只需控制刹车,车辆自动控制转向操作,即可将车停进停车位,并且液晶屏会有相应的显示。

本设计选用的80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。采用40引脚双列直插式DIP(Dual In Line Package),内有128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心。新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。

本设计主要研究内容就是基于80C51设计一部智能小车,小车能够实现自动循迹,自动避障,自动跟随,超声波测量距离,和红外遥控,寻光行驶的智能小车控制系统,包括了对驱动电路,红外通讯等的探索和研究。

本文主要从小车设计方案的选取、硬件设计、软件设计、测试结果方面进行主要论述。在第二章,我们就小车的智能行车、壁障方案的、显示方案、遥控方案、超声波测距方案、直流调速方案、行驶距离测量和倒车与前行方案的选择进行论述。在第三章,我们从单片机的最小系统电路、前向通道、后向通道三个方面对系统的硬件电路进行了论述和分析。在第四章,我们对小车的软件编程方面进行论述,包括如何自纠错,如何提高算法效率。

2 方案设计与论证

2.1 智能行驶方案

2.1.1寻光方案

为了检测光线的强弱,我们在小车左前方、右前方加了2只光敏传感器,即光敏电阻。光敏传感器根据照射在它上面的光线的强弱,阻值发生变化,输出电压随之变化,通过ADC0809后,得到与光强相对应的数字量,从而引导小车,向光源靠近。不同型号的光敏电阻,暗电阻及亮电阻差别较大,需根据不同参数的光敏电阻,选用不同大小的分压电阻。

光敏电阻:

光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;它的特性可以概括为:入射光强,电阻减小,入射光弱,电阻增大。

光敏电阻大致可以分为表2-1几类。

表2-1 光敏电阻的分类

类型 紫外光敏电阻器 红外光敏电阻器 特点 对紫外线较灵敏,包括硫化镉、硒化镉光敏电阻器等,用于探测紫外线。 主要有硫化铅、碲化铅、硒化铅。锑化铟等光敏电阻广泛用于导弹制导、天文探测、非接触测量、人体病变探测、红外光谱,红外通信等国防、科学研究和工农业生产中。 可见光光敏电阻器 包括硒、硫化镉、硒化镉、碲化镉、砷化镓、硅、锗、硫化锌光敏电阻器等。主要用于各种光电控制系统,如光电自动开关门户,航标灯、路灯和其他照明系统的自动亮灭,自动给水和自动停水装置,机械上的自动保护装置和“位置检测器”,极薄零件的厚度检测器,照相机自动曝光装置,光电计数器,烟雾报警器,光电跟踪系统等方面

小车行驶时,寻的是自然光源,所以本设计的寻光传感器选择上面选择了可见光光敏电阻作为光线传感器,同时也排除了红外遥控对于寻光行驶的影响。

常用的光敏电阻器有MG41~MG45系列,主要参数如表2-2所示,根据小车系统的参数和缩小体积的原则,我们选用了MG44-2型光敏电阻,该型号体积小,额定功率也能达到小车的系统要求。

表2-2 常用光敏电阻的参数

2.1.2 检障方案

2.1.2.1 传感器的比较

识别障碍的首要问题是传感器的选择,下面对几种传感器的优缺点进行说明(见表2.2)。探测障碍的最简单的方法是使用超声波传感器,它是利用向目标发射超声波脉冲,计算其往返时间来判定距离的。该方法被广泛应用于移动机器人的研究上。其优点是价格便宜,易于使用,且在10m以内能给出精确的测量。

表2-2 传感器性能比较

传感器类型 超声波 视觉 激光雷达 优 点 格合理,夜间不受影响。 易于多目标测量和分类,分辨率好。 夜间不受影响不受灯光、天气影响。

缺 点 测量范围小,对天气变化敏感。 不能直接测量距离,算法复杂,处理速度慢。 对水、灰尘、灯光敏感。 价格贵 视觉传感器在CW系统中使用得非常广泛。其优点是尺寸小,价格合理,在一定的宽度和视觉域内可以测量定多个目标,并且可以利用测量的图像根据外形和大小对目标进行分类。但是算法复杂,处理速度慢。雷达传感器在军事和航空领域已经使用了几十年。主要优点是可以鲁棒地探测到障碍而不受天气或灯光条件限制。近十年来随着尺寸及价格的降低,在汽车行业开始被使用。但是仍存在性价比的问题。

超声波是一种在弹性介质中的机械振荡,其频率超过20KHz,分横向振荡和纵向振荡两种,超声波可以在气体、液体及固体中传播,其传播速度不同。它有折射和反射现象,且在传播过程中有衰减。利用超声波的特性,可做成各种超声波传感器,结合不同的电路,可以制成超声波仪器及装置,在通讯、医疗及家电中获得广泛应用。

所以本设计采用T/R-40-12小型超声波传感器作为探测前方障碍物体的检测元件。 2.1.2.2 测距方案的选取

当利用超声波探测器测距时常用二种方法——强度法和反射时间法,强度法是利用声波在空气中的传输损耗值来测量被测物的距离,被测物越远其反射信号越弱,根据反射信号的强弱就可以知道被测物的远近,但在使用这种方法时由于换能器之间的直接耦合信号很难消除,在放大器增益较高时这一直接耦合信号就可使放大器饱和从而使整套系统失效其原理如图2.2.1示,由于直接耦合信号的影响强度法测距只适合较短距离的且精度要求不高的场合。

反射时间法是利用检测声波发出到接收到被测物反射回波的时间来测量距离其原理,对于距离较短和要求不高的场合我们可认为空气中的声速为常数,我们通过测量回波时间T利用公式s=v×(t/2)其中,S为被测距离、V为空气中声速、T为回波时间(TT1T2),可以计算出路程,这种方法不受声波强度的影响,直接耦合信号的影响也可以通过设置“时间门”来加以克服,因此这种方法非常适合较远距离的测距,如果对声速进行温度修订,其精度还可进一步提高,本题中我们选用此方法。

2.2 比较器的选择

小车对行驶状态的判定,都需要经过比较器来完成,所有的状态比较最终都转换成为电压的比较。

比较器的特点:

⑴ 工作在开环或正反馈状态。放大、运算电路为了实现性能稳定并满足一定的精度要求,这些电路中的运放均引入了深度负反馈;而为了提高比较器的反应速度和灵敏度,它所采用的运放不但没有引入负反馈,有时甚至还加正反馈。因此比较器的性能分析方法与放大、运算电路是不同的。

⑵ 非线性。由于比较器中运放处于开环或正反馈状态,它的两个输入端之间的电位差与开环电压放大倍数的乘积通常超过最大输出电压,使其内部某些管子进入饱和区或截止区,因此在绝大多数情况下输出与输入不成线性关系,即在放大、运算等电路中常用的计算方法对于比较器不再适用。

⑶ 开关特性。比较器的输出通常只有高电平和低电平两种稳定状态,因此它相当与一个受输入信号控制的开关,当输入电压经过阈值时开关动作,使输出从一个电平跳变到另一个电平。由于比较器的输入信号是模拟量,而它的输出电平是离散的,因此电压比较器可作为模拟电路与数字电路之间的过渡电路。

由于比较器的上述特点,在分析时既不能象对待放大电路那样去计算放大倍数,也不能象分析运算电路那样去求解输出与输入的函数关系,而应当着重抓住比较器的输出从一个电平跳变到另一个电平的临界条件所对应的输入电压值(阈值)来分析输入量与输出量之间的关系。

如果在比较器的输入端加理想阶跃信号,那么在理想情况下比较器的输出也应当是理想的阶跃电压,而且没有延迟。但实际集成运放的最大转换速率总是有限的,因此比较器输出电压的跳变不可能是理想的阶跃信号。电压比较器的输出从低电平变为高电平所须的时间称为响应时间。响应时间越短,响应速度越快。

减小比较器响应时间的主要方法有:

(1) 尽可能使输入信号接近理想情况,使它在阈值附近的变化接近理想阶跃 且幅度足够大。

(2) 选用集成电压比较器。

(3) 如果选用集成运放构成比较器,为了提高响应速度可以加限幅措施,以避免集成运放内部的管子进入深饱和区。具体措施多为在集成运放的两个输入端并联二极管。如图2-4 电压比较器电路所示:

图2-4 电压比较器电路

在本设计中,光电传感器只输出一种高低电平信号且伴有外界杂波干扰,所以我们尝试采用了一种滞回比较器。简单电压比较器结构简单,而且灵敏度高,但它的抗干扰能力差,也就是说如果输入信号因受干扰在阈值附近变化,则比较器输出就会反复的从一个电平跳到另一个电平。如果用这样的输出电压控制电机或继电器,将出现频繁动作或起停现象。这种情况,通常是不允许的。而滞回比较器则解决了这个问题。滞回比较器有两个数值不同的阈值,当输入信号因受干扰或其他原因发生变化时,只要变化量不超过两个阈值之差,滞回比较器的输出电压就不会来回变化。所以抗干扰能力强。

但是,滞回比较器毕竟是模拟器件,温度的漂移是它无法消除的。 综合考虑系统的各项性能,最后我们决定采用数字器件——施密特触发器。 施密特触发器是双稳态触发器的变形,它有两个稳定状态,触发方式为电平触发,只要外加触发信号的幅值增加到足够大,它就从一个稳定状态翻转到另一个稳定状态。施密特触发器具有与滞回比较器相类似的滞回特性,但施密特触发器的抗干扰能力比滞回比较器更强。

2.3 遥控方案的选择

红外线又称红外光波,在电磁波谱中,光波的波长范围为0.01um~1000um。根据波长的不同可分为可见光和不可见光,波长为0.38um~0.76um的光波可为可见光,依次为红、橙、黄、绿、青、蓝、紫七种颜色。光波为0.01um~0.38um的光波为紫外光(线),波长为0.76um~1000um的光波为红外光(线)。红外光按波长范围分为近红外、中红外、远红外、极红外4类。红外线遥控是利用近红外光传送遥控指令的,波长为0.76um~1.5um。用近红外作为遥控光源,是因为目前红外发射器件(红外发光管)与红外接收器件(光敏二极管、三极管及光电池)的发光与受光峰值波长一般为0.8um~0.94um,在近红外光波段内,二者的光谱正好重合,能够很好地匹配,可以获得较高的传输效率及较高的可靠性。

由于属于小范围内遥控,小车在小范围内行驶,为了减少设计成本,增加便利性,所以采用常用的家用电视红外遥控器作为红外遥控发射部分,只需在小车上加装红外接收装置即可。定义遥控器的音量减小键为左转键,音量增大键为右转键,菜单键为停止键,增台健为启动键,实现小车行驶的基本控制。只需要自己解决红外接收解码问题即可。

红外遥控系统的组成如图2-5所示。发射部分包括键盘矩阵、编码调制、LED红外发

送器;接收部分包括光、电转换放大器、解调、解码电路。本论文重点从红外解码方面对红外遥控进行论述。

图2-5 红外遥控的流程

2.4 行车距离检测

方案一:采用开关式霍尔元件

将磁铁固定在小汽车的车轮上,当车轮转动时,磁铁也跟着转动,霍尔元件感应到磁场的变化时,就会产生通断效果,使单片机的定时器T0的输入端产生高低电平的变化,从而使得T0计数小汽车车轮转的圈数,假设为N,并设车轮的周长为L,通过S=N*L,就可以计算出小汽车在一段时间内的行程。这种测量方法的测量数据只能是车轮周长的整数倍,误差较大。例如:小汽车的车轮半径为1cm,那么这种测量方法的最小误差就可达到6cm

方案二:采用透光式光电传感器,硬件电路如图2-6所示。

图2-6透光式光电传感器

在小汽车的车轮上钻若干小孔,设小孔的个数为n。在车轮转动时,发光二极管发射的光被没有孔的地方遮挡时,光敏三极管不能导通,光敏三极管的集电极输出为高电平,经CD40106反相后,单片机定时器T0的输入端为低电平。在有小孔的地方,发光二极管发射的光就会透过小孔照射到光敏三极管上,使光敏三极管导通,此时光敏三极管的集电极输出为低电平。在经CD40106反相后,单片机定时器T0的输入为高电平。单片机定时器T0就会准确记录下这种高低电平的变化的次数,即通过的小孔的个数。假设为N, 并设

车轮的周长与方案一的相同也是L,某段时间内的行程计算公式为:S=N*L/n,可以看到这种测量方法的最小误差为方案一的1/n,可较为精确地测量出小汽车的行程。并且可以进行误差控制,因为孔的个数与误差成反比,要想提高准确度只要增加小孔的个数就可以。故采用方案二。

2.5 显示系统

本设计中用两片4位八段数码管gem4561ae作显示器,并具有双重功能,在小车不行驶时其中一片显示年﹑月,另一片显示时﹑分; 当小车行驶时,分别显示时间和行驶距离。

为减轻单片机的运算压力,使用EM78P458作为显示驱动芯片。管脚如图2-7所示,用单片机的并行口控制,一个数码显示电路用4个口线。

该芯片共有20个管脚,管脚 LED1﹑LED2﹑LED3﹑LED4分别接10k电阻和三极管后与4位八段数码管5461中的a1﹑a2﹑a3﹑a4四个数位选择端相连,这四个数位选择端用来产生LED选通信号。

管脚a﹑b﹑c﹑d﹑e﹑f﹑g﹑dp分别接680欧电阻后与四位八段数码管4561中的a﹑b﹑c﹑d﹑e﹑f﹑g﹑dp相连,分别控制各段码和小数点。

管脚d0﹑d1﹑d2﹑d3接单片机并行口,通过对单片机对芯片进行控制。管脚vss串上10k电阻后与vcc管脚相接后再接+5v电源,管脚gnd接地。

图2-7 EM78P458的管脚

显示驱动器支持动态显示,其显示功能如表2-3真值表所示,0000-1001显示从0-9数字,1010是未进位时是小数点清位,1011是进位后加小数点,1100-1111是八段共阴数码管的位选。

表2-3显示驱动芯片真值表

D3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 D2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 D1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D0 0 1 0 1 0 1 0 1 0 1 0 点 1 点 0 通 1 通 0 通 1 通 显示 0 1 2 3 4 5 6 7 8 9 清小数加小数a1a2a3a4选选选选2.6 直流调速系统的选择

旋转变流系统由交流发电机拖动直流电动机实现变流,由发电机给需要调速的直流电动机供电,调节发电机的励磁电流即可改变其输出电压,从而调节电动机的转速。改变励磁电流的方向则输出电压的极性和电动机的转向都随着改变,所以G-M系统的可逆运行是很容易实现的。该系统需要旋转变流机组,至少包含两台与调速电动机容量相当的旋转电机,还要一台励磁发电机,设备多、体积大、费用高、效率低、维护不方便等缺点。且技术落后,因此搁置不用。

V-M系统是当今直流调速系统的主要形式。但是他有三个缺点:1.晶闸管的单向导电性,它不允许电流反向,给系统的可逆运行造成困难.2.运行条件要求高,维护运行麻烦。3.系统处于低速运行时,他的功率因素很低,产生较大的谐波电流危害附近用电设备。

脉冲宽度调制(Pulse Width Modulation),简称PWM。脉冲周期不变,只改变晶闸管的导通时间,即通过改变脉冲宽度来进行直流调速。

与V-M系统相比,PWM调速系统有下列优点:

(1)由于开关频率高,若与快速响应的电机相配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。

(2)由于PWM调速系统的开关频率较高,仅靠电枢电感的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽,可达1:10000左右。由于电流波形比V-M系统好,在相同的平均电流下,电动机的损耗和发热都比较小。

(3)由于电力电子器件只工作在开关状态,主电路损耗较小,装置效率较高。 根据以上综合比较,以及本设计中受控电机的容量和直流电机调速的发展方向,本设计采用了H型单极型可逆PWM变换器进行调速。

脉宽调速系统的主电路采用脉宽调制式变换器,简称PWM变换器。脉宽调速也可通过单片机控制继电器的闭合来实现,但是驱动能力有限。为顺利实现小车的前行与倒车,本设计采用了可逆PWM变换器。我们在设计中采用了常用的双极式H型变换器。电路图如图所示,它是由4个三极电力晶体管和4个续流二极管组成的桥式电路。在不同的控制方式下,调速系统的电压、电流各不相同,使电机的运行特性和调速系统的调速性能也不同。而在直流调速系统中对电机运行特性影响最大的是电流。电流的大小、方向、连续性直接影响电机的运行性能。

2.7 前行与倒车的控制

要使小车能够达到壁障和快速制动的效果,必须让小车配备前行和倒车两个行驶方向,我们通过电流方向的改变来改变小车的行驶方向。采用了一个电桥来控制小车电机的转向。电路图如图2-8所示。

电桥一端接电源,另一端接了一个三极管。三极管导通时,电桥通过三极管接地,电机电枢中有电流通过;三极管截止时,电桥浮空,电机电枢中没有电流通过。系统通过电桥的输出端为转向电机供电。通过对继电器开闭的控制即可控制电机的开断和转速方向进而达到控制玩具车前行与倒车的目的,实现随动控制系统的纠偏功能。

图2-8前行与倒车控制电路

2.8 系统原理图

系统原理图如图2-9所示:调速模块接单片机P1.4-P1.7口;显示模块接P0.0-0.3和P1.0-1.3口;壁障寻光等检测模块接P0.4-0.7、P2.0-P2.2口;红外遥控接P3.2口;看门狗定时器接2.7口。

图2-9 系统原理图

3 硬件设计

3.1 80C51单片机硬件结构

80C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。

1 微处理器

该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。

2 数据存储器

片内为128个字节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。

3 程序存储器

由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节。

4 中断系统

具有5个中断源,2级中断优先权。 5 定时器/计数器

片内有2个16位的定时器/计数器, 具有四种工作方式。 6 串行口

1个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。

7 P1口、P2口、P3口、P4口为4个并行8位I/O口。 8 特殊功能寄存器

共有21个,用于对片内的个功能的部件进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。

由上可见,80C51单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。

3.2 最小应用系统设计

用80C51单片机进行构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图3-1所示。由于集成度的限制,最小系统只能用作一些最小的控制单元。但也拥有一些有点:

(1) 有可供用户使用的大量I/O口线。 (2) 内部存储器容量有限。 (3) 应用系统开发具有特殊性。

图3-1 80C51单片机最小系统

3.2.1 时钟电路

单片机的时钟产生有两种方法:内部时钟方式和外部时钟方式。

系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值通常取30PF。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。

3.2.2 复位电路

复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个触发器与复位电路相连,触发器用来抑制噪声,它的输出在每个机器周期中由复位电路采样一次。

复位电路通常采用上电自动复位和按钮复位两种方式。所谓上电复位,是指计算机加电瞬间,要在RST引脚出现大于10MS的正脉冲,使单片机进入复位状态。按钮复位是指用户按下“复位”按钮,使单片机进入复位状态[5]。如图4-2是上电复位及按钮复位的一种实用电路。

图4-2 复位电路

上电时,+5V电源立即对单片机芯片供电,同时经电阻R对电容C3充电。C3上电压建立的规程就产生一定宽度的负脉冲,经反向后,RST上出现正脉冲使单片机实现了上电复位。按钮按下时,RST上同样出现高电平,实现了按钮复位。在应用系统中,有些外围芯片也需要复位。如果这些芯片复位端的复位电平和单片机一致,则可以与单片机复位脚相连,因此,非门在这里不仅起了反向作用,还增大了驱动能力,电容C1,C2起虑波作用,防止干扰窜入复位端产生误动作。

3.2.3 烧写接口电路

RST置高电平,然后向单片机串行发送编程命令。P1.7(SCK)输入移位脉冲,P1.6(MISO)串行输出,P1.5(MOSI)串行输入。被烧写的单片机一定是最小系统(单片机已经接好电源,晶振,可以运行)。如图4-3 烧写接口电路。

图4-3 烧写接口电路

3.3 前向通道

3.3.1 前向通道的含义

在控制系统中,前向通道似乎就是指信号的输入通道,例如人机接口的键盘、传感器信号输入等。

3.3.2 超声波障碍检测

本设计采用T/R-40-12超声波传感器作为壁障模块的传感器,它能发出40KHZ的脉冲超声波,当前面有物体时,超声波信号会被反射回来,由接收器接收,经LM318两级放大,再经带有锁相环的音频解码芯片LM567解码,当LM567的输入信号大于25mV时,输出端由高电平变为低电平,送80C51单片机处理。超声波检测电路图如图3.3 超声波检测电路所示。

图 3-3 超声波检测电路

3.3.4 光源检测电路

图3-4为光源检测电路,光敏传感器根据照射在它上面的光线的强弱,阻值发生变化,输出电压随之变化,通过ADC0809后,得到与光强相对应的数字量,传送到单片机,从而引导小车,向光源靠近。

+5vRRU2212019188151417msb2-12-22-32-42-52-62-7lsb2-8EOCADD-AADD-BADD-CALEENABLESTARTCLOCKref(-)ref(+)1612+5vADC0809IN-0IN-1IN-2IN-3IN-4IN-5IN-6IN-726272810412345PHOTO10KVCCP2.37P2.2252423P2.4229P2.561089C52-ALE 图3-4 光源检测电路

3.4 后向通道

3.4.1 PWM脉宽调速

本设计调速采用PWM调速,选用了常用的双极式H型变换器,它是由4个三极电力晶体管和四个续流二极管组成的桥式电路。图3-5为双极式H型可逆PWM变换器的电路原理图。

4个电力晶体管的基极驱动电压分为两组。VT1和VT4同时导通和关断,其驱动电路中Ub1=Ub4;VT2和VT3同时动作,其驱动电压Ub2=Ub3= -Ub1。

双极式PWM变换器的优点如下:

(1)电流一定连续;

(2)可使电动机在四象限中运行;

(3)电机停止时有微振电流,能消除静摩擦死区;

(4)低速时,每个晶体管的驱动脉冲仍较宽,有利于保证晶体管可靠导通; (5)低速平稳性好,调速范围可达20000左右。

图3-5 双极式H型可逆PWM变换器电路原理图

脉宽调制原理:

脉宽调制器本身是一个由运算放大器和几个输入信号组成的电压比较器。运算放大器工作在开换状态,稍微有一点输入信号就可使其输出电压达到饱和值,加在运算放大器反相输入端上的有三个输入信号。一个输入信号是锯齿波调制信号,另一个是控制电压,其极性大小可随时改变,与锯齿波调制信号相减,便运算放大器的输出端得到周期不变、脉宽可变的调制输出电压。只要改变控制电压的极性,也就改变了PWM变换器输出平均电压的极性,便改变了电动机的转向。改变控制电压的大小,则调节了输出脉冲电压的宽度,便调节电动机的转速。只要锯齿波的线性度足够好,输出脉冲的宽度是和控制电压的大小成正比的。

3.4.2 逻辑延时环节

在可逆PWM变换器中,跨接在电源两端的上下两个晶体管经常交替工作。由于晶体管的关断过程中有一段存储时间和电流下降时间,总称关断时间,在这段时间内晶体管并未完全关断。如果在此期间另一个晶体管已经导通,则将造成上下两管之通,从而使电源正负极短路。为避免发生这种情况,设置了由RC电路构成的延时环节。

3.4.3 电源的设计

本设计的电源为车载电源。为保证电源工作可靠,单片机系统与动力伺服系统的电源采用了大功率、大容量的蓄电池;而传感器的工作电源则采用了小巧轻便的干电池。

3.5 红外线遥控电路

方便起见,本设计直接采用电视遥控器作为红外遥控的发射器,只需在小车上加装红外接收装置即可

红外接收器的电路图如图3.6所示:

图3-6红外线遥控接收电路:

3.6 显示电路设计

图3-7 EM78P458集成显示电

4 软件设计

4.1 设计流程

一个智能化的系统,软件设计必不可少,软件设计是更具系统需求,通过编程语言控制单片机的行为,实现智能控制。

模块化的程序设计有以下有点: 1、 2、 3、

单个模块比起一个完整的程序易编写及调试;

模块可以共存,一个模块可以被多个任务在不同条件下调用; 模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。

本系统软件采用模块化结构,由主程序﹑定时子程序、避障子程序﹑中断子程序显示子程序﹑调速子程序﹑算法子程序、遥控子程序构成。

本次设计采用的即是模块化的软件编程,各程序功能清晰,明确。 软件流程 如图4-1流程图所示:

启动 记录里程/计时 Y 遥控 遥控行驶 寻光子程序 Y N 是否寻光 N 自动行驶 判断偏离 Y 转向子程序 N 是否遇障 Y 壁障子程序 N 黑线 N Y 停车 图4-1系统流程图

4.2 软件抗干扰技术

提高小车智能控制的可靠性,仅靠硬件抗干扰是不够的,需要进一步借助于软件抗干扰技术来克服某些干扰。在单片机控制系统中,如能正确的采用软件抗干扰技术,与硬件干扰措施构成双道抗干扰防线,无疑为了将大大提高控制系统的可靠性。经常采用的软件抗干扰技术是数字滤波技术、指令冗余技术、软件陷阱技术等。

4.2.1 数字滤波技术

所谓数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重。故实质上它是一种程序滤波。数字滤波克服了模拟滤波器的不足,它与模拟滤波器相比 ,有以下几个优点:

数字滤波是用程序实现的,不需要增加硬设备,所以可靠性高,稳定性好。 数字滤波可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便,功能强的特点。

数字滤波可以对频率很低的信号实现滤波,克服了模拟滤波器的缺陷。 数字滤波器具有以上优点,所以数字滤波在微机应用系统中得到了广泛应用。

4.2.2 软件陷阱技术

软件陷阱奇数,就是设定一段代码,将程序引导到专门对程序出错进行处理的程序。若这段程序的入口标签为ERR,软件陷阱即为一条无条件转移指令,为了加强其捕捉效果,一般还在它前面加两条 NOP 指令,因此真正的软件陷阱由以下3条指令构成:

NOP NOP ERR

软件陷阱安排在以下3种地方: (1)未使用的中断向量区。 (2)未使用的大片ROM空间 (3)表格

由于软件陷阱都安排在正常程序执行不到的地方,故不影响程序执行效率,在当前EPROM容量不成问题的条件下,还是多多益善。

4.2.3 “看门狗”技术

“看门狗”技术就是不断监视程序循环运行时间,若发现时间超过已知的循环设定时间,则认为系统陷入了“死循环”,然后强迫程序返回到0000H入口,

在0000H处安排一段出错处理程序,使系统运行纳入正规。

“看门狗”技术可由硬件实现,可由软件实现,也可由两者结合实现。本系统采用硬件“看门狗”电路。

1.实现硬件“看门狗”电路方案较多,目前采用较多的方案有以下几种: 2.采用微处理器监控器;

3.采用单稳态电路来实现“看门狗”,单稳定电路可采用74LS123; 4.采用内带震荡器的记数芯片。

5.本设计采用第三种方案实现“看门狗”电路,下面就对该方案作以介绍。 4.2.3.1 基本原理

CD4060 是带震荡器的14位计数器,由该芯片构成的看门狗电路如图4.2看门狗电路图所示。

4060记数频率由RT和CT决定。设实际的程序所需工作周期为T,分频器记满时间为T’,当T’>T 且系统正常工作时,程序每隔T对4060进行复位一次,分频且永无记满输出信号。如系统工作不正常(如程序跑飞、死循环等),4060接收不到复位信号,分频器记满输出一脉冲号使CPU复位。 4.2.3.2 参数选择

4060的振荡频率f由 RT 、CT决定。Rs用于改善振荡器的稳定性,Rs 要大于RT。一般取Rs=10RT,且RT>1kΩ,CT≥100pF。如果Rs=450Ω,RT=45Ω,CT=1uF,则f=10HZ。4060的振荡频率和Qi(i=6,7,8,9,10,12,13,14)的选择要根据情况确定。 4.2.3.3 几个原则

看门狗电路必须由硬件逻辑组成,不宜由可编程计数器充当,因为CPU失控后,可能会修改可编程器件参数,使看门狗失效。

4060的RST线上阻容组成的微分电路很重要,因为扫描输入信号是CPU产生的正脉冲,若此信号变“1”后,由于干扰,程序乱飞,微分电路只能让上跳沿通过,不会封死4060,看门狗仍能计数起作用。若没有微分电路,扫描输入信号上的“1”状态封死4060,使之不能记数,看门狗不起作用。

图4-2看门狗电路图

CPU必须在正确完成所有工作后才能发扫描输入信号,且程序中发扫描信号的地方不能太多。否则,正好在哪里有死循环,看门狗就不产生记满输出信号,不能重新启动CPU。

4.3 程序设计

软件设计采用模块化设计,思路清晰,也便于查找问题。

4.3.1 红外解码

4.3.1.1 UPD6121G的编码

UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。芯片厂商把用户识别码固定为十六进制的一组数;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。图4-3为红外遥控编码图(a)和红外遥控信号周期性波形(b)。

图4-3(a)红外遥控解码图

图4-3(b)红外遥控信号周期性波形

根据UPD6121的编码规则,我门可以确定解码的规则。解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,如图4-4所示,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。

图4-4 红外遥控码的“0”和“1”

由于红外接收头得到的是反向的发射码,所以当我们从接收头得到红外码之后,还需要对其重新进行排序,以得到正确的红外控制码。

总 结

本次设计,综合了大学期间所学的知识,让我在毕业前得到了一次知识的巩固和一次自我检查的机会,通过本次设计,我的硬件设计能力,编程能力都得到了提升。

本次设计的硬件方面:虽然单片机能自行驱动显示器,但是考虑到单片机系统资源有限,直接驱动的话可能会导致负载过高,执行效率下降,所以我们加入了显示驱动芯片,节约单片机资源。超声传感器电路部分额外加入了单片机扩展了此模块功能,并且是的输出信号有规律可循,便于80C51单片机在之后的运行中检测四周电路,减小80C51负担,同时大大提高了电动车载应对障碍物时候的反应时间。

软件方面:因为传感器在检测到某物体时,输出信号会发生特定变化,利用这种变化规律,让单片机只对此类规律的信号有所反应,大大减少了处理数据,算法,从而加快了系统的反应速度,大量使用类似于JB/JNB命令对相应端口进行查询,并且简化程序代码,避免使用繁琐复杂的终端控制,确保系统的高精确度。另外,整个运行过程中通过采用等分时端口查询思想,只要分时足够小,电动车就会对外界因素有充足的反映空间,即达到了接近实时的信号检测处理效果,又可通过最终等分时数目准确计算出行驶距离,一举两得。

附 录

附录1:程序清单

bcm equ 30h ;厘米位

sec equ 31h ;秒位 bdm equ 32h ;分米位 msec equ 33h ;分秒位 meter equ 34h ;米位 min equ 35h ;分位 point equ 36h ;小数点位 tenmeter equ 37h ;十米位 tenmin equ 38h ;十分位

speed equ 39h ;速度控制 timerk equ 3ah ;记时开始

final equ 3bh zhodu equ 3ch zhon equ 3eh plus equ 3fh

carryb equ 40h bhcs equ 41h

dpan equ 42h minout equ 43h minin equ 44h judge equ 45h

fenmc equ 51h org 0000h ajmp main org 000bh ajmp st0 org 001bh ajmp st1 org 0100h main:

mov bcm,#00h mov sec,#00h mov bdm,#00h mov msec,#00h mov meter,#00h mov min,#00h mov point,#0bh mov tenmeter,#00h mov tenmin,#00h mov timerk,#00h mov final,#00h mov zhodu,#00h mov zhon,#00h mov plus,#00h mov carryb,#03h mov bhcs,#00h mov sp,#6fh mov tmod,#21h

mov th0,#3ch mov tl0,#0b0h mov th1,#9ch mov tl1,#9ch setb ea setb et0 setb et1 mov p1,#0aah acall display poweron:

jb p0.0,poweron acall delay jb p0.0,poweron mov speed,#03h clr p2.6 clr p2.7 setb tr1 start:

jnb p2.3,start acall delay jnb p2.3,start

jb p2.4,redf ;跳转红外控制模式 mov speed,#07h setb tr0 mov timerk,#01h call delaa call delaa call delaa call delaa call delaa jiance:

mov c,p2.0 mov 22h,c mov c,p2.1 mov 23h,c

mov c,p2.2 mov 24h,c mov c,p2.3 mov 25h,c mov c,p2.4 mov 26h,c zhangai:

jb 25h,stop jnb 22h,tr jnb 23h,tr jnb 24h,tl jnb 26h,tl ajmp jiance tl:

clr p0.5 clr p0.4 mov speed,#05h acall delaa setb p0.4 setb p0.5 mov speed,#07h ajmp jiance tr:

clr p0.6 clr p0.7 mov speed,#05h acall delaa setb p0.7 setb p0.6 mov speed,#07h ajmp jiance stop:

acall delay jnb 25h,zhangai clr tr0

mov a,bdm mov fenmc,a mov a,#02h add a,fenmc mov fenmc,a here: cjne a,bdm,here clr tr1 setb p2.6 acall delaa setb p2.7 ajmp $ st0:

push acc push psw mov th0,#3ch mov tl0,#0b0h inc final mov a,#0ah cjne a,final,out mov final,#00h inc zhodu mov a,#02h cjne a,zhodu,miepo mov point,#0bh mov zhodu,#00h inc sec mov a,#0ah cjne a,sec,out mov sec,#00h inc msec mov a,#06h cjne a,msec,out mov msec,#00h inc min mov a,#0ah

cjne a,min,out mov min,#00h inc tenmin out:

call display outb: pop psw pop acc reti miepo:

mov point,#0ah ajmp out st1:

push acc push psw inc zhon mov a,speed cjne a,zhon,hig setb p2.7 ajmp outi hig:

mov a,#0ah cjne a,zhon,outi mov zhon,#00h clr p2.7 outi:

mov a,#01h cjne a,timerk,outb jb p2.5,gao mov c,p2.5 mov 21h,c orl c,20h clr 20h jc youbh ajmp outb

gao:

setb 20h ajmp outb youbh:

inc plus mov a,carryb cjne a,plus,outb mov plus,#00h inc bhcs mov a,#02h cjne a,bhcs,jici mov carryb,#03h goon:inc bcm mov a,#0ah cjne a,bcm,out mov bcm,#00h inc bdm cjne a,bdm,out mov bdm,#00h inc meter cjne a,meter,out mov meter,#00h inc tenmeter ajmp out jici:

mov carryb,#02h ajmp goon redf: mov p0,#0ffh mov p1,#0ffh mov p2,#0ffh mov p3,#0ffh

jnb p2.4,$;等待遥控信号出现 mov r6,#10 sb:

acall ys1;调用882微秒延时子程序

jb p2.4,start;延时882微秒后判断p2.4脚是否出现高电平如果有就退出解码程序

djnz r6, sb;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序

;以上完成对遥控信号的9000微秒的初始低电平信号的识别。 jnb p2.4, $ ;等待高电平避开9毫秒低电平引导脉冲 acall ys2 ;延时4.74毫秒避开4.5毫秒的结果码 mov r1,#1ah ;设定1ah为起始ram区 mov r2,#4 pp: mov r3,#8 jjjj:

jnb p2.4,$;等待地址码第一位的高电平信号

lcall ys1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态

mov c,p2.4;将p2.4引脚此时的电平状态0或1存入c中 jnc uuu;如果为0就跳转到uuu

jb p2.4,$;如果为1就等待高电平信号结束 uuu:

mov a,@r1;将r1中地址的给a

rrc a;将c中的值0或1移入a中的最低位 mov @r1,a;将a中的数暂时存放在r1中 djnz r3,jjjj;接收地址码的高8位 inc r1;对r1中的值加1,换成下一个ram

djnz r2,pp ;接收完16位地址码和8位数据码和8位数据反码,存放在1ah/1bh/1ch/1dh的ram中

;以下对代码是否正确和定义进行识别 mov a,1ah;比较高8位地址码

xrl a,#00000000b ;判断1ah的值是否等于00000000,相等的话a为0 jnz exit;如果不相等说明解码失败退出解码程序 mov a,1bh;比较低8位地址

xrl a,#11111111b ;再判断高8位地址是否正确 jnz exit;如果不相等说明解码失败退出解码程序 mov a,1ch;比较数据码和数据反码是否正确?

cpl a

xrl a,1dh ;将1ch的值取反后和1dh比较 不同则无效丢弃,核对数据是否准确

jnz exit;如果不相等说明解码失败退出解码程序 clr p2.7;解码成功发光二极管点亮指示! ajmp bijiao

;判断在118毫秒内是否有连发码 aa: mov r1,#25 xx: acall ys2

jnb p2.4,hh;跳转到判断连发代码是否正确的程序段 djnz r1,xx exit:

mov p0,#0ffh;对所有端口清零 mov p1,#0ffh mov p2,#0ffh mov p3,#0ffh ajmp start

;连发码判断程序段----------- hh: mov r6,#4 s:

acall ys1;调用882微秒延时子程序

jb p2.4,exit;延时882微秒后判断p2.4脚是否出现高电平如果有就退出解码程序

djnz r6, s;重复4次,目的是确认连发码的低电平信号波形 jnb p2.4, $ ;等待高电平 ajmp aa bijiao:

mov a,1ch;按键数值判断执行 cjne a,#00000101b,tt1 cpl p0.0

tt1:

cjne a,#00000100b,tt2 cpl p0.1 tt2:

cjne a,#00010000b,t3 cpl p0.2 t3:

cjne a,#01001101b,t5 cpl p0.3 t5:

cjne a,#01001110b,t6 cpl p0.4 t6:

cjne a,#01001100b,t7 cpl p0.5 t7:

cjne a,#00001001b,t8 cpl p0.6 t8:

cjne a,#00011101b,t9 cpl p0.7 t9:

cjne a,#00011111b,t10 cpl p2.6

t10: cjne a,#00001101b,t11 cpl p2.5 t11:

cjne a,#00011001b,t12 cpl p2.4 t12:

cjne a,#00011011b,t13 cpl p2.3 t13:

cjne a,#00010001b,t14 cpl p2.2

t14:

cjne a,#00010101b,t15 cpl p2.1 t15:

cjne a,#00010111b,t16 cpl p2.0 t16:

cjne a,#00010010b,t17 cpl p1.0 t17:

cjne a,#00010110b,t18 cpl p1.1 t18:

cjne a,#01011110b,t19 cpl p1.2 t19:

cjne a,#01011101b,t20 cpl p1.3 t20:

cjne a,#01011100b,t21 cpl p1.4 t21:

cjne a,#01001111b,t22 cpl p1.5 t22:

cjne a,#00000001b,t23 cpl p1.6 t23:

cjne a,#00000011b,t24 cpl p1.7 t24:

cjne a,#00000000b,t25 cpl p3.0 t25:

cjne a,#00010100b,t26

cpl p3.1 t26:

cjne a,#00011110b,t27 cpl p3.3 t27:

cjne a,#00011010b,t28 cpl p3.4 t28:

cjne a,#00001111b,t29 cpl p3.5 t29:

cjne a,#00001010b,t30 cpl p3.6 t30:

cjne a,#00001110b,ok cpl p3.7 ok: ajmp aa ys1:

mov r4,#20 ;延时子程序1,精确延时882微秒 d1: mov r5,#20 djnz r5,$ djnz r4,d1 ret ys2:

mov r4,#10 ;延时子程序2,精确延时4740微秒 d2: mov r5,#235 djnz r5,$ djnz r4,d2 ret end ctl:

mov a,1ch

cjne a,#00000100,ctl1 ;判断左转 amjp tl ctl1:

cjne a,#00000101,ctl2 ;判断右转 ajmp tr ctl2:

cjne a,#00000110,ctl3 ;判断加速转 ajmp high ctl3:

cjne a,#00000111,ctl4 ;ajmp stop display:

mov p1,#0aah mov p1,#0cch mov a,bcm swap a add a,sec mov p1,a nop nop

mov p1,#0ddh mov a,bdm swap a add a,msec mov p1,a nop nop

mov p1,#0eeh mov a,#0b0h add a,point mov p1,a nop nop

mov p1,#0eeh mov a,meter

判断倒车转 swap a add a,min mov p1,a nop nop

mov p1,#0ffh mov a,tenmeter swap a add a,tenmin mov p1,a ret delay:

mov 46h,#0ffh mov 47h,#0ffh i:djnz 47h,i1 i1:djnz 46h,i ret delaa:

mov 48h,#0ah ii:mov 49h,#0afh ii2:mov 50h,#0ffh ii3:djnz 50h,ii3 djnz 49h,ii2 djnz 48h,ii ret

附录2:系统电路图

因篇幅问题不能全部显示,请点此查看更多更全内容