《基于51单片机电子万年历论文资料讲解.doc》由会员分享,可在线阅读,更多相关《基于51单片机电子万年历论文资料讲解.doc(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。基于51单片机电子万年历论文-51单片机电子万年历论文摘要:电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒
2、及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成了程序部分的编写。万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,LED显示电路,以及调时按键电路等组成。在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用2片7SEG-
3、MPX8-CA和一片7SEG-MPX4-CA。7SEG-MPX8-CA是一种八个共阳二极管显示器,7SEG-MPX4-CA是一种四个共阳二极管显示器。为了能更轻松的控制这三片显示器,本人使用了3片74HC164来驱动。74HC164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。程序采用汇编语言编写,以便更简单地实现调整时间及阴历显示功能。所有程序编写完成后,在wave软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。最后总在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计。关键词:时
4、钟电钟;DS1302;DS18B20;动态扫描;单片机AbstractE-calendardaytimeisaverywiderangeoftools,increasinglypopularinmodernsociety.Itcanbeyear,month,day,Sunday,hours,minutes,secondsfortime,butalsohasaleapyearcompensationtoavarietyoffunctions,andtheDS1302slonglife,smallerror.Forthedigitalelectroniccalendarusinganintuiti
5、vedigitaldisplaycansimultaneouslydisplayyear,month,day,Sunday,hours,minutes,seconds,andtemperatureandotherinformation,butalsoatime-calibrationandotherfunctions.ThecircuitusesAT89S52microcontrollerasthecore,powerconsumption,low-voltageworkin3V,thevoltagecanchoose35Vvoltagesupply.Thedesignisbasedon51s
6、eriesofmicrocontrollerstothedesignofelectroniccalendar,youcandisplaydateinformationonwhentheminutesandseconds,andweeks,withadjustabledateandtimefunctions.AtthesametimeinthedesignofthetheoreticalbasisoftheMCUandperipheralexpansionofknowledgeofthemorecomprehensivepreparation.Thehardwareandsoftwaredesi
7、gn,thereisnogoodbasicknowledgeandpracticalexperiencewillbegreatlylimited,eachfeatureisrequiredtoachievethekindofhardware,procedures,howtowrite,howtoimplementsuchalgorithms,thereisnocertainfoundationcannotbegoodimplementation.Foundduringthepreparationprocesstotheexistingknowledgetocompletethepreparat
8、ionofthetaskalonedifficult,Inthehelpofteachersandstudentstocompletetheprogrampartofthepreparation.Calendarofthedesignprocessinhardwareandsoftwaretosynchronizethedesign.HardwaremainlybytheAT89C52microcontroller,LEDdisplaycircuit,andthetunecomposedofthecircuitwhenthebutton.IntheSCMchoiceIusedtheAT89C5
9、2microcontroller,whichissuitableformanyofthemorecomplexcontrolapplications.Monitortheuseoftwo7SEG-MPX8-CAanda7SEG-MPX4-CA.7SEG-MPX8-CAisatotalofeight-yangdiodedisplay,7SEG-MPX4-CAisatotaloffour-yangdiodedisplay.Inordertomoreeasilycontrolthethreemonitors,Iusethree74HC164todrive.74HC164isan8-bitedge-t
10、riggeredshiftregister,serialinputdata,andparalleloutput.Thesoftwareincludescalendarprogram,timetoadjustprocedures,turnthelunarcalendarprograms,displayprograms.Programswritteninassemblylanguageusedinordertomoreeasilyadjustthetimeandtherealizationofthelunarcalendardisplay.Allprogrammingiscomplete,thew
11、avesoftwaredebugging,makesurethatnoproblems,intheProteussoftwarewithinamicrocontrollerembeddedinthesimulation.Thefinaloveralltheteachertohelpstudents,aswellastheirowneffortstocompletethedesignoftheelectroniccalendar.Keywords:Clockelectricclock:DS1302;DS18B20:Dynamicscan:scm目录一、设计要求与方案论证41.1设计要求41.2系
12、统基本方案选择和论证41.2.1单片机芯片的选择方案和论证41.2.2显示模块选择方案和论证41.2.3时钟芯片的选择方案和论证41.2.4温度传感器的选择方案与论证5二.系统的硬件设计与实现52.1电路设计框图52.2系统硬件概述52.3主要单元电路的设计62.3.1单片机主控制模块的设计62.3.2时钟电路模块的设计62.3.3温度采集模块设计72.3.4电路原理及说明72.3.5显示模块的设计8三、系统的软件设计93.1程序流程框图93.2子程序的设计93.2.1DS18B20温度子程序93.2.2读、写DS1302子程序10四.指标测114.1测试仪器114.2硬件测试114.3软件测
13、试114.测试结果分析与结论124.4.1测试结果分析124.4.2测试结论12五、作品总结12六、致谢词12参考文献13附录一:系统电路图14附录二:系统程序清单15附录三:系统使用说明书40一、设计要求与方案论证1.1设计要求:()基本要求 具有年、月、日、星期、时、分、秒等功能; 时间与阴、阳历能够自动关联; 具有温度计功能; 具备年、月、日、星期、时、分、秒校准功能;(2)创新要求具有上、下课响铃功能;具有防御报警功能;1.2系统基本方案选择和论证1.2.1单片机芯片的选择方案和论证:方案一:采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的
14、超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用AT89S52作为主控制系统.1.2.2
15、显示模块选择方案和论证:方案一:采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏.方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.方案三:采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。所以采用了LED数码管作为显示。1.2.3时钟芯片的选择方案和论证:方案一:直接采用单片机定时计数器提供秒信号,使用
16、程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.2.4温度传感器的选择方案与论证:方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件
17、成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。1.3电路设计最终方案决定综上各方案所述,对此次作品的方案选定:采用AT89S52作为主控制系统;DS1302提供时钟;数字式温度传感器;LED数码管动态扫描作为显示。二.系统的硬件设计与实现2.1电路设计框图LED数码管动态扫描显示模块AT89S52主控制模块键盘模块DS1302时钟模块温度采集模块2
18、.2系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由个数码管,74ls138、74
19、ls47译码器构成。使用动态扫描显示方式对数字的显示。2.3主要单元电路的设计2.3.1单片机主控制模块的设计AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端.如
20、图-1所示图-1主控制系统2.3.2时钟电路模块的设计图-2示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST
21、为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。图-2DS1302的引脚图2.3.3温度采集模块设计如图-3所示。采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。图-3D
22、S18B20温度采集2.3.4电路原理及说明(1)时钟芯片DS1302的工作原理:DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。图5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表6为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,
23、当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。(2)DS1302的控制字节DS1302的控制字如表-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出RAMRD1A4A3A2A1A0/CK/WR表-1DS1302的控
24、制字格式(3)数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图-4所示图-4DS1302读/写时序图(4)DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表-2。表-2DS1302的日历、时间寄存器此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次
25、性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。2.3.5显示模块的设计如图5所示,采用动态扫描显示,由个数码管,3-8译码器74LS138接1K限流电阻,再接8550三极管接到共阳数码管的CoM端作为选通位码,每位选择相应的列。74ls47接240限流电阻,再接共行的LED数码管的断码。图-5LED动态扫描显示三、系统
26、的软件设计3.1程序流程框图开始初始化读、写日期、时间和温度分离日期时间温度显示值显示子程序农历自动更新子程序日期、时间修改子程序闰月子程返回定时闹铃子程序图-A主程序流程图图-B计算阳历程序流程图图-C时间调整程序流程图图-D阴历程序流程图3.2子程序的设计3.2.1DS18B20温度子程序-CONFIG12EQU7FHTEMPHEQU21HTEMPLEQU20HREG2EQU22HREG3EQU23HREG4EQU24HDATEQUP0.7TOUTOU:LCALLCHUSHILCALLRDTEMPMOVA,TEMPLANLA,#11110000BMOVTEMPL,AMOVA,TEMPHAN
27、LA,#00000111BORLA,TEMPLSWAPAMOV25H,AMOVA,25HMOVB,#64HDIVABMOVA,BMOVB,#0AHDIVABSWAPAORLA,BMOV10H,ARETCHUSHI:LCALLRESETMOVA,#0CCHLCALLWRITE111MOVA,#4EHLCALLWRITE111MOVA,#CONFIG12LCALLWRITE111RETRDTEMP:LCALLRESETMOVA,#0CCHLCALLWRITE111MOVA,#44HLCALLWRITE111LCALLDL1MSLCALLRESETMOVA,#0CCHLCALLWRITE111MOV
28、A,#0BEHLCALLWRITE111LCALLERAD111MOVTEMPL,ALCALLERAD111MOVTEMPH,ARETRESET:LA:SETBDATMOV52H,#200LB:CLRDATDJNZ52H,LBSETBDATMOV52H,#30LC:DJNZ52H,LCCLRCORLC,DATJCLBMOV58H,#80LD:ORLC,DATJCLPDJNZ58H,LDSJMPLALP:MOV52H,#250LF:DJNZ52H,LFRETWRITE111:MOV53H,#8W51HA:SETBDATMOV54H,#8RRCACLRDATW52HA:DJNZ54H,W52HAM
29、OVDAT,CMOV54H,#30W53HA:DJNZ54H,W53HADJNZ53H,W51HASETBDATRETERAD111:CLREAMOV58H,#8RD1A:CLRDATMOV54H,#6NOPSETBDATRD2A:DJNZ54H,RD2AMOVC,DATRRCAMOV55H,#30RD3A:DJNZ55H,RD3ADJNZ58H,RD1ASETBDATRET3.2.2读、写DS1302子程序;写1302程序WRITE:CLRSCLKNOPSETBRSTNOPMOVA,32HMOVR4,#8WRITE1:RRCA;送地址给1302NOPNOPCLRSCLKNOPNOPNOPMO
30、VIO,CNOPNOPNOPSETBSCLKNOPNOPDJNZR4,WRITE1CLRSCLKNOPMOVA,31HMOVR4,#8WRITE2:RRCANOP;送数据给1302CLRSCLKNOPNOPMOVIO,CNOPNOPNOPSETBSCLKNOPNOPDJNZR4,WRITE2CLRRSTRET;读1302程序READ:CLRSCLKNOPNOPSETBRSTNOPMOVA,32HMOVR4,#8READ1:RRCA;送地址给1302NOPMOVIO,CNOPNOPNOPSETBSCLKNOPNOPNOPCLRSCLKNOPNOPDJNZR4,READ1MOVR4,#8READ2
31、:CLRSCLKNOP;从1302中读出数据NOPNOPMOVC,IONOPNOPNOPNOPNOPRRCANOPNOPNOPNOPSETBSCLKNOPDJNZR4,READ2MOV31H,ACLRRSTRET四.指标测4.1测试仪器序号名称型号1PC机LXB-HF769A2双路直流稳压电源CA17303D3V8通用单片机仿真器V8/L4数字万用表DT92085ISP在线编程器4.硬件测试电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短
32、路现象。在本成电子万年历的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:()LED数码管的断码错乱,原因出于没有认真看清a、b、c等引脚信息。解决:重新排列74LS47的输出端,相应接入LED数码管,即可解决出现在的断码或乱码。(2)对万年历修改时间或日期时,有时LED数码管被屏蔽掉,造成不亮现象。解决:根据仪器的测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。4.软件测试电子成年历是多功能的数字型,可以看当前日期(阴、阳历),时间,还有温度的仪器。
33、电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1烧入程序后,LED数码管显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。2修改时间、日期时没有农历没有自动对应上。解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,
34、发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题.3加入温度的程序后,进行修改时间、日期时相应的数码管位没有按要求闪动。解决:由于DS18B20是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,当把万年历的程序相接入时,会对延时有很大的影响。所以在调用温度子程序时,先关闭定时器1中断允许,在温度子程序反回时再打开定时器1中断允许。最终解决了此问题。4.测试结果分析与结论4.1测试结果分析(1)在测试中遇到发光二极管、LED数码管为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏
35、焊,虚焊,或者元件损坏.(2)LED数码管显示不正常,还有亮度不够,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。4.4.2测试结论经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固.五、作品总结在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了作品。达到了预期的目的,在最初的设计中,发挥“三个臭皮匠,顶个诸葛亮”的作用。相互学习、相互讨
36、论、研究。完了最初的设想。在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成。反而达到事半功倍的效果。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同组员的讨论,理清了思路,反而得心应手。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次比赛中学到了很多很多东西,这是最重要的。总之,参加电子竞赛我们的能力得到了全方位的提高。致谢词感谢学院给我们提供了一个展现自己的舞台,给我们
37、一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。1 在做作品的日子里得到了万老师的悉心指导,在此向我们的指导教师致以诚挚的谢意。感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我们对这次的作品完成有了信心和动力,也给了我们很多无私的帮助和支持,我们在此深表谢意。姓名:谭伟参考文献刘勇编数字电路电子工业出版社20042 陈正振编电子电路设计与制作广西交通职业技术学院信息工程系20073 杨子文编单片机原理及应用西安电子科技大学出版社20064王法能编单片机原理及应用科学出版社20042009年11月20日附录一:系统电路图附录二:系统程序清单CONFIG12EQU7FHTE
38、MPHEQU21HTEMPLEQU20HREG2EQU22HREG3EQU23HREG4EQU24HDATEQUP0.7SCLKEQUP3.2IOEQUP3.3RSTEQUP3.4yearDATA66HmonthDATA65HweekDATA64HdayDATA63HhourDATA62HmintueDATA61HsecondDATA60HORG0000HLJMPSTARTORG001BHLJMPINTT1START:;初值LCALLZJSETBEAMOVSCON,#00H;串行输出,方式0MOVTMOD,#10H;计数器1,方式1MOVTL1,#00HMOVTH1,#00HMOV32H,#8
39、EHMOV31H,#00H;允许写1302LCALLWRITEMOV32H,#90HMOV31H,#0A6H;1302充电,充电电流1.1MALCALLWRITE;主程序MAIN1:MOV32H,#8DH;读出年LCALLREADMOVyear,31HMOV32H,#8BH;读出星期LCALLREADMOVweek,31HMOV32H,#89H;读出月LCALLREADMOVmonth,31HMOV32H,#87H;读出日LCALLREADMOVday,31HMOV32H,#85H;读出小时LCALLREADMOVhour,31HMOV32H,#83H;读出分钟LCALLREADMOVmint
40、ue,31HMOV32H,#81H;读出秒LCALLREADMOVsecond,31H;分离缓存MOVR0,year;年分离,送显示缓存LCALLDIVIDEMOV7BH,R1MOV4BH,R1MOV7CH,R2MOV4CH,R2MOV78H,weekMOV48H,weekMOVR0,month;月分离,送显示缓存LCALLDIVIDEMOV79H,R1MOV49H,R1MOV7AH,R2MOV4AH,R2MOVR0,day;日分离,送显示缓存LCALLDIVIDEMOV76H,R1MOV46H,R1MOV77H,R2MOV47H,R2MOVR0,hour;小时分离,送显示缓存LCALLDIV
41、IDEMOV74H,R1MOV44H,R1MOV75H,R2MOV45H,R2MOVR0,mintue;分钟分离,送显示缓存LCALLDIVIDEMOV72H,R1MOV42H,R1MOV73H,R2MOV43H,R2MOVR0,second;秒分离,送显示缓存LCALLDIVIDEMOV70H,R1MOV40H,R1MOV71H,R2MOV41H,R2CLREALCALLTOUTOUSETBEALCALLDISPLAYLCALLGENGXIAN;更新农历程序JNBP0.1,SETG111JNBF0,SSSsetbP0.4;非闰月,则p0.4清零,指示灯亮LJMPMAIN1SETG111:LJ
42、MPSETGSSS:clrP0.4;闰月,则p0.4置位,指示灯不亮LJMPMAIN1;温度TOUTOU:LCALLCHUSHILCALLRDTEMPMOVA,TEMPLANLA,#11110000BMOVTEMPL,AMOVA,TEMPHANLA,#00000111BORLA,TEMPLSWAPAMOV25H,AMOVA,25HMOVB,#64HDIVABMOVA,BMOVB,#0AHDIVABSWAPAORLA,BMOV10H,ARETCHUSHI:LCALLRESETMOVA,#0CCHLCALLWRITE111MOVA,#4EHLCALLWRITE111MOVA,#CONFIG12LCALLWRITE111RETRDTEMP:LCALLRESETMOVA,#0CCHLCALLWRITE111MOVA,#44HLCALLWRITE111LCALLDL1MSLCALLRESETMOVA,#0CCH