




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
_电子技术综合设计总结报告设计题目: 多功能电子表 组长姓名: 王家琪 学 号: 16115746 专业与班级: 孙越崎学院 越崎专业11级-3班 姓 名: 李建 学 号: 16115806 专业与班级: 孙越崎学院 越崎专业11级-3班 姓 名: 董向辉 学 号: 09114090 专业与班级: 孙越崎学院 越崎专业11级-1班 时 间: 2013 2014 学年第(1)学期指导教师: 成 绩: 日 期:2013.12.17一、设计任务与要求:设计任务:多功能数字电子表基本要求:计时功能:显示时、分、秒,定闹功能,秒表功能,倒计时功能。提高要求:增加“语音报时”功能,增加“电子日历”功能。二、方案比较方案一:按照系统设计的功能的要求,初步确定系统由主控模块、时钟模块、显示模块各键盘接口模块、功能指示模块共5 个模块组成,电路系统构成框图如图1所示。主控芯片使用52 系列STC89C52RC 单片机,时钟芯片使用美国DALLAS 公司推出的一款高性能、低功耗、带RAM 的实时时钟DS1302。采用DS1302 作为计时芯片,可以做到计时准确。更重要的是,DS1302 可以在很小电流的后备电源(2.5V-5.5V 电源,在2。5V 时耗电小于300nA)下继续计时,而且DS1302 可以编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本功不耗电。显示模块采用普通的共阳LED 数码管,键输入采用查询法实现功能调整。方案二:按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块,LCD 显示模块,电源电路、复位电路、晶振电路几个模块,系统框图如图2 所示。主控模块采用STC89C52RC 单片机,按键模块用四个按键,用于调整时间和设定闹钟,显示模块采用LCD1602,时钟电路模块采用DS1302 实时时钟实现对时间,日期的操作。方案三:按照系统设计的要求和功能,将系统分为主控制器模块、显示模块、按键开关模块、蜂鸣器电路模块。系统框图如图3 所示,主控制模块采用STC89C52RC单片机为控制中心,显示模块采用液晶LCD1602 显示,计时使用STC89C52RC 单片机自带的定时器功能,实现对时间、日期的操作,通过按键盘开关实现对时间、日期的调整。图3 基于STC89C52RC 单片机的数字钟总体设计框图方案选择: 上面提到的三个方案中,在电路原理方面大致相同,都能够达到设计任务与要求,在方案一款方案二中使用外部的时钟芯片DS1302 来实现日期和时间的操作,方案三中则利用了单片机自身的定时器功能;方案二和方案三在显示模块上都使用液晶显示屏LCD1602 作为显示,方案一则使用LED 数码管作为显示,采用LED 数码管动态扫描,数码管的价格适中,对于显示数字较好,而且使用单片机的端口也较少;采用LCD1602 液晶显示屏,液晶显示屏的显示功能强大,可以显示大量文字、图形,显示多样性,清晰可见,价格相对LED 数码管贵得多,为控制成本,此处选择普通LED数码管。DS1302 是一款高性能的实时时钟芯片,以计时准确、接口简单、使用方便、工作电压范围宽和低功耗等优点,得到广泛的应用,同时可以对秒、时、分、日、月、年以及润年补偿的年进行计数,而且在掉电时能够在外部纽扣电池的供电下继续工作,不会因为掉电后,其时间就要重新设置,方案三中使用定时器的功能,当在掉电的时候就会使时间和日期回到原来设定的初始值,同时直接采用单片机定时计数提供秒信号,使用程序实现年时间和日期,采用此种方案,节约成本,但是实现的时间误差较大,所以不采用这种方案。综合上述三个方案,我们最终决定各取所长,采用STC89C52RC 作为主控制系统,DS1302 提供时钟,为控制成本,我们选用普通LED数码管作为显示模块。三、硬件单元电路设计1.主控制系统单片机中央处理系统的方案设计,我们选用具有STC 公司的STC89C52 单片机作为中央处理器,如图4 所示。该单片机除了拥有MCS-51 系列单片机的所有优点外,内部还具有8K 的在系统可编程FLASH 存储器,低功耗的空闲和掉电模式,极大的降低了电路的功耗,还包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。整个系统结构紧凑,抗干扰能力强,性价比高。是比较合适的方案。图4 STC89C52RC 主控制系统2、时钟振荡电路时钟振荡电路图5 所示,时钟振荡电路用于产生单片机正常工作时所需要的时钟信号,电路由两个30pF 的瓷片电容和一个20MHz 的晶振组成,并接入到单片机的XTAL1 和XTAL2 引脚处,使单片机工作于内部振荡模式。此电路在加电后延迟大约10ms 振荡器起振,在XTAL2 引脚产生幅度为3V 左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。电路中两个电容C1、C2 的作用使电路快速起振,提高电路的运行速度,对于STC89C52RC 其工作频率为0 至33MHz,在这个范围内单片机能够正常的工作。图5 STC89C52RC 时钟振荡电路3、复位电路复位电路由电阻和极性电容组成,如图6 所示,通过高电平使单片机复位,在时钟电路开始工作后,当高电平的时间超过大约2us 时,即可实现复位。此复位电路同时具备了上电复位和手动复位的功能,上电复位发生在开机加电时,由系统自动完成,手动复位通过一个按键来实现,在程序运行时,若遇到死机,死循环或程序“跑飞”等情况,通过手动复位就可以实现重新启动的操作。手动按钮复位需要人为在复位输入端RST 上加入高电平。一般采用的办法是在RST 端和正电源Vcc 之间接一个按钮和一个电阻,如图所示,当人为按下按钮时,则Vcc 的+5V 电平就会直接加到RST 端,由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。上电复位的工作过程是在加电时,复位电路通过电容加给RST 端一个短暂的高电平信号,此高电平信号随着Vcc 对电容的充电过程而逐渐回落,即RST 端的高电平持续时间取决于电容的充电时间,由图可知充电时间为:T=2.3RC=2.3*10*10-6*5.1*103=0.1173s ,保证系统能够可靠地复位。图6 手动复位电路4、DS1302 时钟电路时钟电路主要由时钟芯片DS1302、晶振等几部分组成,如图7 所示。DS1302采用3 线串行接口,占用引脚少,内部集成了可编程日历时钟,用户可以根据需要通过单片机的控制来自行设置,支持双电源供电,可以使用外部主电源和备用电源,备份电源能够使时钟芯片继续工作,但因为空间问题没有采用备用电源。图7 DS1302时钟电路5、按键电路按键电路由5个轻触开关组成,如图8 所示。按键用来调整时间和设定闹钟,以及功能选择,其一端直接接到单片机的端口,另一端接地,当按下按键时,相应的端口变为低电平,通过检测这一低电平就可以判断是哪个键按下,从而作相应的操作。图8 按键电路6、显示电路显示电路采用数码管显示,如图9 所示。图9 LED数码管 接口电路7、蜂鸣器电路蜂鸣器电路由一个220 欧的电阻,三极管8550,及蜂鸣器组成,如图10 所示。通过控制三极管的导通和截止来实现蜂鸣器的响与不响。图10 蜂鸣器电路8、元件清单表1 基于STC89C52RC 单片机的数字钟元件清单规格 名称 数量 组件- 3MM_1 10 D1, D2, D3, D4, D5, DS1, DS2,DS3,J1 10uF BCY-W2/D3.1 1 C3 12M XTAL_DIP 1 X1 1K AXIAL-0.4 8 R1, R2, R3, R4, R5, R6, R7,R8,R19 30P RAD-0.1 2 C1, C2 32.768K XTAL4 1 X2 3V CR2032 new 1 BT1 4.7K AXIAL-0.4 7 R9, R10, R11, R12, R13, R14,R15 AT89S5*/STC89C5* DIP-40 1 U1 BELL 蜂鸣器 1 BEEP DS1302 zcvzP8C 1 U3 K1 SWHAHA - duplicate 1 K1 K2 SWHAHA - duplicate 1 K2 K3 SWHAHA - duplicate 1 K3 K4 SWHAHA - duplicate 1 K4 K5 SWHAHA - duplicate 1 K5 POWER POWER-3A 1 POWER S8550 三极管 7 Q1, Q2, Q3, Q4, Q5, Q6, Q7 四、程序软件设计1.程序流程图NYNYNY时加1显示时间结束开始秒按键按下?秒加1分按键按下?分加1时按键按下?开始启动定时器按键检测时间显示图11 主程序流程图图12 按键处理流程图2.程序附后五、系统仿真与测试用PROTUES软件,根据数字电子钟的原理图,画出仿真图,得到的图如下所示。图13 电子钟的PROTES仿真仿真与软件测试成功,接下来我们便开始购买电焊笔、元器件并自行焊接,由于条件有限,我们委托网上某家电子元件商根据我们提供的pcb图制板。六、实物制作与调试1.制作过程 图14 实物完成图(正面)图15 实物完成图(背面)在拿到电路板后,我们首先检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;并且在安装前逐一检查元器件,用万用表测其数值,看是否与所用相同,在检查发现元器件一切正常后我们开始焊接。在焊接中,由于我们委托制作的pcb板尺寸较小,我们遇到了很多麻烦,如虚焊,焊点空间太小造成的短路等等,这些问题的确令我们头疼。再耐心的考验下,好在最终了完成焊接。焊接完成后,我们先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。在确定若一切正常后,方在断电的情况下将芯片插入,并再次检查各引脚的电位及其逻辑关系。2.成品上电测试(具体功能详见说明书)在一切检查确认无误,激动人心的时刻终于到来,这也是检验我们一切努力的最终一刻。图16 电子钟上电走时图(时间显示 13/12/16 12:06:47)走时功能完美实现,但在接下来的调试中,我们发现闹钟功能可以设置,但蜂鸣器不响,经过一系列排查,我们认为蜂鸣器在焊接过程中出现了损坏,而取下已焊好的蜂鸣器费时费力,我们最终决定不更换蜂鸣器,非常令人遗憾,不过,制作过程令我们受益匪浅。七、总结此次电子设计历时半个月完成,虽然方案简单,但在真正完成后我们还是觉得如释重负。经历了选题时的犹豫不决;方案选择时的精挑细选;程序编写,软件仿真中层出不穷的问题,错误;电路板焊接时我们轮流焊接,其中两人的手上还烫了好几个水泡。 。凡此种种,都令我们影响深刻,所以,在真正做完本次设计的时候,我们丝毫不觉得自己的作品有多么简陋,反而觉得敝帚自珍,当成一件宝贝珍藏着。当然,除了感情收获,友谊收获以外。在本次电子设计中,我们深刻体会到了工科在于实践的真理。有好几次,我们明明觉得自己的想法和教科书中完全一致,按理说不应有差错,但是在仿真及实物制作中,就是出不来我们想要的结果。事后才发现理论没有错误,出错的是接线,编程时的格式问题,焊接中出现了虚焊,焊点偏移等等。本次的设计对于我们的理论基础也是一次考验,让我们又重新拿起书本,复习了一遍过去学过的内容,如模电、数电、电路、信号等等,我们也发现自己许多不足的地方,深深后悔过去在听课时没有认真,一个知识点的遗漏在实践中就是一整个模块的错误。最后,我们要感谢老师给了我们一个自己动手实践的机会,虽然我们完成的不是很好,但我们觉得这次难得的经历确确实实让我们受益匪浅,再次感谢老师的谆谆教导,辛勤耕耘。附录:源程序HOU_S BIT P2.0;第一个数码管HOU_G BIT P2.1;第二个数码管MIN_S BIT P2.2;第三个数码管MIN_G BIT P2.3;第四个数码管SEC_S BIT P2.4;第五个数码管SEC_G BIT P2.5;第六个数码管T_RST BIT P0.3T_CLK BIT P0.4T_IO BIT P0.5DAY EQU 39H;日期MONTH EQU 3AH;月份YEAR EQU 3BH;年份SECOND EQU 30H;秒MINUTE EQU 31H;分HOUR EQU 32H;时TIM_1 EQU 33H;TIM_2 EQU 34H;ORG 0000HLJMP CHUSHIORG 000BHLJMP TIMER0ORG 30HCHUSHI: ;初始化CLR T_RSTCLR T_CLKMOV SP ,#60HMOV SECOND,#0;MOV MINUTE,#0;MOV HOUR,#0;时间的初值为000000MOV DAY,#1;MOV MONTH,#1;MOV YEAR,#1;日期的初值为010101SETB HOU_S;SETB HOU_G;SETB MIN_S;SETB MIN_G;SETB SEC_S;SETB SEC_G;初始状态为1,都不显示MOV R0,#0;MOV R1,#12;闹铃初始化MOV R3,#0;MOV R4,#1;存储定时时间,点击定时开始后,从所存时间开始倒计时MOV R5,#0;MOV R6,#0;设定定时时间所用寄存器MOV 38H,#12;MOV 37H,#0;存储所定闹铃,以便判断是否闹铃时间到CLR P0.7;MOV TIM_1,#10;执行完后经历0.5秒MOV TIM_2,#2;执行完后经历1秒LCALL SETDS1302LCALL GET1302LCALL DISPLAYMOVE40H,#25ANL TMOD,#0F0HORL TMOD,#01H;定时器0为模式1MOV TH0,#03CHMOV TL0,#0B0H;装入初值SETB ET0;SETB TR0;SETB EA;允许中断LP1:JBC TF0, LP2SJMP LP1LP2:MOV TH0,#03CHMOV TL0,#0B0HLCALL DISPLAYDJNZ 40H,LP1LCALL GET1302MOV 40H,#25SJMPLP1MAIN:JNB P3.0,DATETZ;按下0键时,显示日期并可对日期进行调整JNB P3.1,ZSTZ1;按下1键时,显示时间,并可调时JNB P3.2,NLTZ1;按下2键进行闹铃设置JNB P3.3,DSTZ;按下3键进行定时设置ACALL DISP;调用显示程序FMQPD:;判断定时是否到零、闹铃时间是否已到MOV A,HOUR;SUBB A,38H;JZ FEN;判断时是否到闹铃所定时间,若到,则对分进行判断,若不到,则对定时进行判断AJMP DSPDKQFEN:MOV A,MINUTE;SUBB A,37H;JZ SHENGYIN1;时和分都到闹铃时间则蜂鸣器响DSPDKQ:;判断是否应该进行定时时间的判断MOV A,3CH;3CH是引入的判断因子,当其为0时不对定时时间是否到0进行判断,从而不开启蜂鸣器JNZ DSPD2;当3CH不是0时,跳转到定时判断程序AJMP MAINDSPD2:MOV A,R4;JZ S_PD;AJMP MAIN;S_PD:MOV A,R3;JZ SHENGYIN1;AJMP MAIN;DSTZ:AJMP DSTZ1;DATETZ:AJMP DATETZ1;SHENGYIN1:MOV 3CH,#1SETB P0.7AJMP MAINZSTZ1:MOV 35H,#60;MOV 36H,#10;ZSTZ2:ACALL DISP;DJNZ 35H,ZSTZ2;JNB P3.0,DATETZ;按下0键时,显示日期并可对日期进行调整JNB P3.1,ZSTZ1;按下1键时,显示时间,并可调时JNB P3.2,NLTZ1;按下2键进行闹铃设置JNB P3.3,DSTZ;按下3键进行定时设置JNB P3.4,H_T;JNB P3.5,M_T;DJNZ 36H,ZSTZ2;AJMP MAIN;H_T:ACALL DISP;INC HOUR;MOV A,HOUR;CJNE A,#24,ZSTZ1;MOV HOUR,#0;AJMP ZSTZ1;M_T:ACALL DISP;INC MINUTE;MOV A,MINUTE;CJNE A,#60,ZSTZ1;MOV MINUTE,#0;AJMP ZSTZ1;NLTZ1:CLR P0.7;DEC 38HMOV 35H,#100;MOV 36H,#10;NLTZ2:ACALL ONE;ACALL TWO;DJNZ 35H,NLTZ2;JNB P3.0,DATETZ;按下0键时,显示日期并可对日期进行调整JNB P3.1,ZSTZ1;按下1键时,显示时间,并可调时JNB P3.2,NLTZ1;按下2键进行闹铃设置JNB P3.3,DSTZ;按下3键进行定时设置JNB P3.4,NLXS2;JNB P3.5,NLXS1;DJNZ 36H,NLTZ2;AJMP MAIN;NLXS1:MOV DPTR,#LEDTAB;MOV 35H,#100;MOV 36H,#10;INC R0;MOV 37H,R0;CJNE R0,#60,NLTZ2;MOV R0,#0;MOV 37H,R0;AJMP NLTZ2;ONE:MOV DPTR,#LEDTAB;MOV A,R0;MOV B,#10;DIV AB;MOVC A,A+DPTR;MOV P1,A;CLR MIN_S;ACALL D_1MS;SETB MIN_S;MOV A,B;MOVC A,A+DPTR;MOV P1,A;CLR MIN_G;ACALL D_1MS;SETB MIN_G;RET;NLXS2:MOV DPTR,#LEDTAB;MOV 35H,#60;MOV 36H,#10;INC R1;MOV 38H,R1;CJNE R1,#24,NLTZ2;MOV R1,#0;MOV 38H,R1;AJMP NLTZ2;TWO:MOV DPTR,#LEDTAB;MOV A,R1;MOV B,#10;DIV AB;MOVC A,A+DPTR;MOV P1,A;CLR HOU_S;ACALL D_1MS;SETB HOU_S;MOV DPTR,#LEDTAB;MOV A,B;MOVC A,A+DPTR;MOV P1,A;CLR HOU_G;ACALL D_1MS;SETB HOU_G;RET;DSTZ1:MOV 3CH,#0CLR P0.7;MOV 35H,#100;MOV 36H,#10;JNB P3.3,DSTZ1;DSTZ2:ACALL DS_S;ACALL DS_M;DJNZ 35H,DSTZ2;JNB P3.0,DATETZ3;按下0键时,显示日期并可对日期进行调整JNB P3.1,ZSTZ;按下1键时,显示时间,并可调时JNB P3.2,NLTZ;按下2键进行闹铃设置JNB P3.4,DSXS1;JNB P3.5,DSXS2;JNB P3.3,DSKS1;DJNZ 36H,DSTZ2;AJMP MAIN;DATETZ3:AJMP DATETZZSTZ:AJMP ZSTZ1NLTZ:AJMP NLTZ1DSXS1:MOV 35H,#100;MOV 36H,#10;INC R6;CJNE R6,#60,DSTZ2;MOV R6,#0;AJMP DSTZ2;DS_M:;MOV DPTR,#LEDTAB;MOV A,R6;MOV B,#10;DIV AB;MOVC A,A+DPTR;MOV P1,A;CLR MIN_S;ACALL D_1MS;SETB MIN_S;MOV A,B;MOVC A,A+DPTR;MOV P1,A;CLR MIN_G;ACALL D_1MS;SETB MIN_G;RET;DSXS2:MOV 35H,#100;MOV 36H,#10;INC R5;CJNE R5,#60,DSTZ2;MOV R5,#0;AJMP DSTZ2;DS_S:MOV DPTR,#LEDTAB;MOV A,R5;MOV B,#10;DIV AB;MOVC A,A+DPTR;MOV P1,A;CLR SEC_S;ACALL D_1MS;SETB SEC_S;MOV A,B;MOVC A,A+DPTR;MOV P1,A;CLR SEC_G;ACALL D_1MS;SETB SEC_G;RET;DSKS1:MOV 3CH,#1MOV A,R5;MOV R3,A;MOV A,R6;MOV R4,A;DSKS2:MOV DPTR,#LEDTAB;MOV A,R3;MOV B,#10;DIV AB;MOVC A,A+DPTR;MOV P1,A;CLR SEC_S;ACALL D_1MS;SETB SEC_S;MOV A,B;MOVC A,A+DPTR;MOV P1,A;CLR SEC_G;ACALL D_1MS;SETB SEC_G;MOV A,R4;MOV B,#10;DIV AB;MOVC A,A+DPTR;MOV P1,A;CLR MIN_S;ACALL D_1MS;SETB MIN_S;MOV A,B;MOVC A,A+DPTR;MOV P1,A;CLR MIN_G;ACALL D_1MS;SETB MIN_G;JNB P3.0,MAIN2;JNB P3.1,MAIN2;DSPD:;MOV A,R4;JZ PANDUAN_S;AJMP DSKS2;PANDUAN_S:;MOV A,R3;JZ SHENGYIN;AJMP DSKS2;MAIN2:LJMP MAIN;SHENGYIN:MOV 3CH,#1SETB P0.7AJMP MAINRETI_11:;由于程序较长,此处加一个返回程序,避免跳转距离过长POP PSW;POP ACC;RETI;中断服务程序TIMER0:PUSH ACC;PUSH PSW;MOV A,#0B0H;ADD A,TL0;MOV TL0,A;MOV TH0,#03CH;DJNZ TIM_1,RETI_11;MOV TIM_1,#10;DJNZ TIM_2,RETI_11;MOV TIM_2,#2;INC SECOND;MOV A,SECOND;CJNE R3,#0,RETI_2;MOV R3,#60;DEC R4;RETI_2:DEC R3;CJNE A,#60,RETI_11;MOV SECOND,#0;INC MINUTE;MOV A,MINUTE;RETI_3:CJNE A,#60,RETI_11;MOV MINUTE,#0;MOV SECOND,#0;INC HOUR;MOV A,HOUR;CJNE A,#24,RETI_11;MOV HOUR,#0;MOV MINUTE,#0;MOV SECOND,#0;T_YEARPD:MOV A,YEAR;MOV B,#100;DIV AB;MOV A,B;JZ T_YEARPD2;看年份是否能被100整除,若能,再进行额外判断MOV A,YEAR;不能被100整除,则判断是否能被4整除MOV B,#4;DIV AB;MOV A,B;JZ T_RUNYEAR;若年份能被4整除则跳转到闰年部分T_PINGYEAR:;年份不能被4整除则为平年MOV A,MONTH;CJNE A,#2,T_PINGMONTH;若不是2月,则跳转到平时的月份进行判断INC DAY;MOV A,DAY;CJNE A,#29,RETI_11;MOV DAY,#1;INC MONTH;MOV A,MONTH;CJNE A,#13,RETI_11;MOV MONTH,#1;INC YEAR;AJMP RETI_1;返回T_YEARPD2:;能被100整除的情况下,的额外判断MOV A,YEAR;MOV B,#100;DIV AB;MOV B,#4DIV ABJNZ T_PINGYEAR;若不能被400整除则为平年T_RUNYEAR:;闰年的情况MOV A,MONTH;CJNE A,#2,T_PINGMONTH;看是不是2月INC DAY;MOV A,DAY;CJNE A,#30,RETI_1;MOV DAY,#1;INC MONTH;MOV A,MONTH;CJNE A,#13,RETI_1;MOV MONTH,#1;INC YEAR;AJMP RETI_1;T_PINGMONTH:MOV A,MONTHADD A,#2SUBB A,#3;判断是不是一月JZ T_DAY31;若是一月调用一个月31天的程序段MOV A,MONTH;SUBB A,#3;JZ T_DAY31;MOV A,MONTH;SUBB A,#4;JZ T_DAY30;调用一个月30天的程序段MOV A,MONTHSUBB A,#5JZ T_DAY31MOV A,MONTHSUBB A,#6JZ T_DAY30MOV A,MONTHSUBB A,#7JZ T_DAY31MOV A,MONTHSUBB A,#8JZ T_DAY31MOV A,MONTHSUBB A,#9JZ T_DAY30MOV A,MONTHSUBB A,#10JZ T_DAY31MOV A,MONTHSUBB A,#11JZ T_DAY30MOV A,MONTHSUBB A,#12JZ T_DAY31RETI_1:POP PSWPOP ACCRETI;中断返回T_DAY31:;当一个月为31天时的日期计算方法INC DAYMOV A,DAYCJNE A,#32,RETI_1MOV DAY,#1INC MONTHMOV A,MONTHCJNE A,#13,RETI_1MOV MONTH,#1INC YEARAJMP RETI_1T_DAY30:;当一个月为30天时的日期计算方法INC DAYMOV A,DAYCJNE A,#31,RETI_1MOV DAY,#1INC MONTHMOV A,MONTHCJNE A,#13,RETI_1MOV MONTH,#1INC YEARAJMP RETI_1DISP:;走时的显示程序,包括调时时的显示MOV DPTR,#LEDTABMOV A,SECONDMOV B,#10DIV AB;A存十位B存个位MOVC A,A+DPTRMOV P1,ACLR SEC_SACALL D_1MS;显示秒十位SETB SEC_SMOV A,BMOVC A,A+DPTRMOV P1,ACLR SEC_GACALL D_1MS;显示秒个位SETB SEC_GMOV A,MINUTEMOV B,#10DIV ABMOVC A,A+DPTRMOV P1,ACLR MIN_SACALL D_1MSSETB MIN_SMOV A,BMOVC A,A+DPTRMOV P1,ACLR MIN_GACALL D_1MSSETB MIN_GMOV A,HOURMOV B,#10DIV ABMOV DPTR,#LEDTABMOVC A,A+DPTRMOV P1,ACLR HOU_SACALL D_1MSSETB HOU_SMOV A,BMOVC A,A+DPTRMOV P1,ACLR HOU_GACALL D_1MSSETB HOU_GRETDATEDISP:;日期的显示程序,包括日期调整时的显示MOV DPTR,#LEDTABMOV A,DAYMOV B,#10DIV AB;A存十位B存个位MOVC A,A+DPTRMOV P1,ACLR SEC_SACALL D_1MSSETB SEC_SMOV A,BMOVC A,A+DPTRMOV P1,ACLR SEC_GACALL D_1MSSETB SEC_GMOV A,MONTHMOV B,#10DIV ABMOVC A,A+DPTRMOV P1,ACLR MIN_SACALL D_1MSSETB MIN_SMOV A,BMOVC A,A+DPTRMOV P1,ACLR MIN_GACALL D_1MSSETB MIN_GMOV A,YEARMOV B,#100DIV ABMOV A,BMOV B,#10DIV ABMOVC A,A+DPTRMOV P1,ACLR HOU_SACALL D_1MSSETB HOU_SMOV A,BMOVC A,A+DPTRMOV P1,ACLR HOU_GACALL D_1MSSETB HOU_GRETDATETZ1:;日期调整程序MOV 35H,#100DATETZ2:ACALL DATEDISPDJNZ 35H,DATETZ2JNB P3.3,YEAR_TJNB P3.4,MONTH_TJNB P3.5,DAY_TJNB P3.1,MAIN3AJMP DATETZ1MAIN3:AJMP MAINYEAR_T:;年的调整很容易;直接加1ACALL DATEDISPINC YEARAJMP DATETZ1MONTH_T:;月的调整也很容易,加到13时月变为1ACALL DATEDISPINC MONTHMOV A,MONTHCJNE A,#13,DATETZ1MOV MONTH,#1AJMP DATETZ1DAY_T:;日期的调整需要判断是不是闰年,还要判断当月具体是哪个月YEARPD:MOV A,YEARMOV B,#100DIV ABMOV A,BJZ YEARPD2;看年份是否能被100整除,若能,再进行额外判断MOV A,YEAR;不能被100整除,则判断是否能被4整除MOV B,#4DIV ABMOV A,BJZ RUNYEAR;若年份能被4整除则跳转到闰年部分PINGYEAR:;年份不能被4整除则为平年MOV A,MONTHCJNE A,#2,PINGMONTH;若不是2月,则跳转到平时的月份进行判断INC DAYMOV A,DAYCLR CSUBB A,#29JC DATETZ1MOV DAY,#1AJMP DATETZ1;返回扫描YEARPD2:;能被100整除的情况下,的额外判断MOV A,YEARMOV B,#100DIV ABMOV B,#4DIV ABJNZ PINGYEAR;若不能被400整除则为平年RUNYEAR:;闰年的情况MOV A,MONTHCJNE A,#2,PINGMONTH;看是不是2月INC DAYMOV A,DAYCLR CSUBB A,#30JC DATETZ1MOV DAY,#1AJMP DATETZ1PINGMONTH:MOV A,MONTHADD A,#2SUBB A,#3;判断是不是一月JZ DAY31;若是一月调用一个月31天的程序段MOV A,MONTHSUBB A,#3JZ DAY31MOV A,MONTHSUBB A,#4JZ DAY30;调用一个月30天的程序段MOV A,MONTHSUBB A,#5JZ DAY31MOV A,MONTHSUBB A,#6JZ DAY30MOV A,MONTHSUBB A,#7JZ DAY31MOV A,MONTHSUBB A,#8JZ DAY31MOV A,MONTHSUBB A,#9JZ DAY30MOV A,MONTHSUBB A,#10JZ DAY31MOV A,MONTHSUBB A,#11JZ DA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医用药技能考试题及答案
- 安全月知识考试题及答案
- 2025洪水公务员面试题及答案
- 旅游商业地产商铺返租与全域旅游经营管理合同
- 股份代持与知识产权保护合同
- 企业员工集资共建职工餐厅协议
- 老师专业考试试题及答案
- 消防安全演习培训内容课件
- 2025至2030节能建材行业发展趋势分析与未来投资战略咨询研究报告
- 愚公移山翻译工作总结
- 合肥市肥东县大学生乡村医生专项计划招聘考试真题2024
- 能源问题面试题库及答案
- 2025山西太原铁路局招聘试题及答案解析
- 2025年海上光伏产业技术创新与海洋能源市场前景报告
- 2025年征兵心理测试题库及答案
- 2025年河南省(安阳市)事业单位招聘联考内黄县(综合类)岗位考察考试参考试题及答案解析
- 2025至2030中国电子束晶圆检查系统行业项目调研及市场前景预测评估报告
- TSG-T7001-2023电梯监督检验和定期检验规则宣贯解读
- 招议标管理办法
- 小儿急性上呼吸道感染的护理查房ppt
- 跨文化交际全套课件
评论
0/150
提交评论