《毕业论文:简易水温控制系统.doc》由会员分享,可在线阅读,更多相关《毕业论文:简易水温控制系统.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、仲恺农业技术学院毕 业 设 计简易的水温控制系统姓 名 姚金顺院(系) 信息学院专业班级 电子信息工程045班学 号 200410724528指导教师 王改田职 称 讲师论文答辩日期 2008年 4月 18日仲恺农业技术学院教务处制学生承诺书本人郑重承诺此论文是在王改田老师的指导下独立完成的,除了文中特别加以标注和致谢的地方外,论文中不包含其他人发表或撰写过的研究成果。相关文献的引用已在论文中作了明确的说明。论文与资料若有不实之处,本人愿意承担责任,特此声明!(该承诺书是学生对毕业论文的真实性的承诺,如:是否是在老师的指导下独立完成,是否抄袭别人的成果,是否能对文章负责等等。上文内容仅供参考。
2、) 签名:_摘 要该设计要完成的是简易水温控制器的设计。实现满足题目要求的温度测量控制系统需要解决以下两个方面的问题:一是实现精度大于1的温度测量电路及其数据处理的实现,另一个控制方法及其控制电路实现的研究。目前,实现温度精度控制常采用数字控制方法。该设计介绍了以89C52单片机为控制核心,以传感器AD590为传感器采集温度信号,利用A/D将被测温度信号由模拟量转换为数字量后送入单片机系统进行处理, 并由LED显示器直接跟踪显示温度值,同时具有设定温度范围,以PID运算控制的方法实现温度恒定的电子装置。文章着重的介绍了系统的硬件及软件设计,该设计根据温度控制的实际需要程度,从温度控制电路和控制
3、策略两个方面讨论温度自动控制系统的实现。整个设计采用了比较科学的设计方案,选用了比较精确的元器件,提高了系统的精度和测量范围。关键词:单片机,温度传感器,PID算法,温度控制电路 目 录1. 前言12. 系统设计原理12.1. 水温控制的基本思路:22.2. 水温控制原理:23. 设计方案与论证23.1. 总体设计方案与论证23.2. 各部分电路方案论证33.2.1. 温度采样部分33.2.2. 键盘显示部分43.2.3. 控制电路部分44. 硬件电路设计与计算54.1. 温度采样和转换电路54.1.1. AD590的主要特性64.1.2. 转换与放大电路64.1.3. ADC0804性能描述
4、64.1.4. 电路原理及参数计算64.2. 温度控制电路84.3. 单片机控制部分84.4. 键盘及数字显示部分95. 系统的软件设计115.1. 键盘显示程序115.2. 主程序设计125.3. PID算法的介绍135.4. 主程序语言设计15参 考 文 献29英语摘要30致 谢31仲恺农业技术学院毕业论文(设计)成绩评定表32前言在日常生活中通过水温控制来给人们带来舒适的,方便的生活.例如刚在外工作回家的男人一定会很疲倦了,如果能够洗个热水澡,那真是非常好的事情了.这样能够让一天的疲惫随着温热的流水带走了,家庭主妇要为家人煮一个热喷喷的汤水.煮好以后就这样放着也会变凉的,如何保持水温的恒
5、定呢?这就需要需要水温控制系统了.水温控制在工业及日常生活中应用广泛,分类较多,不同水温控制系统的控制方法也不尽相同,其中以PID控制法最为常见。单片机控制部分采用AT89C52单片机为核心,采用软件编程,实现用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。然而,单纯的PID算法无法适应不同的温度环境,在某个特定场合运行性能非常良好的温度控制器,到了新环境往往无法很好胜任,甚至使系统变得不稳定,需要重新改变 PID 调节参数值以取得佳性能。本文首先用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。然后在模型参考自适应算法MRAC基础上,用单片机实现了自适应
6、控制,弥补了传统PID控制结构在特定场合下性能下降的不足,设计了一套实用的温度测控系统,使它在不同时间常数下均可以达到技术指标。此外还有效减少了输出继电器的开关次数,适用于环境参数经常变化的小型水温控制系统。键盘单片机基本系统1. 系统设计原理A/D转换信号放大传感器键盘显示电炉功率放大图1-1 单片机控制系统原理框图该水温控制系统主要由AT89C51单片机控制系统、前向通道(温度采样转换电路)、后向通道(温度控制电路)、键盘显示电路等四部分组成,其总体设计框图如上图所示。1.1. 水温控制的基本思路: 要实现水温的自动控制,首先,要准确的检测到水的温度;其次,把检测到信号通过模/数转换,成为
7、控制器件可识别的数字信号;再次,由单片机来完成控制加热,让水的温度不低于设定值。如果温度将高于设定值,则关闭加热器件,让水自行冷却,保持温度在设定值。误差不高于1。 1.2. 水温控制原理: AD590温度传感器把温度信号转换成电流信号,通过放大器变成电压信号,然后送入ADC0804变换器,输出BCD码,送入AT89C52单片机,运算控制器将数据保存,以便与下一次采样值进行比较,同时数码管实时显示温度值。温度测量值与温度设定值送入由AT89C52组成的控制主板后,由单片机的CPU对数据进行处理和比较分析。若测量值高于温度设定范围,根据系统程序控制,运算得到加热器开启时间,然后由单片机发出控制信
8、号,经过驱动电路使加热器工作。当加热时间达到了程序运算得到的时间长度时,单片机发出一个控制信号,关闭加热器。通过继电器的反复开启和关闭,使容器内水温保持在设定的温度范围内。 ,因此3位数码管刚好可以满足显示的需要。数码管的第1位显示温度值的十位数值,第2位显示个位数值,第3位显示温度值的小数点后一位。 整个控制系统的组成按功能可以分成以下几个部分:该水温控制系统主要由AT89C52单片机控制系统、前向通道(温度采样转换电路)、后向通道(温度控制电路)、键盘显示电路等四部分组成。本测控系统采用AT89C52单片机作为微处理器,前向信号输入通道,采用AD590作为温度传感器,与OP-07(放大器)
9、组成的放大调制电路一起构成了精密的测温电路.后向通道,单片机输出一个控制信号,再由场效应管组成的电路对其进行放大,然后控制继电器的通断,进而控制加热器的开关。2. 设计方案与论证2.1. 总体设计方案与论证根据题目的要求,我们提出了以下的两种方案:方案一:传统的模拟控制方法此方案是采用传统的模拟控制方法(方案框图如图3-1),选用模拟电路,用电位器设定给定值,反馈的温度值与给定的温度值比较后,决定加热或者降温。特点是电路简单,易于实现,但是系统所得结果的精度不高并且调节动作频繁,系统静差大,不稳定。系统受环境的影响大,不能实现复杂的控制算法,而且不易实现对系统的控制及对温度的显示,人机交换性能
10、差。控制开关比较器信号放大信号放大温度预制数据采集 图2-1模拟控制框图方案二:单片机89C52为核心,温度传感器AD590采集温度采用单片机89C52为核心。采用了温度传感器AD590采集温度变化信号,A/D采样芯片ADC0804将其转换成数字信号并通过单片机处理后去控制温度,使其达到稳定。使用单片机具有编程灵活,控制简单的优点,使系统能简单的实现温度的控制及显示,并且通过软件编程能实现各种控制算法使系统还具有控制精度高的特点。比较两种方案,方案二明显的改善了方案一的不足及缺点,并具有控制简单、控制温度精度高的特点。因此本设计电路采用方案二。2.2. 各部分电路方案论证 本电路以单片机为基础
11、核心,系统由前向通道模块、后向控制模块、系统主模块及键盘显示摸块等四大模块组成。现将各部分主要元件及电路做以下的论证:2.2.1. 温度采样部分 方案1:采用热敏电阻,可满足35-95的测量范围,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度小于1的温度信号是不适用的。 方案2:采用温度传感器AD590。:AD590具有体积小、质量轻、线形度好、性能稳定等优点。其测量范围在-50- +150,满刻度范围误差为,当电源电压在510V之间,稳定度为1时,误差只有,其各方面特性都满足此系统的设计要求。此外AD590是温度-电流传感器,对于提高系统抗干扰能力有很大的帮助。 经上述比较,方案2明显
12、优于方案1,故选用方案2。2.2.2. 键盘显示部分 控制与显示电路是反映电路性能、外观的最直观部分,所以此部分电路设计的好坏直接影响到电路的好坏。 方案1:采用可编程控制器8279与数码管及地址译码器74LS138组成,可编程/显示器件8279实现对按键的扫描、消除抖动、提供LED的显示信号,并对LED显示控制。用8279和键盘组成的人机控制平台,能够方便的进行控制单片机的输出。 方案2:采用单片机AT2051与地址译码器74LS138组成控制和扫描系统,并用2051的串口对主电路的单片机进行通信,这种方案既能很好的控制键盘及显示,又为主单片机大大的减少了程序的复杂性,而且具有体积小,价格便
13、宜的特点。 对比两种方案可知,方案1虽然也能很好的实现电路的要求,但考虑到电路设计的成本和电路整体的性能,我们采用方案2。2.2.3. 控制电路部分 CPU模块的选择:方案一:此方案采用89C51单片机实现,单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。但是89C51需外接模数转换器来满足数据采样。如果系统增加语音播放功能,还需外接语音芯片,对外围电路来说,比较复杂,且软件实现也较麻烦。另外,51单片机需要用仿真器来实现软硬件调试,较为繁琐。方案二:本方案的CPU模块采用2051芯片,其内部有2KB单元的程序存储器,不需外部扩展程序存储器。但由于系统用到较多的I/O口,因此此芯片
14、资源不够用。方案三:采用89C52单片机,其内部有8KB单元的程序存储器。而且具有三个定时器,正好满足系统多机通信时所用。 比较这3种方案,综合考虑单片机的各部分资源,因此此次设计选用方案3。设计电路图如图3-2 所示:图2-2 AT89C52单片机原理图 3. 硬件电路设计与计算 本电路总体设计包括四部分:主机控制部分(89C52)、前向通道(温度采样和转换电路)、后向通道(温度控制电路)、键盘显示部分。3.1. 温度采样和转换电路 系统的信号采样和转换电路主要由温度传感器AD590、基准电压7812、运算放大器OP-07及A/D转换电路ADC0804四部分组成。设计电路图如图4-1所示:R
15、25KDB018DB117DB216DB315DB414DB513DB612DB711/CS1/RD2/WR3/INTR5V+20CLK R19CLK IN4VIN+6VIN-7AGND8Vref/29DGND10J6ADC0804-2+3674185J3OP0712J4414812J54148R810kC2150pVCCR720k+15-15R430kR381k213VinGNDOUTJ17812+1512J2AD590-15AGNDR130KR65kR55k89C52VCC+c110u图3-1 温度采样和转换电路原理图3.1.1. AD590的主要特性(1) 流过器件的电流(uA)等于器件
16、所处环境的热力学温度(开尔文)度数, 即:Ir/T=1 uA/K (流过AD590的电流与热力学温度成正比)式中 : Ir流过器件(AD590)的电流,单位为uA(微安); T热力学温度,单位为K(开尔文)。 (2) AD590检测的温度范围为-55一+1500。 (3) AD590的电源电压范围为4V-30V。电源电压可在4V-6V范围变化,电流Ir变化luA,相当于温度变化1K。AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。 (4) 输出电阻为710欧姆。 (5) 精度高,有非常好的线性输出性能。(6) 响应速度快。3.1.2. 转换与放大电路 基准电压781
17、2提供12V标准电压,它与运算放大器OP-07和电阻组成信号转换与放大电路,将35-95的温度转换为05V的电压信号。3.1.3. ADC0804性能描述。它的主要性能有: (1 )8 位逐次逼近型A/D转换器,所有引脚的逻辑电平与TL兼容; (2) 带锁存功能的8路模拟量转换开关,可对8路0-5V模拟量进行分时转换; (3) 输出具有三态锁存/缓冲功能: (4 )分辨率:8位,转换时间:100us; (5 )不可调误差:士1LSB,功耗:15mw; (6 )工作电压 :+5V参考电压标准值+5V; (7 )片内无时钟,一般需外加640KHz以下且不低于100KHz的时钟信号。3.1.4. 电
18、路原理及参数计算 3-2温度采样电路 温度采样电路的基本原理是采用电流型温度传感器AD590将温度的变化量转换成电流量,再通过OP-07将电流量转换成电压量,通过A/D转换器ADC0804将其转换成数值量交由单片机处理。图3-2中三端稳压7812作为基准电压,由运放虚短虚断可知运放OP-07的反向输入端(2脚)的电压为零伏。当输出电压为零伏时(即Uo=0v) ,令7812的输出电压为Ub=12V,OP-07的2脚处为A点,AD590的转换电流为Ic。列出A点的结点方程如下: Ub/ (R1+R2)=Ic(1)由于系统控制的水温范围为35-95,所以当输出电压为零伏时AD590的输出电流为308
19、.2uA,因此为了使Ui的电位为零就必须使电流等于308.2uA, 三端稳压7812的输出电压为12v所以由方程(1)得 R1+R2=Ub/Ic=12v/308.2uA=38.94k(2)由(2)取电阻R1=30k , R2=20k的电位器。又由于ADC0804的输入电压范围为05v ,为了提高精度所以令水温为95时ADC0804的输入电压为5v(即Uo=5v)。此时列出A点的结点方程如下:U0/(R3+R4)+Ub/(R1+R2)=Ic(3)5V/(R3+R4R3+R4当水温为95时AD590的输出电流为368.2uA。由方程式(3)得R3+R43=81k , R4=5k的电位器。3.2.
20、温度控制电路(1)硬件连线图3-3是用AT89C52单片机作CPU来操作DS1620的。单片机的P1口连接DS1620的三线通信接口:P1.1接DQ,P1.2接CLK/,P1.3接。(2)程序设计程序采用C52编制,在KEIL C V6.20下调试通过。DS1620SetConf(unsigned char val)用于配置控制/状态寄存器的内容;用DS1620startConv(void)开始进行温度转换;用DS1620ReadConf(void)返回控制/状态寄存器内容;可查寻DONE位来判断是否转换完成,转换完成后用DS1620read(void)读出转换的温度值。也可采用软件延时方式,
21、在开始转换后延时1s以上,再读转换的温度数据值。图3-3 DS1620和AT89C52连接图3.3. 单片机控制部分 此部分是电路的核心部分,系统的控制采用了单片机AT89C52。单片机AT89C52内部有8KB单元的程序存储器及256字节的数据存储器。因此系统不必扩展外部程序存储器和数据存储器这样大大的减少了系统硬件部分。电路原理图如图3-4所示: 图3-4 单片机控制电路部分原理图3.4. 键盘及数字显示部分在设计键盘/显示电路时,我们使用单片机2051做为电路控制的核心,单片机2051具有一个全双工的串行口采用串口,利用此串行口能够方便的实现系统的控制和显示功能。键盘/显示接口电路如图3
22、-5图3-5 键盘/显示部分电路图3-5中单片机2051的P1口接数码管的8只引脚,这样易于对数码管的译码,使数码管能显示设计者所需的各数值、小数点、符号等等。单片机2051的P3.3、P3.4、P3.5接3-8译码器74L138,译码器的输出端直接接八个数码管的控制端和键盘,键盘扫描和显示器扫描同用端口这样能大大的减少单片机的I/O,减少硬件的花费。键盘的接法的差别直接影响到硬件和软件的设计,考虑到单片机2051的端口资源有限,所以我们在设计中将传统的4*4的键盘接成8*2的形式(如图4-7),键盘的扫描除了和显示共用的8个端外,另外的两个端直接和2051的P3.2和P3.7相连。图3-6键
23、盘接线如图4-7的接法已经完全用完了单片机的15个I/O口,有效的利用了单片机的资源。开机 机系统初始化显示清零,各记数指针清零否是消除颤抖判断是否有键按下?设定水温显示温度确定单步清零取消输出12345图41键盘显示程序输出654. 系统的软件设计4.1. 键盘显示程序 图5-1中的设定水温、显示温度、确定、取消、清零、输出,均为各种子程序。4.2. 主程序设计开机 机系统初始化显示清零,各记数指针清零,设定定时器及中断否是调用相映的中断程序判断是否有中断?PID算法PWM波产生接收及发射串显示数据PC机通信子程序 图4-2主程序流程图各类数值转换子程序主程序任务介绍主程序流程图如图4-2所
24、示,程序主要完成以下的几部分任务:(1)初始化:设定各参数的初始值,设定各中断及定时器。(2)接收/发射:此部分程序主要完成数据的控制及显示,其主要通过89C52单片机的全双工串行口完成和键盘部分的双向通信。(3)PC机通信:此部分完成与微机控制接口RS232的联接及通信的控制。(4)数值转换子程序:由于主程序中用到了很多的数值转换及数值的运算(如十进制转换成十六进制、双字节与单字节的除法运算等等),为了程序调用的方便,特地将其编写成子程序的形式。(5)PID算法:PID算法为此温控系统的性能好坏的决定性因数,4.3. PID算法的介绍直接计算法就是当前需要的控制量。PID为控制中最为成熟的一
25、中算法,其一般算式及模拟控制规律表达式如下式(4-3): 图43公式:Pout = Kp * e(t) + Ki * e(t) + Kd (e(t) e(t-1);增量计算法就是相对于标准算法的相邻两次运算之差,得到的结果是增量,也就是说在上一次的控制量的基础上需要增加的控制量。公式:Pout(t-1) = Kp*(e(t) e(t-1) + Ki e(t) + Kd(e(t) 2*e(t-1) + e(t-2);基本偏差:e(t) 表示当前测量值与设定目标之差,设定目标是被减数,结果可以是正或负,正数表示还没有达到,负数表示已经超过了设定值。这是面向比例项用的变动数据。累计偏差:e(t)=
26、e(t) + e(t-1) + e(t-2)+.+e(1),这是我们每一次测量到的偏差值的总和,这是代数和,考虑到正负符号的运算,这是面向积分项用的变动数据。基本偏差的相对偏差:e(t) e(t-1),用本次的基本偏差减去上一次的基本偏差,用于考察当前控制的对象的趋势,作为快速反应的重要依据,这是面向微分项的一个变动数据。比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,
27、积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为微分
28、作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。开始 计算 保存中间变量:调用内存中 r, f(k), u(k-1)Kc, ki, kd, e(k-1), e(k-1) 图4-4PID算法计算倒通时间:返回4.4. 主程序语言设计ORG 0000H AJMP START ;主程序 ORG 000BH AJMP TIM0 ;T0中断子程序 ORG 0023H AJMP RT ;串口中断接受子程序ORG 0100HSTART: MOV 50H,#00H ;初始化设定温度 MOV 51H,#00H MOV 52H,#00H MOV 53H,#00H MOV 54H,#0C6H
29、 ;发送第5个数码管字形码“C” MOV TMOD,#01H ;T0工作在MODE1 MOV TH0,#0ECH ;假设晶振12M,50ms中断一次 MOV TL0,#78H SETB TR0 MOV TMOD,#20H ;T1工作在MODE2 MOV TH1,#0E6H ;设波特率 MOV TL1,#0E6H SETB TR1 MOV SCON,#50H MOV IE,#92H ;允许T0,RI中断 MOV R6,#04H ;初始要接收的数据个数 MOV R1,#50H ;初始要接收数据的起始地址MOV R4,#00H REY: MOV A,53H CJNE A,#00H,YES SJMP
30、REYYES: MOV R3,#00HYES1: CLR P2.0 ;开始AD转换 ACALL DELAYJ1: MOVX A,R0 ACALL SJCL ;调用数据处理子程序 ACALL DISP DJNZ R3,MM ACALL FS ;调用串口发送子程序 AJMP YESMM: AJMP YES1SJCL:MOV B,#60 MUL AB MOV 61H,A MOV A,B ADD A,#35 ACALL L10 MOV 60H,R5 ;存十进制高八位 (个位和十位) MOV A,61H MOV B,#9 MUL AB MOV 61H,B ;存十进制低八位 (小数点) RETL10: C
31、LR C MOV R5,#00H ;初始化十进制转换的地位寄存器 MOV R4,#08H ;调整次数NEXT:RLC A MOV R2,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R2 DJNZ R4,NEXT RETDISP:MOV A,60H ANL A,#0F0H ;取D2的显示数据存入70H SWAP A MOV 70H,A MOV A,60H ANL A,#0FH ;取D1的显示数据存入71H MOV 71H,A MOV 72H,61H ;取D0的显示数据存入72H MOV R0,#70H ;取相应的字形码分别存入55-57H MOV DPTR,
32、#TAB MOV A,R0 MOVC A,A+DPTR MOV 55H,A INC R0 MOV A,R0 MOVC A,A+DPTR MOV 56H,A INC R0 MOV A,R0 MOVC A,A+DPTR MOV 57H,A MOV A,56H ADD A,#80H ;在D1字形码上加小数点 MOV 56H,ARETFS: MOV A,R0 PUSH ACC MOV TMOD,#20H MOV TH1,#0E6H MOV TL1,#0E6H SETB TR1 MOV SCON,#50H MOV R0,#54H ;设定发送起始地址 MOV R7,#04HLOOP:MOV SBUF,R0
33、 JNB TI,$ CLR TI INC R0 DJNZ R7,LOOP POP ACC MOV R0,ARETRT: PUSH ACC PUSH PSW CLR ET0 CLR ES SJ: MOV R1,SBUF INC R1 CJNE R4,#03H,MOVE SJMP MOVE1 MOVE :INC R4 CLR RI JNB RI, $MOVE1:DJNZ R6,SJ MOV R4,#00H MOV R1,#50H ;重置接收起始地址 MOV R6,#04H ;重置接收个数 SETB ET0 SETB ES POP PSW POP ACC RETITIM0: PUSH ACC PUS
34、H PSW MOV TH0,#0ECH ;重设中断时间 MOV TL0, #78H CLR C ;ACALL JS MOV A,51H CJNE A,70H,Q1 ;最高位比 SJMP Q2Q1: JC OFFSJMP ONQ2: MOV A,52H CJNE A,71H,Q3Q3: JC OFFRE: POP PSW POP ACC RETI SJMP REDELAY:MOV R7,#50 DJNZ R7,$ RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H MOV R0,#40HJJ: MOV R0,#0FFH ;初始化INC R
35、0 CJNE R0,#48H,JJ MOV 30H,#0 MOV P1,#0C0H ;开机初始显示全”0“ MOV R1,#60H MOV R0,#40H MOV R3,#00H ;控制接受间断时间ST:MOV 30H,#0 ; MOV R2,40H ;温度设定键码存入R2以用于判断是否按下而改变初始的全0状态 MOV P3,#0C7H ;读第一列 CJNE R2,#0FFH,J1 ;判断温度设定键有无按下,无的话继续全0状态 SJMP T1J1:MOV P1,40HT1:ACALL DELAY40 JB P3.2,WW1 ACALL DELAY3 JB P3.2,WW1 JNB P3.2,$
36、 MOV 30H,#0F9H ;字形码存入30H用于显示 MOV 50H,#01H ;十进制数字存入50H用于串口传送 AJMP TTWW1:JB P3.7,QQ1 ACALL DELAY3 JB P3.7,QQ1 JNB P3.7,$ MOV 30H,#90H MOV 50H,#09H AJMP TTQQ1:MOV P3,#0CFH CJNE R2,#0FFH,J2 SJMP T2J2: MOV P1,41HT2: ACALL DELAY40 JB P3.2,WW2 ACALL DELAY3 JB P3.2,WW2 JNB P3.2,$ MOV 30H,#0A4H MOV 50H,#02H
37、AJMP TTWW2:JB P3.7,QQ2 ACALL DELAY3 JB P3.7,QQ2 JNB P3.7,$ MOV 30H,#0C0H MOV 50H,#0H AJMP TTQQ2:MOV P3,#0D7H CJNE R2,#0FFH,J3 SJMP T3J3: MOV P1,42HT3: ACALL DELAY40 JB P3.2,WW3 ACALL DELAY3 JB P3.2,WW3 JNB P3.2,$ MOV 30H,#0B0H MOV 50H,#03H AJMP TTWW3:JB P3.7,QQ3 ACALL DELAY3 JB P3.7,QQ3 JNB P3.7,$ M
38、OV 30H,#088H MOV 50H,#088H AJMP TTQQ3:MOV P3,#0DFH CJNE R2,#0FFH,J4 SJMP T4J4: MOV P1,43HT4: ACALL DELAY40 JB P3.2,WW4 ACALL DELAY3 JB P3.2,WW4 JNB P3.2,$ MOV 30H,#99H MOV 50H,#04H AJMP TTWW4:JB P3.7,QQ4 ACALL DELAY3 JB P3.7,QQ4 JNB P3.7,$ MOV 30H,#83H MOV 50H,#83H AJMP TTQQ4:MOV P3,#0E7H CJNE R2,#0
39、FFH,J5 SJMP T5J5: MOV P1,44HT5: ACALL DELAY40 JB P3.2,WW5 ACALL DELAY3 JB P3.2,WW5 JNB P3.2,$ MOV 30H,#092H MOV 50H,#05H AJMP TTWW5:JB P3.7,QQ5 ACALL DELAY3 JB P3.7,QQ5 JNB P3.7,$ MOV 30H,#0C6H MOV 50H,#0C6H AJMP TTQQ5:MOV P3,#0EFH CJNE R2,#0FFH,J6 SJMP T6J6:MOV P1,45HT6:ACALL DELAY40 JB P3.2,WW6 ACALL DELAY3 JB P3.2,WW6 JNB P3.2,$ MOV 30H,#82H MOV 50H,#06H AJMP TTWW6:JB P3.7,QQ6 ACALL DELAY3 JB P3.7,QQ6 JNB P3.7,$ MOV 30H,#0A1H MOV 50H,#0A1H AJMP TTQQ6:MOV P3,#0F7H CJNE R2,#0FFH,J7 SJMP T7J7:MOV P1,46HT7:ACALL DELAY40 JB P3.2,WW7 ACALL DELAY3 JB P3.2,WW7 JNB P3.2,$