1、1基于单片机的热水控制器系统设计摘要本文介绍了用51单片机设计的一种多功能热水控制器,具有自动和手动加水、设置水温、实时显示水量及温度和报警功能,并且具有结构简单、可靠性高、成本低等特点。当前市场上的热水控制器基本上采用双金属片温控,控温精度低、可靠性差、功能单一。随着微电子技术的发展,单片微处理器功能日益增强,价格低廉,在各方面得到广泛应用。在热水控制器中应用单片机,具有设计简单、可靠性高、功能易扩展等优点。本文着重于热水器在智能控制方面的探讨。关键词单片机,热水器,51,加热2ABSTRACTTHISPAPERINTRODUCESSINGLECHIPDESIGNWITH51OFAMULTI
2、FUNCTIONALWATERCONTROL,WITHAUTOMATICANDMANUALWATERANDSETTHEWATERTEMPERATURE,WATERANDTEMPERATUREINREALTIMEDISPLAYANDALARMFUNCTIONS,ANDSIMPLESTRUCTURE,HIGHRELIABILITY,COSTLOWATPRESENTTHEMARKETISBASICALLYTHEUSEOFHOTWATERCONTROLLERBIMETALTEMPERATURECONTROL,TEMPERATURECONTROLACCURACYOFTHELOWRELIABILITYOF
3、POOR,SINGLEFUNCTIONWITHTHEDEVELOPMENTOFMICROELECTRONICTECHNOLOGY,THEGROWINGSINGLECHIPMICROPROCESSORFUNCTIONSANDLOWPRICES,INALLRESPECTSBEENWIDELYUSEDHOTWATERAPPLICATIONSINSINGLECHIPCONTROLLERWITHASIMPLEDESIGN,HIGHRELIABILITYANDEASYEXPANSIONOFFUNCTIONSANDSOONTHISARTICLEFOCUSESONTHEWATERHEATERINTHEAREA
4、OFINTELLIGENTCONTROLKEYWORDSMICROCONTROLLER,WATERHEATER,51,HEATING3目录1整体设计方案411课程设计要求412设计目的42设计方案53硬件电路设计631DS1820的工作原理732寄生电源电路833温度测量原理834高温自动报警电路1035基本温度水温测量电路1036显示电路及键盘电路1137水温和水量控制电路124系统软件设计1341键盘和显示1442水温测量155结论156参考文献207致谢208附录21附录一程序清单21附录二总原理图4641整体设计方案2课程设计要求完成基于单片机的热水控制器系统的设计,能够实现水温的自动
5、加热,并检测水温大小,对温度进行显示。O程序设计合理、简洁。O自行设计检测及相关处理电路。O完成单片机数据采集及处理的硬件电路设计及相关软件编程。O辅助电路及元器件自选。O自选传感器类型O加热范围40100摄氏度3设计目的现代科技飞速发展,拥有渊博的知识是今后一展鸿图的基础实践也同知识一样重要,如果不在学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节,学习与应用脱节的局面。任随书本上把单片微机技术介绍得多么重要、多么实用、多么好用,我们仍然会感到那只是空中楼阁,离自己十分遥远,或者会因此而对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。
6、“基于单片机应用设计”的目的就是让我们在理论学习的基础上,通过完成一个涉及MCS51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使之不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在5软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。4设计方案本文介绍了用51单片机设计的一种多功能热水控制器,具有自动和手动加水、设置水温、实时显示水量及温度和报警功能,并且具有结构简单、可靠性高、成本低等特点。当前市场上
7、的热水控制器基本上采用双金属片温控,控温精度低、可靠性差、功能单一。随着微电子技术的发展,单片微处理器功能日益增强,价格低廉,在各方面得到广泛应用。在热水控制器中应用单片机,具有设计简单、可靠性高、功能易扩展等优点。热水控制器主要实现对水温的控制,并满足不同用户的个性需求。因此一个较完善的控制器应具有以下功能水温的测量与显示;水量的测量与显示;用户设定功能如水温设定,定时设定等;对电加热管的控制功能;一些功能键如定时自动加水,恒温控制,手动加水,手动加热等。6图1原理框图5硬件电路设计根据热水控制器的功能要求,并结合对51系列单片机的资源分析,采用此系列中的主流型号89C51作为电路系统的控制
8、核心。电热水控制器的总体布局如图1所示。基本硬件电路图如图2AC所示。在本系统中,P00P03用于七段码显示,P26控制水闸开关,P27控制电加热管,P33P35用于按键设计和读取水量,P30P32用于跟DS1820通信进行水温测量,P20P21对七段码进行扫描,P22P25LED指示灯显示,P37控制扬声器用于报警和指示。1水温测量电路水温测量电路如图4所示,测温元件采用DALLAS的单线数字温度传感器DS1820。DS1820提供九位温度读数,测量范围55125,采用独特1WIRE总线协议,只需一根口线即实现与MCU的双向通讯,具有连接简单,高精度,高可靠性等特点。在工作时,通过总线向其提
9、供电源,单片机发出指令码读取温度值。89C51电源控制温度测量LED显示键盘和水量档位76DS1820的工作原理DS1820采用3脚PR35封装或8脚SOIC封装,管脚排列如图2所示。图中3号引脚为GND,2号引脚I/O为数据输入/输出端(即单线总线),该脚为漏极开路输出,常态下呈高电平。1号引脚VDD是外部5V电源端,不用时应接地。NC为空脚。图3所示为DS1820的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL解发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。图2D
10、S1820引脚图123DS18208图3DS18B20内部结构图7寄生电源电路寄生电源由二极管VD1、VD2和寄生电容C组成。电源检测电路用于判定供电方式。寄生电源供电时,VDD端接地,器件从单线总线上获取电源。在I/O线呈低电平时,改由C上的电压VC继续向器件供电。该寄生电源有两个优点第一,检测远程温度时无需本地电源;第二,缺少正常电源时也能读ROM。若采用外部电源VDD,则通过VD2向器件供电。8温度测量原理DS1820测量温度时使用特有的温度测量技术。其测量电路框图如图3所示。DS1820内部的低温度系数振荡器能产生稳定的频率信号F0,高温度系数振荡器则将被测温度转换成频率信号F。当计数
11、门打开时,DS1820对F0计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线9性予以被偿。测量结果存入温度寄存器中。一般情况下的温度值应为9位(符号点1位),但因符号位扩展成高8位,故以16位被码读出。图4DS1820测温原理框图高速暂存器在正常测温情况下,DS1820的测温分辨力为05,可采用下述方法获得高分辨率的温度测量结果首先用DS1820提供的读暂存器指令(BEH)读出以05为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分TZ,然后现用BEH指令取计数器1的计数剩余值CS和每度计数值CD。考虑到DS1820测
12、量温度的整数部分以025、075为进位界限的关系,实际温度TS可用下式计算TS(TZ025)CDCS/CD109高温自动报警电路DS1820完成温度转换后,就把测得的温度值与TH、TL作比较。若TTH或TTL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多只DS1820同时测量温度并进行告警搜索。一旦某测温点越限,主机利用告警搜索命令即可识别正在告警的器件,并读出其序号,而不必考虑非告警器件。CRC的产生在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS1820中的CRC值作比较,以判断主机收到的RO
13、M数据是否正确。CRC的函数表达式为CRCX8X5X31。此外,DS1820尚需依上式为暂存器中的数据来产生一个8位CRC送给主机,以确保暂存器数据传送无误。10基本温度水温测量电路基本温度水温测量电路如图5所示,本系统中,一个DS18B20温度传感器,三个七段码显示与四个LED灯指示,四个功能按键与水量设定按键使用同一组按键。按键的优先权高于水量信号,水量高档位信号优先权高于低档位信号,以保证能优先响应按键。11图5基本温度水温测量、键盘电路11显示电路及键盘电路显示电路如图6所示,温度采用二位七段码显示,显示范围099。水量采用一位七段显示,显示1、2、3、4,四档水位。对温度和水量进行循
14、环扫描显示。四个LED用于当前按键功能设定。设置按键两个,一个十位按键,一个个位按键。12图6基本显示电路图图12水温和水量控制电路水温和水量控制电路如图7所示,单片机通过光电耦合对继电器进行控制,用来切断或接通加热管电源,关闭或打开水阀,从而达到对水温和水量的控制。13U3OPTOISO2U4OPTOISO2K1K21234J3CON4VCCVCCP27P26图7水温和水量控制电路13系统软件设计系统软件采用汇编语言精简指令编写。本系统中键盘扫描、漏电检测等子程序都通过查询实现,并采用12MHZ的时钟频率,对指令的运行时间进行了精确计14算和设计,保证软件的可靠性和稳定性。系统主程序框图如图
15、7所示,DS1820工作程序流程图如图8所示。14键盘和显示本系统中,有四个功能按键定时加水、恒温控制、手动加水和手动加热;三个七段码显示与四个LED灯指示。(1)按下定时加水按钮时,定时LED变亮,并以当前时间为定时时标,每24小时自动加水至设定水量;若长按此钮超过5秒,定时LED灭,并听到“嘟”一声进行水量设定,此后每按一下钮,水量显示加一档,14档循环显示,不按此钮超过5秒,再次听到“嘟”一声,水量设定完毕。系统的定时功能主要通过软件完成。(2)按下恒温控制钮,恒温LED变亮,表示进行恒温控制,再按一下LED灭,取消恒温控制。与水量设定类似,长按后,进行温度设定。(3)按下手动加热钮时,
16、加热LED变亮,加热至65,如水量少于1档,则先加水到1档,再按一次取消加热。(4)按下手动加水钮时,加水至设定水量值,长按可设定水量。手动加水过程中,再次按下取消加水。正常情况下,两个七段码显示当前水温,另一个显示当前水位。1515水温测量温度读取是通过与DS1820通信完成。DS1820通信功能是分时完成的,它有严格的时隙概念。因此系统对DS1820的各种操作必须按协议进行。DS1820是美国DALLAS公司生产的单线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成串行数字信号供微机处理,而且每片DS1820
17、都有唯一的产品号并可存入其ROM中,以使在构成大型温度测控系统时在单线上挂任意多个DS1820芯片。从DS1820读出或写入DS1820信息仅需要一根口线,共读写及温度变换功率来源于数据总线,该总线本身也可以向所挂接的DS1820供电,而无需额处电源。DS1820能提供九位温度读数,它无需任何外围硬件即可方便地构成温度检测系统。16结论课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说
18、掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,16从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以
19、前所学过的知识理解得不够深刻,掌握得不够牢固,比如说对单片机汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在我的努力和同学帮助下,终于游逆而解。电热水器单片机控制器具有新颖、价廉、安全、实用等优点,并且在国产电热水器上获得了成功应用。本文的一些方法也适用于冰箱、空调等家用电器的电脑控制设计中。此次设计之后的到一些设计体会1在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机片内有哪些资源,它的引脚功能都要了解2设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路和一个完整的软件
20、流程图3在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进“是程序设计的必经之路4在设计程序过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题17系统初始化实际水位水温计算报警自动上水启动计时、计数器是否缺水是否手动上水自动上水热水器是否加满了水读取温度测量显示子程序上水水温是否偏高读取键盘状态定时1秒是否已到温控上水继续显示18图8主程序流程图192017参考文献1苏长赞主编实用遥控技术手册,北京人民邮电出版社,1996年。2陈永甫主编红外探测与控制电路,北京人民邮电出版社,2004年。3无线电爱好者丛书编委会,黄继昌等主编实用
21、识别电路,北京人民邮电出版社,2005年。18致谢首先感谢各位指导老师,各位同学给我的支持和帮助,感谢他们在这几个月份给与的关键性指导和提议。同时我也感谢家里的父母,为我提供了一个很好的学习环境,和无微不至的关怀,在我感到困难和灰心时,他们对我的鼓励,我的成功有他们不可以或缺的功劳。感谢我的指导老师,他们严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他们循循善诱的教导和不拘一格的思路给予我无尽的启迪。岁月如流,流走的是时光,流不动的是永存于心底的这份情愫2119附录附录一程序清单ORG0000H;系统主程序JMPMAINORG000BHJMPLEDINT0ORG001BHJMPLEDIN
22、T1ORG0100HPP5JMPPP1PP7JMPPP2MAINMOV34H,0FFHMOV35H,0FFHMOV36H,00HMOV37H,00HCLRP16SETBP17MOVSP,60H给堆栈指针赋初值22MOVTMOD,51H定时器0工作于方式定时器1作为计数器MOVTH0,0ECH给计数寄存器的高8位赋初值MOVTL0,77H给计数寄存器的低8位赋初值MOV30H,20MOV31H,10MOV32H,20MOV33H,10MOVTH1,00HMOVTL1,00HMOVIE,82HSETBTR0计时开始SETBTR1开始计数MOVR0,0MOVR1,0MOVR2,0MOVR3,0MOV
23、R4,0LOOPMOVDPTR,0A100H读取键盘状态MOVXA,DPTRMOV21H,A把A的内容赋给缓冲区21H,再比较判断然后输出JNB21H7,PP3加水到5023JNB21H6,PP7加水到80JNB21H5,PP5加水到100MOVA,34HCLRCSUBBA,1JCPP3C是1转PP3JZTTL4A0转TTL4AJMPBB无条件转移TTL4MOVA,35HCLRCSUBBA,10JCPP3MOVA,36HCLRCSUBBA,5JCBBJZTTL5AJMPPP6TTL5MOVA,37HCLRCSUBBA,10JCBB24AJMPPP6BBMOVA,R0LCALLXIANSHIMO
24、VDPTR,0A000HMOVXDPTR,ALCALLDELAYMOVA,R1LCALLXIANSHIMOVDPTR,0A001HMOVXDPTR,ALCALLDELAYMOVA,R2LCALLXIANSHIMOVDPTR,0A002HMOVXDPTR,ALCALLDELAYMOVA,R3LCALLXIANSHIMOVDPTR,0A003HMOVXDPTR,ALCALLDELAYMOVA,R425LCALLXIANSHIMOVDPTR,0A004HMOVXDPTR,ALCALLDELAYAJMPLOOPPP3MOVA,0LCALLXIANSHIMOVDPTR,0A000HMOVXDPTR,AL
25、CALLDELAYMOVA,5LCALLXIANSHIMOVDPTR,0A001HMOVXDPTR,ALCALLDELAYMOVA,34HCLRCSUBBA,1JCPP3JZTTLTTLMOVA,35H26CLRCSUBBA,55JCPP3JMPLOOPPP2MOVA,8LCALLXIANSHIMOVDPTR,0A001HMOVXDPTR,ALCALLDELAYMOVA,0LCALLXIANSHIMOVDPTR,0A000HMOVXDPTR,ALCALLDELAYMOVA,34HCLRCSUBBA,2JCPP2JZTTL1TTL1MOVA,35HCLRCSUBBA,5527JCPP2JMPLO
26、OPPP6MOVA,10LCALLXIANSHIMOVDPTR,0A002HMOVXDPTR,ALCALLDELAYMOVA,13LCALLXIANSHIMOVDPTR,0A001HMOVXDPTR,ALCALLDELAYMOVA,13LCALLXIANSHIMOVDPTR,0A000HMOVXDPTR,ALCALLDELAYMOVA,34HCLRCSUBBA,4JCPP6JZTTL628JMPLOOPTTL6MOVA,35HCLRCSUBBA,55JCPP6JMPLOOPPP1MOVA,9LCALLXIANSHIMOVDPTR,0A000HMOVXDPTR,ALCALLDELAYMOVA,9
27、LCALLXIANSHIMOVDPTR,0A001HMOVXDPTR,ALCALLDELAYMOVA,34HCLRCSUBBA,4JCPP1JZTTL2TTL2MOVA,35H29CLRCSUBBA,55JCPP1JMPLOOPTEMPER_LEQU36H;DS1820温度测量子程序TEMPER_HEQU35HDQBITP32DS18B20初始化程序INIT_1820SETBDQNOPCLRDQMOVR0,06BHTSR1DJNZR0,TSR1延时SETBDQMOVR0,25HTSR2JNBDQ,TSR3DJNZR0,TSR230LJMPTSR4延时TSR3SETBFLAG1置标志位,表示DS
28、1820存在LJMPTSR5TSR4CLRFLAG1清标志位,表示DS1820不存在LJMPTSR7TSR5MOVR0,06BHTSR6DJNZR0,TSR6延时TSR7SETBDQRET/重新写DS18B20暂存存储器设定值/RE_CONFIGJBFLAG1,RE_CONFIG1若DS18B20存在,转RE_CONFIG131RETRE_CONFIG1MOVA,0CCH发SKIPROM命令LCALLWRITE_1820MOVA,4EH发写暂存存储器命令LCALLWRITE_1820MOVA,00HTH报警上限中写入00HLCALLWRITE_1820MOVA,00HTL报警下限中写入00HL
29、CALLWRITE_1820MOVA,1FH选择9位温度分辨率LCALLWRITE_1820RET/读出转换后的温度值/GET_TEMPERSETBDQ定时入口LCALLINIT_1820JBFLAG1,TSS2RET若DS18B20不存在则返回32TSS2MOVA,0CCH跳过ROM匹配LCALLWRITE_1820MOVA,44H发出温度转换命令LCALLWRITE_1820LCALLINIT_1820MOVA,0CCH跳过ROM匹配LCALLWRITE_1820MOVA,0BEH发出读温度命令LCALLWRITE_1820LCALLREAD_1820MOVTEMPER_NUM,A将读出的
30、温度数据保存RET/读DS18B20的程序,从DS18B20中读出一个字节的数据/READ_1820MOVR2,8RE1CLRCSETBDQ33NOPNOPCLRDQNOPNOPNOPSETBDQMOVR3,7DJNZR3,MOVC,DQMOVR3,23DJNZR3,RRCADJNZR2,RE1RET/写DS18B20的程序/WRITE_1820MOVR2,8CLRCWR134CLRDQMOVR3,6DJNZR3,RRCAMOVDQ,CMOVR3,23DJNZR3,SETBDQNOPDJNZR2,WR1SETBDQRET/读DS18B20的程序,从DS18B20中读出两个字节的温度数据/REA
31、D_18200MOVR4,2将温度高位和低位从DS18B20中读出MOVR1,36H低位存入36HTEMPER_L,高位存入35HTEMPER_HRE00MOVR2,835RE01CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR3,7DJNZR3,MOVC,DQMOVR3,23DJNZR3,RRCADJNZR2,RE01MOVR1,ADECR1DJNZR4,RE00RET/36将从DS18B20中读出的温度数据进行转换/TEMPER_COVMOVA,0F0HANLA,TEMPER_L舍去温度低位中小数点后的四位温度数值SWAPAMOVTEMPER_NUM,AMO
32、VA,TEMPER_LJNBACC3,TEMPER_COV1四舍五入去温度值INCTEMPER_NUMTEMPER_COV1MOVA,TEMPER_HANLA,07HSWAPAORLA,TEMPER_NUMMOVTEMPER_NUM,A保存变换后的温度数据LCALLBIN_BCDRET/将16进制的温度数据转换成压缩BCD码/37BIN_BCDMOVDPTR,TEMP_TABMOVA,TEMPER_NUMMOVCA,ADPTRMOVTEMPER_NUM,A定时器0中断服务子程序LEDINT0PUSHPSW压栈保护现场PUSHACCCLRET0防止连续中断CLRTR0禁止定时器计数CLRTR1M
33、OVTH0,3CH重新给计数器赋初值MOVTL0,0B0HDJNZ30H,LEDRET定时1S到了吗DJNZ31H,IBTD水温水位分别显示20秒CLRET0MOVTMOD,15H定时器1工作于方式定时器0作为计数器MOVTH1,0ECH给计数寄存器的高8位赋初值38MOVTL1,77H给计数寄存器的低8位赋初值MOV32H,20MOV33H,10MOVTH0,00HMOVTL0,00HMOVIE,88HIE是寄存器,88H的输入设置了中断SETBTR1SETBTR0开始计数MOVR0,0MOVR1,0MOVR2,0MOVR3,0MOVR4,0POPPSWPOPACCRETIIBTDMOV30
34、H,20是,则重新赋初值MOVA,TH1MOV34H,AMOVR2,AMOVA,TL1MOV35H,A39MOVR3,AMOVTH1,00HMOVTL1,00HCLRAMOVR4,AMOVR5,AMOVR6,AMOVR7,16PP0CLRCMOVA,R3RLCAMOVR3,AMOVA,R2RLCA把十六进制数转换成十进制数MOVR2,AMOVA,R6ADDCA,R6DAAMOVR6,AMOVA,R5ADDCA,R5DAA40MOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,ADJNZR7,PP0转换完毕MOVA,R4把R4,R5,R6中的十进制数一位一位的存放于R4,R3,R2,R
35、1,R0中MOVR4,AMOVA,R5SWAPAANLA,0FHMOVR3,AMOVA,R5ANLA,0FHMOVR2,AMOVA,R6SWAPAANLA,0FHMOVR1,AMOVA,R6ANLA,0FH41MOVR0,ALEDRETSETBTR0SETBTR1启动定时器启动计数器MOVIE,82HPOPACC出栈POPPSWRETI中断返回LEDINT1PUSHPSW压栈保护现场PUSHACCCLRET1防止连续中断CLRTR0禁止定时器计数CLRTR1MOVTH1,3CH重新给计数器赋初值MOVTL1,0B0HDJNZ32H,LEDRET1定时1S到了吗DJNZ33H,IBTD1显示水位
36、时间到了没有啊到就去显示水温MOVTMOD,51H定时器0工作于方式定时器1作为计数器MOVTH0,0ECH给计数寄存器的高8位赋初值42MOVTL0,77H给计数寄存器的低8位赋初值MOV30H,20MOV31H,10MOVTH1,00HMOVTL1,00HMOVIE,82HSETBTR0计时开始SETBTR1开始计数MOVR0,0MOVR1,0MOVR2,0MOVR3,0MOVR4,0POPPSWPOPACCRETIIBTD1MOV32H,20是,则重新赋初值将十六进制转换为BCD码MOVA,TH0MOV36H,A43MOVR2,AMOVA,TL0MOV37H,AMOVR3,AMOVTH0
37、,00HMOVTL0,00HCLRAMOVR4,AMOVR5,AMOVR6,AMOVR7,16PP4CLRCMOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,AMOVA,R6ADDCA,R6DAAMOVR6,A44MOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,ADJNZR7,PP4转换完毕MOVA,R4MOVR4,AMOVA,R5SWAPAANLA,0FHMOVR3,AMOVA,R5ANLA,0FHMOVR2,AMOVA,R6SWAPAANLA,0FH45MOVR1,AMOVA,R6ANLA,0FHMOVR0,ALEDRET1SETBTR0启动定时器SETBTR1启动计数器SETBET1SETBEAPOPACC出栈POPPSWRETI中断返回DELAYMOVR7,15TMMOVR6,10AADJNZR6,AADJNZR7,TMRETXIANSHIINCAMOVCA,APCRET46DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H数据显示分别为0,1,2,3,4,5,6,7,8,9DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0F7H为显示ADD而用的数据END附录二总原理图