资源描述
武汉大学电子信息学院
电子系统综合设计课程论文
基于51单片机电子时钟设计与实现
专 业:
年 级:
作 者:
指引教师:
6月 26日
目 录
1 课题背景与立项缘由 1
2 实验方案设计 2
2.1设计规定 2
2.2数字钟构成 2
2.3系统总体框图 3
3 软件系统方案设计与选取 4
3.1主程序流程图 4
3.2定期器子程序流程图 6
3.3方案选取 7
4 硬件系统方案设计与选取 7
4.1单片机构造 7
4.2开发板构造和用法... 8
4.3方案选取... 10
5 系统测试 11
5.1测试环境 11
5.2测试过程 11
5.3测试成果... 12
6 实验心得 12
参照文献 13
附录1 系统电路图 13
附录2 系统软件代码 14
附录3 系统器件清单 38
1 课题背景及立项缘由
所谓单片机,就是把中央解决器CPU(Central Processing Unit)、存储器(Memory)、定期器、I/0(Input/Output)接口电路等某些计算机重要功能部件集成在一块集成电路芯片上微型计算机。虽然单片机只是一种芯片,但从构成和功能上看,它已具备了微型计算机系统含义。中文“单片机”称呼由英文名称“Single Chip Microcomputer”直接翻译而来。单片机把微型计算机各重要某些集成在一块芯片上,大大缩短了系统内信号传送距离,从而提高了系统可靠性及运营速度。因而在工业测控领域中,单片机系统是最抱负控制系统。因此,单片机是典型嵌人式系统,是嵌入式系统低端应用最佳选取。单片机发展经历了如下4个阶段:
1、芯片化摸索阶段
20世纪70午代,美国Fairchild(仙童)公司一方面推出了第一款单片机F-8,随后Intel公司推出了影响面大、应用更广MCS48单片机系列。MCS48单片机系列推出标志着在工业控制领域,进入到智能化嵌入式应用芯片形态计算机摸索阶段。参加这一摸索阶段尚有Motorola、Zilog和TI等大公司,它们都获得了满意摸索效果,确立了在SCMC嵌入式应用中地位。
2、构造体系完善阶段
在MCS-48摸索成功基本上不久推出了完善、典型单片机系列MCS-5l。MCS-51系列单片机推出,标着Single Chip Microcomputer体系构造完善。
3、从SCMC向MCU化过渡阶段
Intel公司推出MCS96单片机,将某些用于测控系统模数转换器(ADC)、程序运营监视器(WDT)、脉宽调制器(PWM)、高速I/O口纳入片中,体现了单片机微控制器特性。MCS-51单片机系列向各大电气商广泛扩散,许多电气商竞相使用80C51为核,将许多测控系统中使用电路技术、接口技术、可靠性技术应用到单片机中;随着单片机内外围功能电路增强,强化了智能控制器特性。微控制器(Microcontrollers)成为单片机较为精确表达名词。
4、MCU百花齐放阶段
单片机发展到这一阶段,表白单片机已成为工业控制领域中普遍采用智能化控制工具-----小到玩具、家电行业,大到车载、舰船电子系统,遍及计量测试、工业过程控制、机械电子、金融电子、商用电子、办公自动化、工业机器人、军事和航空航天等领域。为满足不同规定,浮现了高速、大寻址范畴、强运算能力和多机通信能力8位、16位、32位通用型单片机,小型便宜型、外围系统集成专用型单片机,以及形形色色各具特色当代单片机。可以说,单片机发展进人了百花齐放时代,为顾客选取提供了空间。
在寻常生活和工作中,咱们经常使用到定期控制。早起惯用某些时间控制单元都是使用模仿电路设计和制作,其定期精确性和重复精度都不是很抱负,当前基本上都是基于数字技术新一代产品,随着单片机性能价格比不断提高,新一代产品应用也越来越广泛,大可构成复杂工业过程控制系统,完毕复杂控制功能。小则用于家电控制,大则用于工业和科学研究中精准时间定位,配以恰当接口芯片,可以构造各式各样微电子产品。
咱们专业在本学期数字逻辑电路实验中已经能使用脉冲信号发生器、有关芯片、数码管和导线在实验箱上实现基于基本门电路数字时钟;在电子系统综合设计(2)这门课上,咱们学习了单片机有关知识,理解了其低功耗、可靠性和稳定性强、可以在内部EPROM上写入和擦除程序相对先进特点与功能。因而,咱们但愿在有单片机芯片开发板上通过编程实现数字钟,并盼望它能有更多功能和更好稳定性。
2 实验方案设计
2.1 设计规定
u 实现时、分、秒计时功能
u 实现年、月、日日历功能
u 体现平闰年区别,各时间单位之间进制精确
u 实现闹钟报警功能
2.2 数字钟构成
数字钟事实上是一种对原则频率(1HZ)进行计数计数电路.由于计数起始时间不也许与原则时间一致,故需要在电路上加一种校时电路,同步原则1MHZ时间信号必要做到精确稳定.普通使用石英晶体振荡器电路构成数字钟。
⑴晶体振荡器电路
晶体振荡器电路给数字钟提供一种频率稳定精确12MHz方波信号,可保证数字钟走时精确及稳定.不论是指针式电子钟还是数字显示电子钟都使用了晶体振荡器电路。
⑵时间计数器电路
时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器电路构成,秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器。
⑶译码驱动电路
译码驱动电路将计数器输出8421BCD码转换为数码管需要逻辑状态,并且为保证数码管正常工作提供足够工作电流。
⑷数码管
数码管普通有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供为LED数码管。
2.3 系统总体框图
开始
系统初始化
显示计时
判断按键与否有按下
年、月、日
调节时分秒
调节定期
调节星期
3 软件系统方案设计与选取
3.1 主程序流程图
3.1主程序流程图(续)
3.2 定期器子程序流程图
3.3方案选取与有关技术
方案一:基本门电路搭肩,用基本门电路来实现数字钟,电路构造复杂,鼓掌系数大,不易调试。
方案二:单片机编程,用单片机设计电路,由于使用软硬件结合方式,因此电路构造简朴,调试也相对以便。
与第一种方案比较长处是非常明显。咱们选取了第二种方案。
4 硬件系统方案设计与选取
4.1 单片机构造
4.1.1 构造框图
4.2 开发板构造与用法
4.2.1开发板构造
4.2.2 通过SST51实现开发板只读模式和程序烧写切换
打开SSTEasyIAP11F.exe程序,选取串口
选取芯片型号和内部程序存储器
选取PC串口,MCU晶振和波特率
先选取拟定在复位MCU
通讯成功后窗口右上角显示芯片信息和版本信息
点击Download SoftICE选项,将MCU中BOOT LOADER监控程序替代为Soft ICE监控程序
选取确认更换
打开Keil C51程序,新建一种工程
保存在自己新建文献夹中
点击保存浮现CPU选取对话框,选取SST系列89X516RD2
浮现与否添加原则51初始代码对话框,选“否”
工程建立之后新建源程序文献,点击”File”菜单下“New”选项
保存在工程文献夹内,C程序文献后缀为“.C”,汇编程序文献后缀为“.ASM”
在文本编辑区编写源程序并保存;在Source Group上右击选取“Add Files To Group…”选项添加源文献至工程
选取编写好源程序文献,点击Add添加所选文献
点击编译按钮,编译工程
进入目的板调试选项设立,点击“Project”菜单下“Options for Target…”选项
选取为硬件仿真功能
点击Setting进入通讯参数设定菜单,去掉所有Cache选项。至此设立完毕,进入仿真调试阶段
点击DEBUG下“Start/Stop Debug Session”选项进入DEBUG界面
进入后可以看到信息栏中由显示连接成功信息。在此仿真界面可以进行单步、全速、断点等调试方式
由Soft ICE监控程序转换回SST Boot-Strap Loader监控程序
打开编辑器SUPERPRO程序
进入SUPERPRO程序界面,单击“选取器件选项”
进入器件选取对话框,在器件类型处选取“MCU/MPU”在查找处输入要器件名称,找到之后选取“拟定”
单击“装入文献”选项
进入下载文献选取对话框,选取要下载Soft ICE监控程序,文献格式普通为“.hex”或“.bin”格式
由于SST单片机监控程序存储在Block1中,Block1地址为10000h,故数据缓冲区起始地址改为“10000”,下载普通执行程序则直接默认
详细环节为:Erase=》Program=》Verify;
打开SST BOOT-STRAP LOADER软件工具,并按之前环节与单片机通讯连接成功。在界面右下方IAP Function菜单中有下载选项,选取“Download”选项下载程序
进入了下载文献选取界面
在文献查找对话框中找到要下载顾客程序,普通为.Hex或.bin格式文献
选取好顾客程序后,单击环节二中OK选项开始下载,界面最下面状态栏显示下载进度,当显示为Done时表达程序下载已经完毕,单片机上电执行顾客程序了
4.3 方案选取与有关技术
4.3.1显示模块
显示模块是本次单片机课程设计最核心某些。
方案一:采用LCD1602。LCD1602为工业字符型液晶,可以同步显示16x02即32个字符。其采用原则16脚接口,该液晶模块内部字符发生存储器(CGROM)已经存储了160个不同点阵字符图形,因此可分容易实现数字钟数码显示。
方案二:采用LED共阴极数码管。共阴数码管在应用时将公共极COM接到地线GND上,当某一字段发光二极管阳极为高电平时,相应字段就点亮。当某一字段阳极为低电平时,相应字段就不亮。
基于以上分析,咱们考虑到现实经济因素,因此选取了方案二。
共阴极数码管要正常显示,就要用驱动电路来驱动数码管各个段码,从而显示出咱们要数字,因而依照数码管驱动方式不同,可以分为静态式和动态式两类:
方案一:静态显示驱动。就是每一种数码管显示屏都要占用单独具备锁存功能I/O接口用于笔划段字形代码。这样单片机只要把要显示字形代码发送到接口电路,直到要显示新数据时,再发送新字形码,因而,使用这种办法单片机中CPU占用较小。但对于静态显示方式,所需数据锁存装置诸多,引线多而复杂,且可靠性也较低。
方案二:动态显示驱动。通过单片机对数码管位选通COM端电路控制,只要将需要显示数码管选通控制打开,该位就显示出字形,没有选通数码管就不会亮。通过度时轮流控制各个数码管COM端,就使各个数码管轮流受控显示,这就是动态驱动。动态显示可以大幅度地减少硬件成本和电源功耗,由于某一时刻只有一种数码管工作,也就是所谓分时显示,故显示所需要硬件电路可分时复用。动态显示方式,可以避免静态显示问题。但设计上如果解决不当,易导致亮度低,闪烁问题。因而合理设计既应保证驱动电路易实现,又要保证显示后数据稳定,无闪烁。动态显示采用多路复用技术动态扫描显示方式,复用限度不是无限增长,由于运用动态扫描显示使咱们看到一幅稳定画面实质是运用了人眼暂留效应和发光二极管发光时间长短,发光亮度等因素. 咱们通过实验发现,当扫描刷新频率(发光二极管停闪频率) 为50Hz,发光二极管导通时间≥1m s 时,显示亮度较好,无闪烁感.。
鉴于上述方案分析,咱们采用方案二
4.3.2闹铃模块
方案一:采用语音芯片ISD1110闹铃。ISD1110 具备各种采样率相应,各种录放时间,可以运用振荡电阻自已决定采样率。操作简朴,灵活。音质好,适应电压范畴广。可先对录放音设备录入一段音乐或其她报时方式,当到设定期间时,单片机控制录放音设备放音。
方案二:采用蜂鸣器闹铃,当到设定期间时,单片机向蜂鸣器送出低电平,蜂鸣器响铃。采用蜂鸣器闹铃构造简朴,只需要单路信号控制,发出闹铃声音可以依照响和不响不同软件延时时间来控制,固然也能发出音乐声音。
基于两种方案分析,虽然语音芯片ISD1110具备更多长处,但鉴于经济因素,咱们本次设计还是决定采用方案二。
4.3.3 LED灯显示模块
采用LED灯可以以便用不同流水方式或单个LED灯来判断系统工作状态,实现不同显示功能,是一种经济又实用方式。
5 系统测试
5.1 测试环境
硬件平台:计算机一台、通讯电缆一根、数据线一根、单片机系统学习平台V1.1
软件平台:WINDOWS XP操作系统、SoftICE监控程序、Keil软件
5.2 测试过程
硬件测试: 用SoftICE查看和变化单片机工作状态
软件测试:将数字钟程序烧入单片机,并测试其功能与否完善
5.3 测试成果
时钟精度分析:
为进一步使本次系统做得更完美,我使用了原则秒表对自己设计时间进行了精度测量。本次设计系统使用晶振为12MHZ.数码管显示
00:5:00时,用秒表测得相应数据如表3所示:
序号
1
2
3
4
5
T(min)
5.00.5781
5.00.4787
5.00.5040
5.00.3096
4.59.2587
序号
6
7
8
9
10
T(min)
5.01.4335
5.00.
4.59.4556
5.01.2026
5.00.2597
序号
11
12
13
14
15
T(min)
4.58.9750
5.00.1181
5.00.9604
5.02.5060
4.59.8985
序号
16
17
18
19
20
T(min)
10.00.1081
10.01.0545
10.00.9560
10.00.7854
5.00.4355
通过计算可得数码管显示:00:5:00时
秒表测得数值平均值为:00:5:2343
6 实验心得
本次数字钟实验耗时好久,最后做出来功能也是通过重复多次调试才所有达标,是一次很故意义学习和动手经历。从完全不懂单片机到在单片机上编出数字钟程序,咱们感受重要有一下几点:
u 看再多课本也许效果也不如实际编程学习效率高。事实上咱们编跑马灯程序时候缺什么就看什么,非常有针对性,在短时间内掌握了汇编语言编程基本。从本课程角度来说,实践对理论反馈作用体现更加明显。
u 调试程序比编程自身枯燥多,但是在某种意义上更加重要。编程是靠灵感,脑袋里有了算法可以不久写出来,但是实际成果能不能达到还要看调试,要考虑算法逻辑、语法、内存地址等诸多方面。这一点在对硬件编程上体现尤为明显。
u 本实验最后完毕了数字钟诸多功能,并没有向其她领域拓展功能,是比较遗憾地方。但愿能在电子系统综合设计(2)中得到弥补!
参照文献
[1] 楼然苗.《单片机课程设计指引》.北京航空航天大学出版社,.7.
[2] 苏家健.《单片机原理及应用技术》.高等教诲出版社,.11.
[3] 深圳市精敏数字机器有限公司 单片机入门背景知识,.5.
[4] 张毅坤 陈善久 裘雪红. 单片微型计算机原理及应用. 西安电子科技大学出版,1998.91版.
[5] 李学海.《原则80C51单片机基本教程:原理篇》.北京航空航天大学出版社,.
[6] 王建校.《51系列单片机及C51程序设计》.科学出版社,.
[7] 陈龙三.《C语言控制与应用》.清华大学出版社,1999.8.
[8] 赵建领.《51系列单片机开发宝典》. 电子工业出版社,.
附录一 系统电路图
附录二 软件完整代码
ORG 0000H
LJMP MAIN
ORG 0003H ;时钟中断入口
LJMP JIA1
ORG 000BH ;日期中断入口
LJMP CLOCK
ORG 0013H
LJMP JIAN1
ORG 001BH
LJMP NAOZHO
ORG 0030H
DATELED1 EQU 55H ;日期月地址
DATELED2 EQU 56H ;日期日地址
DATELED3 EQU 57H ;日期年高位地址
DATELED4 EQU 67H ;日期年低位地址
SHUNAO EQU 58H
NAOH EQU 59H
NAOM EQU 40H
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
ORG 0100H
MAIN: MOV R3,#0
MOV R0,#12
MOV R1,#0
MOV NAOH,#12
MOV NAOM,#0
MOV SHUNAO,#40
MOV P1,#0FFH
MOV R5,#0FFH
MOV 66H,#0FFH
MOV SP,#30H
MOV R2,#0
MOV R7,#7FH
MOV DATELED1,#01
MOV DATELED2,#01H
MOV DATELED3,#00H
MOV DATELED4,#20
MOV TMOD,#21H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#00H
MOV TH0,#00H
SETB TR0
CLR TR1
MOV IE,#087H
SETB IT1 ;外部中断模式
SETB IT0
CLR PS
CLR PT1
CLR PT0
SETB PX1
SETB PX0
LED: MOV A,R0
MOV R7,#7FH
LCALL LED1
LCALL TIME
MOV A,R0
CJNE A,NAOH,NONAO
MOV A,R1
CJNE A,NAOM,NONAO
JB TR1,NONAO
LJMP NAOKAI
NONAO: INC NAOM
MOV A,NAOM
MOV 38H,R1
CJNE A,38H,NONAO1
CLR TR1
NONAO1: DEC NAOM
MOV A,R1
MOV R7,#0EFH
LCALL LED1
LCALL TIME
MOV A,R2
MOV R7,#0FDH
LCALL TIME
LCALL LED1
LCALL TIME
JNB P3.4,SETM
JNB P3.5,DATEH
LJMP LED
NAOKAI: SETB ET1
SETB TR1
LJMP NONAO
DATEH: LJMP DATE
SETM: CLR ET1
LCALL TIME3
JB P3.4,LED
SETM3: JNB P3.4,SETM3
LCALL TIME3
JNB P3.4,SETM3
MOV P1,#11111110B
SETM1: MOV A,R1
MOV R7,#0EFH
LCALL LED1
LCALL TIME
MOV A,R0
MOV R7,#7FH
LCALL LED1
LCALL TIME
JB P3.4,SETM1C1
LCALL TIME3
JNB P3.4,SETH
SETM1C1:DJNZ R5,SETM1
MOV R5,#0FFH
SETM2: MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#0EFH
MOVX @DPTR,A
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#0F7H
MOVX @DPTR,A
LCALL TIME
MOV A,R0
MOV R7,#7FH
LCALL LED1
LCALL TIME
JB P3.4,SETM1C2
LCALL TIME3
JNB P3.4,SETH
SETM1C2:DJNZ R5,SETM2
MOV R5,#0FFH
LJMP SETM1
SETH: JNB P3.4,SETH
LCALL TIME3
JNB P3.4,SETH
MOV P1,#11111101B
SETH1: MOV A,R0
MOV R7,#07FH
LCALL LED1
LCALL TIME
MOV A,R1
MOV R7,#0EFH
LCALL LED1
LCALL TIME
JB P3.4,SETH2
LCALL TIME3
JNB P3.4,SETD
SETH2: DJNZ R5,SETH1
MOV R5,#0FFH
SETH3: MOV A,R1
MOV R7,#0EFH
LCALL LED1
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#07FH
MOVX @DPTR,A
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#0BFH
MOVX @DPTR,A
LCALL TIME
JB P3.4,SETH4
LCALL TIME3
JNB P3.4,SETD
SETH4: DJNZ R5,SETH3
MOV R5,#0FFH
LJMP SETH1
SETD: JNB P3.4,SETD
LCALL TIME3
JNB P3.4,SETD
MOV P1,#11111011B
SETD1: MOV A,DATELED4
MOV R7,#7FH
LCALL LED1
LCALL TIME
MOV A,DATELED3
MOV R7,#0DFH
LCALL LED1
LCALL TIME
MOV A,DATELED1
MOV R7,#0F7H
LCALL LED1
LCALL TIME
MOV A,DATELED2
MOV R7,#0FDH
LCALL LED1
LCALL TIME
JB P3.4,AGAIN2
LCALL TIME3
JNB P3.4,SETDM
AGAIN2: DJNZ R5,SETD1
MOV R5,#0FFH
SETD3: MOV A,DATELED4
MOV R7,#7FH
LCALL LED1
LCALL TIME
MOV A,DATELED3
MOV R7,#0DFH
LCALL LED1
LCALL TIME
MOV A,DATELED1
MOV R7,#0F7H
LCALL LED1
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#0FDH
MOVX @DPTR,A
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#0FEH
MOVX @DPTR,A
LCALL TIME
JB P3.4,AGAIN3
LCALL TIME3
JNB P3.4,SETDM
AGAIN3: DJNZ R5,SETD3
MOV R5,#0FFH
LJMP SETD1
SETDM:
JNB P3.4,SETDM
LCALL TIME3
JNB P3.4,SETDM
MOV P1,#11110111B
SETDM1:MOV A,DATELED4
MOV R7,#7FH
LCALL LED1
LCALL TIME
MOV A,DATELED3
MOV R7,#0DFH
LCALL LED1
LCALL TIME
MOV A,DATELED1
MOV R7,#0F7H
LCALL LED1
LCALL TIME
MOV A,DATELED2
MOV R7,#0FDH
LCALL LED1
LCALL TIME
JB P3.4,AGAIN1
LCALL TIME3
JNB P3.4,SETDYD
AGAIN1:DJNZ R5,SETDM1
MOV R5,#0FFH
SETDM3: MOV A,DATELED4
MOV R7,#7FH
LCALL LED1
LCALL TIME
MOV A,DATELED3
MOV R7,#0DFH
LCALL LED1
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#11110111B
MOVX @DPTR,A
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#11111011B
MOVX @DPTR,A
LCALL TIME
MOV A,DATELED2
MOV R7,#0FDH
LCALL LED1
LCALL TIME
JB P3.4,AGAIN
LCALL TIME3
JNB P3.4,SETDYD
AGAIN:DJNZ R5,SETDM3
MOV R5,#0FFH
LJMP SETDM1
SETDYD: JNB P3.4,SETDYD
LCALL TIME3
JNB P3.4,SETDYD
MOV P1,#11101111B
SETDYD1: MOV A,DATELED4
MOV R7,#7FH
LCALL LED1
LCALL TIME
MOV A,DATELED3
MOV R7,#0DFH
LCALL LED1
LCALL TIME
MOV A,DATELED1
MOV R7,#0F7H
LCALL LED1
LCALL TIME
MOV A,DATELED2
MOV R7,#0FDH
LCALL LED1
LCALL TIME
JB P3.4,AGAIND4
LCALL TIME3
JNB P3.4,SETDYG
AGAIND4:DJNZ R5,SETDYD1
MOV R5,#0FFH
SETDYD3:MOV A,DATELED4
MOV R7,#07FH
LCALL LED1
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#11011111B
MOVX @DPTR,A
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#11101111B
MOVX @DPTR,A
LCALL TIME
MOV A,DATELED1
MOV R7,#0F7H
LCALL LED1
LCALL TIME
MOV A,DATELED2
MOV R7,#0FDH
LCALL LED1
LCALL TIME
JB P3.4,AGAIND9
LCALL TIME3
JNB P3.4,SETDYG
AGAIND9: DJNZ R5,SETDYD3
MOV R5,#0FFH
LJMP SETDYD1
SETDYG: JNB P3.4,SETDYG
LCALL TIME3
JNB P3.4,SETDYG
MOV P1,#11011111B
SETDYG1: MOV A,DATELED4
MOV R7,#7FH
LCALL LED1
LCALL TIME
MOV A,DATELED3
MOV R7,#0DFH
LCALL LED1
LCALL TIME
MOV A,DATELED1
MOV R7,#0F7H
LCALL LED1
LCALL TIME
MOV A,DATELED2
MOV R7,#0FDH
LCALL LED1
LCALL TIME
JB P3.4,AGAING4
LCALL TIME3
JNB P3.4,NAOSETM
AGAING4:DJNZ R5,SETDYG1
MOV R5,#0FFH
SETDYG3:
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#01111111B
MOVX @DPTR,A
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#10111111B
MOVX @DPTR,A
LCALL TIME
MOV A,DATELED3
MOV R7,#0DFH
LCALL LED1
LCALL TIME
MOV A,DATELED1
MOV R7,#0F7H
LCALL LED1
LCALL TIME
MOV A,DATELED2
MOV R7,#0FDH
LCALL LED1
LCALL TIME
JB P3.4,AGAING9
LCALL TIME3
JNB P3.4,NAOSETM
AGAING9: DJNZ R5,SETDYG3
MOV R5,#0FFH
LJMP SETDYG1
NAOSETM:
JNB P3.4,NAOSETM
LCALL TIME3
JNB P3.4,NAOSETM
MOV P1,#10111111B
NAOSETM1: MOV A,NAOM
MOV R7,#0EFH
LCALL LED1
LCALL TIME
MOV A,NAOH
MOV R7,#7FH
LCALL LED1
LCALL TIME
JB P3.4,SETM1CN
LCALL TIME3
JNB P3.4,NAOSETH
SETM1CN:DJNZ R5,NAOSETM1
MOV R5,#0FFH
NAOSETM2: MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#0EFH
MOVX @DPTR,A
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#0F7H
MOVX @DPTR,A
LCALL TIME
MOV A,NAOH
MOV R7,#7FH
LCALL LED1
LCALL TIME
JB P3.4,SETM1CN2
LCALL TIME3
JNB P3.4,NAOSETH
SETM1CN2:DJNZ R5,NAOSETM2
MOV R5,#0FFH
LJMP NAOSETM1
NAOSETH: JNB P3.4,NAOSETH
LCALL TIME3
JNB P3.4,NAOSETH
MOV P1,#01111111B
NAOSETH1: MOV A,NAOH
MOV R7,#07FH
LCALL LED1
LCALL TIME
MOV A,NAOM
MOV R7,#0EFH
LCALL LED1
LCALL TIME
JB P3.4,NAOSETH2
LCALL TIME3
JNB P3.4,NOSET
NAOSETH2: DJNZ R5,NAOSETH1
MOV R5,#0FFH
NAOSETH3: MOV A,NAOM
MOV R7,#0EFH
LCALL LED1
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#07FH
MOVX @DPTR,A
LCALL TIME
MOV A,#00H
MOV DPTR,#0FAFFH
MOVX @DPTR,A
MOV DPTR,#0FBFFH
MOV A,#0BFH
MOVX @DPTR,A
LCALL TIME
JB P3.4,NAOSETH4
LCALL TIME3
JNB P3.4,NOSET
NAOSETH4: DJNZ R5,NAOSETH3
MOV R5,#0FFH
LJMP NAOSETH1
NOSET: MOV P1,#0FFH
JNB P3.4,$
LCALL TIME3
JNB P3.4,NOSET
LJMP LED
CLOCK: INC R3
MOV TH0,#3CH ;定期器复位
MOV TL0,#0B0H
CJNE R3,#20,CHUAN ;如下为小时,分钟,秒进一
INC R2
MOV R3,#00H
CJNE R2,#60,CHUAN
INC R1
MOV R2,#00H
CJNE R1,#60,CHUAN
INC R0
MOV R1,#00H
CJNE R0,#24,CHUAN
INC DATELED2
MOV R0,#00H
MOV R4,DATELED1 ;如下是月份和平闰年选取及进一
MOV R6,DATELED2
CJNE R4,#01,CLOCK1
CJNE R6,#32,CHUAN
INC DATELED2
MOV DATELED1,#01H
LJMP ENDD
CLOCK1: CJNE R4,#02,CLOCK3
MOV B,#4 ;平闰年选取
MOV A,DATELED3
DIV AB
MOV A,B
JNZ CLOCK2
CHUANX2: CJNE R6,#30,CHUANX1 ;闰年二月
INC DATELED1
MOV DATELED2,#01H
LJMP ENDD
CLOCK2: CJNE R6,#29,CHUANX2
ENDDX: INC DATELED1 ;平年二月
MOV DATELED2,#01H
LJMP ENDD
CHUAN: LJMP ENDD
CHUANX1: CJNE R6,#31,CHUANX11
LJMP ENDDX
CHUANX11: CJNE R6,#32,CHUAN
LJMP ENDDX
CLOCK3: CJNE R4,#3,CLOCK4
CJNE R6,#32,CHUAN ;
INC DATELED1
MOV DATELED2,#0
展开阅读全文