《毕业设计基于单片机的智能控制鸡雏恒温孵化器设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于单片机的智能控制鸡雏恒温孵化器设计.doc(37页珍藏版)》请在三一办公上搜索。
1、高等职业学校毕业设计姓 名: 学 号: 系 部: 专 业: 机电一体化 设计题目: 单片机控制鸡雏恒温孵化器 指导教师: 职 称: 高级讲师 2012 年 5 月 摘 要随着电究所子技术的发展,微处理器、集成电路不断更新、发展,温度是工业生产和自动控制中最常见的工艺参数之一,任何物理变化和化学变化的过程都与温度密切相关,因此,在生产过程中常需对温度进行检测和监控。采用单片机进行温度检测、数值显示和数据的存储,效率高,性能稳定,还可以实现实时控制等技术要求,在工业生产中应用越来越广泛。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用范围的日
2、益广泛和多样,各种适用于不同场合的温度控制器应运而生。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中鸡雏恒温孵化器就是一个典型的例子,本设计所介绍的鸡雏恒温孵化器,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89C51,测温传感器使用DS18B20,用液晶LCD1602实现温度显示。关键词:单片机;温度传感器;LCD液晶屏;恒温 目 录1 绪论11.1 恒温控制系统概况11.2 本文研究内容12 CPU最小系统设计22.1 恒温系统总体设计方案22.
3、2 CPU的选择22.3 89C51单片机32.3.1 AT89C51主要特性32.3.2 89C51单片机的基本结构32.3.3 89C51单片机引脚功能32.4 数据存储器扩展42.5 复位电路设计62.6 时钟电路设计72.7 CPU最小系统图73 CPU输入输出接口电路设计93.1 温度传感器的选择93.2 温度检测接口电路A/D转换器选择103.3 人机对话接口电路设计113.3.1 显示接口电路设计113.3.2 简易式键盘接口电路设计123.4 报警与控制电路144 系统软件设计154.1 系统主程序设计154.2 温度控制部分程序设计164.3 键盘部分程序设计164.4 温度
4、显示子程序设计174.5 数据采集模块程序设计185 单片机程序196 课程设计总结28参考文献29致 谢301 绪论1.1 恒温控制系统概况本设计的内容是恒温控制系统,控制对象是温度。温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。随着电究所子技术的发展,微处理器、集成电路不断更新、发展,温度是工业生产和自动控制中最常见的工艺参数之一,任何物理变化和化学变化的过程都与温度密切相关,因此,在生产过程中常需对温度进行检测和监控。采用单片机进行温度检测、数值显示和数据的存储
5、,效率高,性能稳定,还可以实现实时控制等技术要求,在工业生产中应用越来越广泛。1.2 本文研究内容本设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:当温度低于设定下限温度时,系统自动启动加热继电器加温,使温度上升。当温度上升到下限温度以上时,停止加温;当温度高于设定上限温度时,系统自动启动风扇降温,使温度下降。当温度下降到上限温度以下时,停止降温。温度在上下限温度之间时,执行机构不执行。LCD液晶显示器即时显示温度。本设计主要设计内容:硬件电路设计:1. CPU最小系统设计(包括CPU选择,晶振电路,复位电路)2. 温度传感器选择及接口电路设计3. 驱动电路设计软件
6、设计:1.编程程序流程图2.程序清单编编写2 CPU最小系统设计2.1 恒温系统总体设计方案本设计题目为基于单片机的鸡雏恒温孵化器的设计,温度控制设定范围为0-50C,上、下限温度在程序中设置,实现控制可以升温也可以降温,实时显示当前温度值,另外还有蜂鸣器报警功能。本文使用热电偶温度自动控制系统。(采用A/D转换器)采用单片机控制,液晶显示模块LCD显示。系统框图如图2.1:键盘电路温度显示报警电路单片机继电器控制A/D转换电路加热装置信号放大温度传感器图2.1 温度控制系统原理图2.2 CPU的选择由于单片机具有功能强、体积小、可靠性好和价格便宜等独特优点,已成为传统工业技术改造和新产品更新
7、换代的理想机种,具有广泛的发展前景。单片机技术的应用,使得许多领域的技术水平和自动化程度大大提高,可以说,当今世界正面临着一场以单片机(微电脑)技术为标志的新技术革命本设计决定用单片机作为中心控制器。现流行的单片机有很多种,其中MCS-51系列以较高的性价比博得很多用户的青睐。所以,本系统采用美国Intel公司生产的89C-51型单片机,由于其具有集成度高、处理功能强、可靠性高、系统结构简单、价格低廉等优点并具有4K字节的程序存储器,使得它应用起来更加方便。2.3 89C51单片机2.3.1 AT89C51主要特性(1)面向控制的8位CPU;(2)片内4KB Flash ROM 程序存储器;(
8、3)128B的片内数据存储器;(4)可寻址64KB的片外程序存储器和片外数据存储器控制电路;(5)2个16位定时/计数器;(6)4个并行I/O口,共32条可单独编程的I/O;(7)5个中断源,2个中断优先级;(8)低功耗的闲置和掉电保护模式;2.3.2 89C51单片机的基本结构89C51由8个部件组成,即中央处理器(CPU),片内数据存储器(RAM),片内程序存储器,输出/输入接口(I/O,分为P0口、P1口、P2口、P3口),可编程串行口,定时/计数器,中断系统及特殊功能寄存器。2.3.3 89C51单片机引脚功能(1)XTAL1:接外部晶体和微调电容的一端。在89C51片内,它是振荡电路
9、反向放大器的输入端及内部时钟发生器的输入端,振荡电路的频率就是晶体的固有频率。当采用外部振荡器是次引脚输入外部时钟脉冲。(2)XTAL2:解外部晶体和微调电容的另一端。在89C51片内,它是振荡电路反向放大器的输出端。在采用外部振荡器时此引脚应悬浮。通过示波器查看XTAL2端是否有脉冲信号输出,可以确认89C51的振荡电路是否正常工作。(3)RST:复位信号输入端,高电平有效。当振荡器工作时,在此引脚上出现两个机器周期一上的高电平,就可以使单片机复位。(4)ALE/ :地址锁存允许信号。ALE锁存 P0口传送的低8位地址信号,实现低8位地址与数据的分离。(5) :外部程序存储器的读选通信号。当
10、89C51由外部程序存储器取指令(或常数)时,每个机器周期内 两次有效输出。(6) /VPP:内,外ROM选择端。当 端接高电平时,CPU访问并执行内部ROM的指令;但当PC值超过4KB时,将自动转去执行外部ROM中的程序。但 端接低电平时,CPU只访问外部ROM中的指令。(7)P0口:双向8位三态I/O口,在访问外部存储器时,可分时用做低8位地址线和8位数据线。无上拉电阻,能驱动8个LSTTL门电路。 P1口:8位双向I/O口,用做普通I/O口。有上拉电阻,能驱动4个LSTTL门电路。 P2口:8位双向I/O口,做高8位地址线。有上拉电阻,能驱动4个LSTTL门电路。 P3口:8位双向I/O
11、口,具有第二功能。有上拉电阻,能驱动4个LSTTL门电路。89C51单片机的引脚图(40脚双列直插封装)如下图2.2 89C51单片机的引脚图2.4 数据存储器扩展89C-51型单片机片内有128B的RAM,在实际应用中仅靠这256B的数据存储器是远远不够的。这种情况下可利用MCS-51单片机所具有的扩展功能扩展外部数据存储器。MCS-51系列单片机最大可扩展64KB。6264是8K8位静态随机存储器,采用CMOS工艺制造,单一+5V电源供电,额定功率200mW,典型存取时间200ns,为28线双列直插式封装。图2.3 6264引脚图6264的特性及引脚信号 6264的容量为8KB,是28引脚
12、双列直插式芯片,采用CMOS工艺制造A12A0:地址线,可寻址8KB的存储空间。D7D0:数据线,双向,三态。 :读出允许信号,输入,低电平有效。 :写允许信号,输入,低电平有效。CE1:片选信号1,输入,在读/写方式时为低电平。 CE2:片选信号2,输入,在读/写方式时为高电平。 VCC:+5V工作电压。GND:信号地。 6264的操作方式 6264的操作方式由CE1、CE2的共同作用决定写入:当和为低电平,且和CE2为高电平时,数据输入缓冲器打开,数据由数据线D7D0写入被选中的存储单元。 读出:当和为低电平,且和CE2为高电平时,数据输出缓冲器选通,被选中单元的数据送到数据线D7D0上。
13、 保持:当为高电平,CE2为任意时,芯片未被选中,处于保持状态,数据线呈现高阻状态。 89C51单片机与6264的接口,如下图:图2.4 89C51单片机扩展74LS373是一种带三态门的8D锁存器,其管脚示意图如下图所示:图2.5 74LS373引脚图其中D0D7为8个输入端;,Q0Q7为8个输入端;LE为数据打入端:当LE为“1”时,锁存器输出状态同输入状态:当LE“0”时,数据打入端锁存器;为输出允许端:当=0时,三态门打开;=1时,三态门关闭,输出高阻。2.5 复位电路设计单片机复位电路图2.6为单片机复位电路。单片机在开机时都需要复位,以便中央处理CPU以及其他功能部件都处于一个确定
14、的初始状态,并从这个状态开始工作。单片机的复位后是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便可实现初始化状态复位。MCS-51单片机的RST引脚是复位信号的输入端。例如:若MCS-51单片机时钟频率为12MHz,则复位脉冲宽度至少应该为2s。图2.6 复位电路原理图2.6 时钟电路设计片内电路与片外器件就构成一个时钟产生电路,CPU的所有操作均在时钟脉冲同步下进行。片内振荡器的振荡频率非常接近晶振频率,一般多在1.2MHz24MHz之间选取。C1、C2是反馈电容,其值在20pF100pF之间选取,典型值为30pF。
15、本电路选用的电容为30pF,晶振频率为12MHz。振荡周期; 机器周期; 指令周期图2.7 时钟电路原理图2.7 CPU最小系统图本设计中的89C51的最小系统包括89C51单片机,6264可编程I/O接口,晶振电路,按键复位电路.1.复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用1030uF,容值越大需要的复位时间越短。2.晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的的晶振,晶振的振荡频率直接影响单片机的处理速度,频率越大单片机处理速度越快。本设计采用110592MHz,图中用约等于12MHz。3.起振电容C2、C3一般采用1533
16、uF,并且电容离晶振越近越好,晶振离单片机越近越好。本设计中C2、C3采用33uF。CPU最小系统图如图2.8图2.8 CPU最小系统图3 CPU输入输出接口电路设计3.1 温度传感器的选择本设计采用智能温度传感器DS18B20,它的最高分辨率为12位,可识别0.0625 的温度。它具有直接输出信号和数据处理功能,并且它和单片机的接口只需要一位I/O口,因此有塔构成系统简单实用。DS18B20按照工业设计要求,抗干扰性能强,温度测量范围为。DS18B20是采用“1-wire”,即一线总线传输数据的集成温度传感器,信息经过单线接口送入DS18B20 或从DS18B20送出,因此从中央处理器到DS
17、18B20仅需要连接一条线。可采用外部电源供电,也可采用总线供电方式,此时,把VDD连在一起作为数字电源。因为每一个DS18B20有唯一的系列号(silicon serial number),因此多个DS18B20可以存在同一条单线总线上,这允许在许多地方放置温度灵敏器件。此特性的应用范围包括HVAC环境控制,建筑物,设备或机械内的温度检测,以及过程检测和控制中的温度检测。DS18B20内部结构如图3.1, DS18B20引脚说明如表3.1,主要由4部分组成:61为ROM,温度窗前,非挥发的温度报警触发器TH和TL,配置寄存器。图3.1 DS18B20内部结构图表3.1 DS18B20的引脚说
18、明引脚符号说明1GND地2DQ单线运输的数据输入/输出引脚3VCC可选VDD引脚两种供电方式器件从单线的通信线去得其电源,在信号线为高电平的时间周期内,把能量贮存在内部的电容器中,在单信号线为低电平的时间期内断开此电源,直到信号线变为高电平重新接上寄生电源为止。作为另一种可供选择的方法,DS18B20也可用外部5V电源供电。DS18B20与89C51接线方式如图3.2。图3.2 DS18B20与89C51接线方式3.2 温度检测接口电路A/D转换器选择A/D转换接口是系统数据采集前向通道的一个重要环节。数据采集是在模拟信号源中采集信号,并将之转换为数字信号送入计算机的过程。AD574由两部分组
19、成,一部分是模拟芯片,另一部分数字芯片,其中模拟部分由高性能的12位D/A转换器AD565和参考电压组成。数字部分由控制逻辑电路,逐次逼近型寄存器的三态缓冲器组成。AD574的引脚如图3.2所示。功能特性分辨率:12位;非线性误差:小于0.5LSB或1LSB;转换速率:25s;模拟电压输入范围:0-10V,0-20V;电源电压:15V和5V;数据输出格式:12位/8位芯片工作模式:全速工作模式和单一工作模式。图3.2 AD574的引脚图3.3 人机对话接口电路设计3.3.1 显示接口电路设计显示电路如图3.3所示。LED显示块是由发光二极管显示字段的显示器件。这种显示块有共阴极和共阳极两种。共
20、阴极LED显示块的发光二极管共地。图3.3 显示电路原理图当某个发光二极管的阳极为高电平时,发光二极管点亮;本设计选用的显示块是共阴极的LED(共阴极LED显示块的发光二极管阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮)。将单片机I/O口的8位线与显示块的发光二极管的引出端(adp)相连,共阴极低电平有效,选通有效后8位并行输出口输出不同的数据就点亮相应的发光二极管,获得不同的数字或字符。3.3.2 简易式键盘接口电路设计8255可编程并行I/O接口设计MCS-51系列单片机共有4个8位并行I/O口,这些I/O口一般是不能完全提供给用户使用的,在外部扩展存储器时,提给用户使用的I
21、/O口只有P1和P3口的部分口线。因此在大部分的MCS-51单片机应用系统中都免不了要进行I/O口的扩展。8255芯片引脚图如图3.4所示。图3.4 8255引脚图图3.5 I/O口扩展电路单片机也8255的接口比较简单,如图3.5所示,8255的片选信号及口地址选择线AO、A1分别由单片机的P0.7和P0.0、P0.1经地址锁存器提供.8255的A、B、C口及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。8255的D0D7分别与P0.0到P0.7相连。键盘功能说明:1号键:上升。2号键:下降。3号键:下限温度值确定。4号键:上限值确定。5号键:查询上下限值。使用1号键和2号
22、键,设定需要的温度控制系统的上限值,然后按下4号键,将这个上限值确定,也就是将上限值保存到专用的寄存器里。在完成设定上限值的工作后,使用1号键和2号键设定需要的温度控制系统的下限值,然后按下3号键,将这个下限值确定,也就是将这个下限值保存到专用的寄存器里,然后系统进去实时的温度测量和控制工作中。键盘接口电路如图3.6所示: 图3.6 键盘接口电路图3.4 报警与控制电路该部分是单片机和外部报警与控制的接口部分,主要起报警、执行和电气隔离作用,其电路图如图3.7所示。继电器采用SRD-D6VDC-SL-C型,240AC通断TA的电流。其直流线圈电阻95欧,三极管Q1采用KTC9012,输出电流I
23、C为150mA,放大系数为60至1000范围内,若取为200则Ic在5V下为50mA左右,则基极电流为0.25mA。只有P0口在高点位输出时才能达到这样大的电流值。因此把这两个口分别用P0和P01代替。由于P0口属于三态输出输入口,因此,必须接上拉电阻,其阻值大小可计算为 我们取10千欧的电阻让Q1在高电平时饱和导通,此时,基极电流为。二极管D1主要起保护作用,在Q1关断时续流,以免电感线圈断路时产生过压损坏三极管。图3.8 继电器、报警与执行电路由于DS18B20自带了存储器,能够将设定的温度报警值自动存入 DS18B20 的 EEROM 中,永久保存,因此每次开机时系统都会自动从 DS18
24、B20 的 EEROM 读出温度报警值.两个继电器中,K1接的是降温装置,K2接的是加热装置,当实际温度大于 TH 的设定值时,蜂鸣器响,表示超温,此时继电器K1吸合,接通降温装置进行降温;当实际温度处于 TL 与TH的设定值之间时,继电器常闭。4 系统软件设计4.1 系统主程序设计主程序流程图如图4.1所示主程序完成的功能是:启动传感器测量温度,将测量温度与给定值比较进行PID运算,若,则进入加热阶段,置P13为高开始初始化按键设定温度上下限送显示送counter=3调温度子程序转换送显示PID运算NN显示正常温度高温报警并停止加热低温报警并加热YY键盘处理有键按下?counter-1=0?
25、counter-1=0?等待下一个采样YYNN图4.1 系统主程序流程图电平。在过程中继续对温度进行监测,当时,置P13为低电平断开可控硅,关闭加热器,等待下一次的启动命令。4.2 温度控制部分程序设计这部分程序的功能是将采集到的温度值TX与TL比较,如果TXTL则报警,并置P3.1口为低电平,通过光耦合器打开可控硅,使加热器加热,并调显示,显示88.8。否则将TX与TH比较,如果TXTH则报警,并置P13口为高电平,通过光耦合器关闭可控硅,停止加热器加热,并调显示,显示88.8。否则,也就是当温度在正常范围内,调显示,显示采集到的温度值。加热程序流程图如图4.14所示。 开始地址和计数器换码
26、送显存显示灯亮、蜂鸣器响置P1.3口为1,打开加热器LED显示返回计数器换码送显存 YN开始有键按下?延时20ms判别键号执行键处理子程序返回NY图4.2 温度控制程序流程图图 4.3 键盘处理子程序流程图4.3 键盘部分程序设计本部分主要是实现输入设定温度和查询设定温度的功能。该部分的子程序流程图如图4.3所示。在键盘的控制方面,由于采用了5个单键,因此使得键值识别的问题也比较简单。在执行程序的时候只需要逐位判断PA0,PA1,PA2,PA3,PA4口是高电平还是低电平,若为高电平,则表示没有按键按下,若为低电平,则表示已经有键按下,于是执行键的处理子程序。在程序的设计当中,考虑了键的去抖动
27、问题。在发现有键闭和时,不是立即读入该键值,而是延时一段时间以后,再进行键闭和与否的判断,确认此时真的有键按下,有则进行该按键的处理,没有则不进行处理。4.4 温度显示子程序设计此模块采用的是动态扫描的方法,依次改变P0口输出高电平的位和P2口输出对应的数据段,就可以轮流点亮显示器的各位数码管。动态显示是把十六进制数(或BCD码)转换为相应字形码,故它通常需要在RAM区建立一个显示缓冲区。显示部分流程图如图4.4所示。开始显示缓冲区指针置初值30H送R0扫描模式置初值FEH送R1R1送P2口取显示数据查表转换为段数据送P0口延时1ms显示缓冲器指针R0+1R1=0?R1左移一位返回YN图4.4
28、 显示子程序流程图4.5 数据采集模块程序设计数据采集的主要任务是巡回检测三点的温度参数并把它们存在外部RAM指定单元,采样程序如图4.17所示。采样程序初始化各通道都采集一次?输出通道号启动A/D转换读A/D数据修改通道及通道号重装定时器0常数启动返回NY图4.5 温度采样程序流程5 单片机程序单片机程序如下:ORG 0000H SJMP MAINORG 0003H LJMP INTORG 0025HMAIN: MOV SP,#60H MOV 20H,#00H MOV 21H,#08H MOV 29H,#0FEH LCALL ZIJIAN LCALL READTHTL LCALL TESTR
29、ANGE LCALL DISP SETB INT0 SETB EX0 SETB EALOOP: LCALL DELAY LCALL GET_TEMP LCALL TURN LCALL DISPLAY CLR C MOV A,24H CJNE A,2EH,LOOP1 SJMP HOTTINGLOOP1: JC HOTTING MOV A,24H CLR C CJNE A,2DH,LOOP2 SJMP STOPHOTLOOP2: JNC STOPHOT SJMP KEEPHOTTING: CLR P3.1 CLR P1.5 SETB P1.6KEEP: SJMP LOOPSTOPHOT: SETB
30、 P3.1 SETB P1.5 CLR P1.6 SJMP LOOPZIJIAN: MOV 30H,#08H MOV 31H,#08H MOV 32H,#13H MOV 33H,#08H MOV 34H,#13H CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV R3,#0FFHWAIT0: ACALL DISPLAY DJNZ R3,WAIT0 SETB P1.5 SETB P1.6 SETB P1.7 RETTURNTH: MOV 2DH,27H MOV 2EH,28H MOV 24H,27H ACALL TURN MOV 2AH,30H MOV 2BH,31
31、H MOV 2CH,32H MOV A,2CH CLR C SUBB A,#0BH MOV 2CH,A MOV 33H,#00H MOV 34H,#15H RETTESTRANGE: MOV A,2AH CJNE A,#01H,NOMAX MOV 22H,#08H SJMP EXITTESTNOMAX: MOV A,2BH CJNE A,#00H,MIDD MOV 22H,#02H SJMP EXITTESTMIDD: MOV 22H,#04HEXITTEST: RETDISPLAY: MOV R0,#03HDIS: MOV DPTR,#TAB MOV A,R0 MOVC A,A+DPTR M
32、OV DPTR,#7FFFH MOVX DPTR,A INV R0 MOV DPTR,#0BFFFH MOV A,29H MOVX DPTR,AHERE: DJNZ R4,HERE SETB C RLC A MOV 29H,A JB ACC.5,DIS MOV 29H,#OFEH RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,OBFH DB 86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,79HGET_TEMP: CLR EA ACALL INI MOV A,#0CCH ACALL WRITE
33、 MOV A,#44H ACALL WRITE ACALL INI MOV A,0CCH ACALL WRITE ACALL READ MOV 24H,A SETB EA RETSETTHTL: CLR EA ACALL INI MOV A,#0CCH ACALL WRITE MOV A,#4EH ACALL WRITE MOV A,2DH ACALL WRITE MOV A,2EH ACALL WRITE ACALL INI MOV A,#0CCH ACALL WRITE MOV A,#48H ACALL WRITE ACALL READTHTL MOV A,27H CJNE A,2KH,S
34、ETTHTL MOV A,28H CJNE A,2EH,SETTHTL SETB EA RETREADTHTL: CLR EA ACALL INI MOV A,0CCH ACALL WRITE MOV A,#0B8H ACALL WRITE ACALL INI MOV A,#0CCH ACALL WRITE MOC A,#0BEH ACALL WRITE ACALL READ ACALL READ ACALL READ MOV 27H,A ACALL READ MOV 28H,A SETB EA RETINI: CLR P3.0 MOV R2,#10011: CLR P3.0 DJNZ R2,
35、I1 SETB P3.0 MOV R2,#15I2: DJNZ R2,I2 CLR C ORL C,P3.0 JC INI MOV R6,#40HI3: ORL C,P3.O JC I4 DJNZ R6,I3 SJMP INII4: MOV R2,#120I5: DJNZ R2,I5 RETTEAD: MOV R6,#8WR1: SETB P3.0 MOV R4,#4 RRC A CLR P3.0WR2: DJNZ R4,WR2 MOV P3.0,C MOV R4,$40WR3: DJNZ R4,WR3 DJNZ R3,WR1 SETB P3.0 RETREAD: MOV R6,#8RE1:
36、CLR P3.0 MOV R4,#2 SETB P3.ORE2: DJNZ R4,RE2 MOV C,P3.0 RRC A MOV R5,#15RE3: DJNZ R5,RE3 DJNZ R6,RE1RE5: SETB P3.0 RETTURN: CLR C MOV A,24H RRC A MOV 25H,A JNC TURN0 MOV 33H,#05H AJMP TURN1TURN0: MOV 33H,#00HTURN1: MOV A,25H ACALL BTOD RETBTOD: MOV B,#100 DIV AB MOV T0,#30H MOV R0,H INC R0 MOV A,#10
37、 XCH A,B DIV AB MOV R0,A INC R0 MOV A,B ADD A,#0BH MOV R0,A RETDIS: LCALL DIR JNB P3.0,LC JNB P3.4,LC0 JNB P3.2,LC1 JNB P3.5,LC2 AJMP DISLC: LCALL DEL JB P3.0,DIS MOV A,30H CJNE A,#0FFH,XIA MOV A,#5 ADD A,30H MOV 30H,A INC 31H LCALL IBTD2 AJMP DISLC0: LCALL DEL JB P3.4,DIS MOV A,30H CJNE A,#00H, DECLINE MOV A,30H SUBB A,#5 MOV 30H,A DEC 31H LCALL I