《LED电子钟设计要点.pdf》由会员分享,可在线阅读,更多相关《LED电子钟设计要点.pdf(25页珍藏版)》请在三一文库上搜索。
1、LED 电子钟设计 1 *大学课程设计任务书 课程单片机课程设计 题目LED 电子钟设计 专业测控技术与仪器姓名* 学号 * 一、任务 设计一款基于 AT89C51 单片机的 LED 电子钟,实现钟表的时、分、秒显 示功能。 二、设计要求 1 利用单片机 AT89C51 和 LED 数码管设计一个数字时钟。 2 在 6 位数码管上显示当前时间。显示格式“时时分分秒秒”。 3 同样,在数码管上显示出当前日期。 显示格式“年年(后两位) 月月日日”。 用按键在时间显示和日期显示之间切换。 4 实现年月日,时分秒的调整。 三、参考资料 1 万光毅 .单片机实验与实践教程 M. 北京航空航天大学出版社
2、 ,2005.1. 2 张毅刚 .单片机原理及应用 M. 高等教育出版社 ,2003:160-190. 3 Philips .74HC595 .datasheet.Philips Semiconductors .2003 Jun 25. 4 李光飞 .单片机课程设计指导 M. 北京:北京航空航天大学出版社 ,2007. 5 金炯泰 ,金奎焕 .如何使用 KEIL 编译器 M. 北京航空航天大学出版社 ,2002. 完成期限* 指导教师* 专业负责人* * 年*月* 日 LED 电子钟设计 2 目录 第 1 章 绪论. 3 1.1LED 电子钟概述 3 1.2 LED 电子时钟技术状况 3 1.
3、3本设计任务 4 第 2 章 总体方案论证与设计 5 2.1LED 显示电子时钟设计思路. 5 2.2时钟系统方案论证 . 5 2.3元件清单 . 6 第 3 章 系统硬件设计 7 3.1单片机控制系统. 7 3.2各部分功能的实现 . 7 第 4 章 系统的软件设计 10 4.1软件主要完成功能 . 10 4.2程序设计 . 10 4.3软件设计的主要流程 10 第 5 章 系统调试与测试结果分析 13 5.1系统调试 . 13 5.2测试结果 . 14 结论. 15 参考文献 . 16 附录 1 程序 17 附录 2 仿真效果图 . 25 LED 电子钟设计 3 第 1 章绪论 在电子技术
4、飞速发展的推动下,现代电子产品几乎渗透了社会的各个领域, 有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产 品性能进一步提高, 产品更新换代的节奏也越来越快。电子钟已成为人们日常生 活中必不可少的必需品, 广泛用于个人家庭以及办公室等公共场所,给人们的生 活、学习、工作、娱乐带来极大的方便。特别是基于LED 光源设计的电子钟更 是得到蓬勃发展。 LED 光源因具有节能、环保、长寿命、安全、响应快、体积 小、色彩丰富、发光效率高、可控性好等优点,被认为是节电降能耗的最佳实现 途径。并广泛的应用于公交汽车,商店,学校和银行等公共场合的时间显示、定 时、计时等。 1.1 LED
5、 电子钟概述 1957 年,世界上第一个电子表问世,从而奠定了电子钟的基础,电子钟开 始迅速发展起来。 现代的电子钟是基于单片机的一种计时工具,采用延时程序产 生一定的时间中断, 用于一秒的定义, 通过计数方式进行满六十秒分钟进一,满 六十分小时进一, 满二十四小时小时清零。 从而达到计时的功能, 是人们日常生 活不可缺少的工具。 采用单片机为中心的电子钟编程灵活,便于电子钟功能的扩充, 即可用该电 子钟发出各种控制信号, 精确度高等特点, 同时可以用该电子钟发出各种控制信 号。 1.2 LED 电子时钟技术状况 为了将时间在 LED 数码管上显示,可采用静态显示法和动态显示法,由于 静态显示
6、法需要译码器,数据锁存器等较多硬件,所以可采用动态显示法实现 LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送 对应的字码, 使其显示数字。 由于数码管扫描周期很短, 由于人眼的视觉暂留效 应,使数码管看起来总是亮的,从而实现了各种显示。除此之外,时分显示采用 动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。 1.2.1 LED 动态显示的原理 LED 电子钟设计 4 数码管的动态显示利用视觉暂留作用,使得人眼看到的是静态的不变的显 示,视觉暂留时间约为0.01秒,因而每次显示的时间间距要比较短。 首先向 LED显示器数据端口发送第一个8 位数据。此时只有一
7、位低电平而其 他口都为高电平,因此只有LED数码管显示该数码,让其显示1ms。然后可以发 送第二个数据, 同时应使其对应的位码为低电平且保证其他位为高电平。依次类 推,对各显示器进行扫描,显示器分时轮流工作。虽然只有一个显示器显示,但 由于人的视觉暂留现象我们仍会感觉所有的显示器都在同时显示。它的优点是硬 件电路简单,占用较少的I/O 口,但其传送速度相对较慢。采用此方法,除了单 片机以外,没用到其他芯片。 由数码管的显示原理, 再考虑到数码管上显示的数字对应与一个八位的二进 制数, 09 一共十个,把显示这些数对应的数码管段信息存到程序存储器的 TABLE 表中, 将 DPTR 作为指针,用
8、程序分配的地址单元分别存储实际的时分秒、 年月日的数字,把存储的数字用DIV 指令分出高低位,作为偏移量,这样,程 序中通过查表,就把实际的数字和数码管中显示的数字对应起来了。 1.3 本设计任务 (1) 利用单片机 AT89C51 和 7 段 LED 数码管设计一个数字时钟。 (2) 在 6 位数码管上显示当前时间。显示格式“时时分分秒秒”。 (3) 在 6 位数码管上显示当前日期。显示格式“年年(后两位)月月日日”。 用按键在时间显示和日期显示之间切换。 (4) 实现年月日,时分秒的调整。 LED 电子钟设计 5 第 2 章总体方案论证与设计 本系统采用单片机AT89C51 为 LED 显
9、示屏的控制核心, 系统主要包括 LED 驱动模块、按键输入模块等。下面对各模块的设计逐一进行论证比较。 2.1 LED 显示电子时钟设计思路 按照系统的设计功能要求,本时钟系统的设计必须采用单片机软件系统实 现,用单片机的自动控制能力配合按键控制,来控制时钟的调整及显示。 2.2 时钟系统方案论证 2.2.1 单片机的选择 对于单片机的选择, 如果用 8031系列,由于它没有内部 RAM ,系统又需要 大量内存存储数据,因而不可用;51 系列单片机的 ROM 为 4K,对于我们设计 的系统可能有点小; 52 系列单片机与 51 系列的结构一样,而ROM 扩大为 8K, 对我们设计系统提供充足的
10、空间进行功能的扩展。再有 51 系列单片机与 52 系列 的单片机价格差不多。但此次51 的内存足够我们使用了,因此,我们选择51 系列的单片机。 2.2.2 显示系统方案比较 方案 1:用液晶 1602显示。 方案 2:用 LED 数码管显示。 时钟和温度的显示可以用LED,价格便宜。而且LED 数码管能显示简单的 设计的系统,与我们设计要求相符,因此我们选择方案2。 2.2.3 键盘控制方案的选择 方案 1:购买集成键盘,采用矩阵形式连接。 方案 2:购买单个复位开关做成键盘。 I/O 口对于我们的设计绰绰有余。通常我们选用价格便宜单个复位开关做成 键盘。 LED 电子钟设计 6 在本系统
11、的电路设计方框图如图2-1 所示,它由三部分组成 : (1)控制部分主芯片采用单片机AT89C51。 (2)显示部分采用 LED 数码管实现时钟显示。 (3)时钟调节部分使用按键来控制。 图 2-1 系统总原理图 2.3 元件清单 电子钟元件清单如表2-1 所示。 表 2-1电子钟元器件清单 元件名称规格型号数量(个) 单片机AT89C51 1 时钟芯片DS1302 1 6 位一体的共阴LED 显示器7SEG-MPX6-CC-BLUE 1 晶振12MHz 2 电容30pF 2 电容22F 1 按键BUTTON 6 电阻300 1 电阻1K 1 LED 灯LED-RED 1 排阻RESPACK-
12、8 1 时钟电路 按键调时 微 型 控 制 器 数据显示 LED 电子钟设计 7 第 3 章系统硬件设计 3.1 单片机控制系统 本次智能仪器设计时钟电路, 使用了 ATC89C51 单片机芯片控制电路和单片 机 DS1302 时钟芯片,单片机控制电路简单且省去了很多复杂的线路,使得电路 简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,年、月、日同时使用 汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过三个模块: 键盘、芯片、显示屏即可满足设计要求。 3.2 各部分功能的实现 3.2.1 控制部分( AT89C51) 单片机采用 51系列单片机。由 ATMEL 公司生产的 AT
13、89C51 是一种低功耗、 高性能 CMOS8 位微控制器,具有 4K 在系统可编程 Flash 存储器。单片机的可 擦除只读存储器可以反复擦除100 次。使用 Atmel 公司高密度非易失性存储器 技术制造,与工业MCS-51 产品指令和引脚完全兼容。在单芯片上,拥有灵巧 的 8 位 CPU 和在线系统可编程Flash,使得 AT89C51 为众多嵌入式控制应用系 统提供高灵活、有效的解决方案。AT89C51 具有以下标准功能:4k 字节 Flash, 128 字节 RAM ,8 位双向 I/O 口线,看门狗定时器, 2 个数据指针,三个 16 位 定时器 /计数器,一个 6 向量 2 级中
14、断结构,全双工串行口,片内晶振及时钟电 路。空闲模式下, CPU 停止工作,允许 RAM 、定时器 /计数器、串口、中断继续 工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停 止,直到下一个中断或硬件复位为止。而且,它还具有一个看门狗(WDT)定 时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷 入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。 AT89C51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 3.2.2 DS1302时钟芯片 DS1302为达拉斯公司的一种实时时钟芯片, 主要特点是采用串行数据传输,
15、 可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。 LED 电子钟设计 8 3.2.3 单片机最小系统 单片机最小系统主要由复位电路,晶振电路,电源等几部分组成。 (1)复位电路 复位电路有两种方式: 上电复位和按钮复位, 我们主要用按钮复位方式。 如 图 3 -1 所示。 图 3-1 复位电路图 (2)晶振电路 单片机系统里都有晶振, 在单片机系统里晶振作用非常大,全程叫晶体振荡 器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟 频率越高,那么单片机运行速度就越快, 单片接的一切指令的执行都是建立在单 片机晶振提供的时钟频率。 在通常工作条件下, 普通的晶振
16、频率绝对精度可达百 万分之五十。 高级的精度更高。 有些晶振还可以由外加电压在一定范围内调整频 率,称为压控振荡器( VCO) 。晶振用一种能把电能和机械能相互转化的晶体在 共振的状态下工作,以提供稳定,精确的单频振荡。 单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶 振,便于各部分保持同步。 有些通讯系统的基频和射频使用不同的晶振,而通过 电子调整频率的方法保持同步。 晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。 如果不同子 系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。 选取原则:电容取30PF,晶振为 12MHz。晶振模块如图 3-
17、2 所示。 图 3-2 晶振模块原理图 LED 电子钟设计 9 (3)电源 AT89C51 单片机的供电电源是 +5V 的直流电。 (4)EA 非/Vpp 脚 我们没有用外部扩展ROM,因此 EA 非/Vpp 为高电平, 即接+5V 电源。如图 3-3 所示。 图 3-3 EA脚电路图 3.2.4 键盘控制系统的设计 按键需要 5 个,分别实现为时间、日期调整,时间、日期的加和时间、日期 的更换等功能。用单片机的5 个 I/O 口接收控制信号,其电路如图3-4 所示。 图 3-4 按键调时电路 通过控制键来控制所要调节的是时、分、还是秒。在控制键按下后LED 中 会在相应的位置出现光标,这时在
18、通过加数键或减数键来控制时分秒的加或减。 3.2.5 LED 显示电路 如图 3-5 所示。 图 3-5 显示电路 LED 电子钟设计 10 第 4 章系统的软件设计 4.1 软件主要完成功能 (1)显示时间程序 用软件调节时间,通过程序的调节,最后用LED 数码管实现时钟。 (2)调节时间程序按键调节时间,能实现时、分、秒,年、月、日的调节。 4.2 程序设计 首先分配地址空间,并对程序进行初始化。 然后对按键动作进行判断,如果P2.3 按下,显示日期,此时若有调整键按 下,则对日期进行调整,此时定时器仍在工作,只是不显示当前时间。 循环定时,秒加 1,并判断秒是否到了60,若到了秒清零,
19、分加 1,若不到, 返回继续循环。同理,处理分钟和小时,处理小时时,把60 换成 24。24 小时到 了之后,DATE(日)加 1,此时,需要对 MONTH(月份)判断,小月时, DATE 到 31 就进位(即记到30) ,大月时, DATE 到 32 再进位(显示到31) ,对于 2 月,还要判断年份,平年到29(28 天) ,瑞年到 30(29 天) 。然后是月进位,年 加 1。 4.3 软件设计的主要流程 4.3.1 系统总的流程图 主要功能是负责时间的显示,通过写地址和写数据来实现时间的调节和控 制,最后通过调用显示子程序显示出来如图 4-1 所示。 LED 电子钟设计 11 图 4-
20、1 程序设计流程图 上图所示, 为流程图。然后根据流程图进行程序设计,这样的程序比较有条 理,各部的程序可以分别进行调试和检查。有利于后面对程序进行修改和调试, 特别值得注意的是,程序在编写的过程中,要有鲜明的思想,不能主次不分,主 程序与子程序混在一起,要编定出主程序,再根据设计的要求编写子程序,有利 于后面的调试修改。 程序开始 显示日期 调整时间显示日期 调整时间 +日期调整日期 调整日期 显示当前时间 定时器 T0 1 秒到? 秒加 1 1 分到? 分加 1 1 年到? 年加 1 LED 电子钟设计 12 4.3.2 地址分配如下 SEC EQU30H ;当前秒 MINEQU 31H
21、HOUREQU32H DAY EQU 33H MONTH EQU 34H WEEK2 EQU 35H YEAR EQU 36H A_BIT EQU 20H B_BIT EQU 21H C_BIT EQU 22H D_BIT EQU 23H E_BIT EQU 24H F_BIT EQU 25H AB_BIT EQU 26H ;秒/ 日 CD_BIT EQU 27H ;分/ 月 EF_BIT EQU 28H ;时/ 年 DS1302_ADDR EQU 5EH DS1302_DATA EQU 5FH 4.3.3 I/O 口 T_RST BIT P3.2 ;实时时钟复位线引脚 T_CLK BIT P
22、3.3 ;实时时钟时钟线引脚 T_IO BIT P3.4 ;实时时钟数据线引脚 H_ADJ BIT P2.0 ;时/ 年调整 M_ADJ BIT P2.1 ;分/ 月调整 S_ADJ BIT P2.2;秒/ 日调整 DT_SET BIT P2.3 ;时间 / 日期选择 STR BIT P2.4;启动走时 LED 电子钟设计 13 第 5 章系统调试与测试结果分析 5.1 系统调试 根据系统设计方案, 本系统的调试共分为三大部分:硬件调试,软件调试和 软硬件联调。 由于在系统设计中采用模块设计法,所以方便对各电路模块功能进 行逐级测试。 5.1.1 硬件调试 对各个模块的功能进行调试,主要调试各
23、模块能否实现指定的功能。 5.1.2 软件调试 软件调试采用单片机仿真器及微机,将编好的程序进行调试, 主要是检查语 法错误。把编写完的源程序放在KEIL 软件中,先自行检查下程序是否有误,更 改有误的部分, 再创建工程进行程序一个一个地调试,把调试结果显示有误的部 分找出,检查错误的原因然后再进行更改,更改后再进行调试, 再找出错误进行 更改,依次循环进行,至到程序调试成功为止。 5.1.3 硬件软件联调 将调试好的硬件和软件进行联调,主要调试系统的实现功能。 5.1.4 仿真 仿真是把 KEIL 中生成的源程序找出,并加载到单片机内,检查原理图的设 计是否有误,更改有误的部分,然后进行仿真
24、,看仿真结果是否正确,如果不正 确或者不显示结果,就再此检查原理图进行更改直到能顺利地仿真出结果。 通过KEIL 和硬件仿真平台 Proteus 的联合,可以将设计效果仿真出来,根据 效果,有目的的改变设计,优化程序。 LED 电子钟设计 14 5.2 测试结果 调试结果如图 5-1。 图 5-1 程序测试结果 最终生成 HEX 文件,加载到单片机中。如图5-2。 图 5-2 生成 HEX文件 LED 电子钟设计 15 结论 经过几天的努力,本次课程设计的任务基于单片机控制LED 数码管显 示的电子时钟的设计已经完成。本系统以 AT89C51为核心部件, 利用软件编程, 通过键盘控制和液晶显示
25、实现了时钟功能,能实现题目的基本要求。 尽量做到硬 件电路简单稳定, 充分发挥软件编程的优点, 减小因元器件精度不够和环境因素 引起的误差。 由于时间有限和本身知识水平的发挥,我们认为本系统还有需要改 进和提高的地方,例如选用更高精度的元器件,硬件电路更加精确稳定, 软件测 量算法进一步的改进与完善等。 由于我们设计的 LED 电子钟的重点在于软件程序的设计,利用 proteus设计 电路原理图,利用KEIL 软件进行程序编写与调试。在软件设计时,由于对单片 机的中断系统不是很了解,所以出现了许多不必要的麻烦。就拿编程来说,由于 没有处理好子程序的返回和时钟中断程序时间就导致时钟运行到指定的时
26、间后 不打转而是继续走,由于没有把握好计数、显示等一些细节地方, 而导致时钟计 数不准确、不能正常显示时间等一系列相当严重的问题。在经过反复检查、 分析、 调试之后, 从中发现了中断时的数值设置不太适合等一系列问题,经过自己的反 复修改、调试和验证,最终才得以解决达到设计的要求。在整个设计过程中,程 序的调试是其中一个非常重要的环节。其中有一点是值得我们注意的:在程序设 计之前一定要知道设计要求,要清楚地知道本程序所有内容以及程序的执行过 程,据此画出本程序的流程图, 然后根据流程图进行程序设计,这样的程序比较 有条理,各部的程序可以分别进行调试和检查。有利于后面对程序进行修改和调 试,特别值
27、得注意的是, 程序在编写的过程中, 要有鲜明的思想, 不能主次不分, 主程序与子程序混在一起,不知道哪个是主,哪个是次,要编定出主程序,再根 据设计的要求编写子程序,使整个程序严密,有条理。有利于后面的调试修改。 LED 电子钟设计 16 参考文献 1 万光毅 .单片机实验与实践教程 M. 北京航空航天大学出版社 ,2005.1. 2 张毅刚 .单片机原理及应用 M. 高等教育出版社 ,2003:160-190. 3 Philips .74HC595 .datasheet.Philips Semiconductors .2003 Jun 25. 4 周润景 .基于 Proteus的电路与单片机
28、仿真系统设计与仿真M. 北京航空航天 大学出版社 , 2005. 5 金炯泰 ,金奎焕 .如何使用 KEIL 编译器 M. 北京航空航天大学出版社 ,2002. 6 李光飞 .单片机课程设计指导 M. 北京:北京航空航天大学出版社,2007. 7 朱定华 .单片机原理及接口技术实验M. 北京:北方交通大学出版社 ,2002.11. 8 张迎新 .单片微型计算机原理、应用接口技术M. 北京 :国防工业出版 社,2004.1. 9 何利民 .单片机高级教程 M. 北京:航空航天大学出版社 ,2000.8. 10 谢维成 .单片机原理及应用与51 程序设计 M. 北京:清华大学出版社 ,2006.8
29、. 11 余永权 .单片机在控制系统中的应用M. 北京:电子工业出版社 ,2003.10. 12 李朝青 .单片机原理及接口技术 M. 北京:航空航天大学出版社 ,2000.3. 13 夏继强 .单片机实验与实践教程 M. 北京:航空航天大学出版社 ,2001.11. 14 侯玉宝 .基于 Proteus的 51 系列单片机的设计、调试与仿真M. 电子工业出 版社,2008.270288. 15 张友德 .单片微型机原理应用与实验M. 上海 :复旦大学出版社 ,2003.225 256. LED 电子钟设计 17 附录 1 程序 SEC EQU 30H ;当前秒 MIN EQU 31H HOU
30、R EQU 32H DAY EQU 33H MONTH EQU 34H WEEK2 EQU 35H YEAR EQU 36H A_BIT EQU 20H B_BIT EQU 21H C_BIT EQU 22H D_BIT EQU 23H E_BIT EQU 24H F_BIT EQU 25H AB_BIT EQU 26H ;秒/日 CD_BIT EQU 27H ;分/月 EF_BIT EQU 28H ;时/年 DS1302_ADDR EQU 5EH DS1302_DATA EQU 5FH T_RST BIT P3.2 ;实时时钟复位线引脚 T_CLK BIT P3.3 ;实时时钟时钟线引脚 T
31、_IO BIT P3.4 ;实时时钟数据线引脚 H_ADJ BIT P2.0 ;时/年调整 M_ADJ BIT P2.1 ;分/月调整 S_ADJ BIT P2.2 ;秒/日调整 DT_SET BIT P2.3 ;时间/日期选择 STR BIT P2.4 ;启动走时 ORG 00H AJMP MAIN ORG 30H MAIN: MOV SP,#64H MOV YEAR,#11H ;上电预置日期、时间 MOV MONTH,#12H ;2011 12 12 09:30:00 MOV DAY,#12H MOV HOUR,#09H MOV MIN,#30H MOV SEC,#00H MAIN1: L
32、CALL KEY JB F0,MAIN10 ;F0=1,开始走时。走时前写, 不读。走时后读, 不写。 LED 电子钟设计 18 LCALL WR1302 AJMP MAIN2 MAIN10: LCALL RD1302 MAIN2: JB 7FH,YMD MOV EF_BIT,HOUR MOV CD_BIT,MIN MOV AB_BIT,SEC AJMP MAIN20 YMD: MOV EF_BIT,YEAR MOV CD_BIT,MONTH MOV AB_BIT,DAY MAIN20: MOV A,EF_BIT MOV B,#10H DIV AB MOV E_BIT,B MOV F_BIT,
33、A MOV A,CD_BIT MOV B,#10H DIV AB MOV C_BIT,B MOV D_BIT,A MOV A,AB_BIT MOV B,#10H DIV AB MOV A_BIT,B MOV B_BIT,A LCALL DISP AJMP MAIN1 KEY: ACALL DISP ;按键子程序 KEY_SET: JB DT_SET,KEY_H ACALL DISP JNB DT_SET,$-2 CPL 7FH CPL P2.5 ;点亮日期设定 /显示 LED AJMP RT KEY_H: JB H_ADJ,KEY_M ACALL DISP JNB H_ADJ,$-2 AJMP
34、 H_ADD KEY_M: JB M_ADJ,KEY_S ACALL DISP JNB M_ADJ,$-2 AJMP M_ADD KEY_S: JB S_ADJ,KEY_ST LED 电子钟设计 19 ACALL DISP JNB S_ADJ,$-2 AJMP S_ADD KEY_ST: JB STR,RT ACALL DISP JNB STR,$-2 AJMP K_STR RT: RET H_ADD: JB 7FH,Y_ADD ;7FH 为日期 /时间切换键标志。1 为年月日。 MOV A,HOUR ADD A,#01H DA A CJNE A,#24H,H_ADD1 MOV A,#0 H_
35、ADD1: MOV HOUR,A AJMP RT Y_ADD: MOV A,YEAR ADD A,#01H DA A CJNE A,#20H,Y_ADD1 MOV A,#0 Y_ADD1: MOV YEAR,A AJMP RT M_ADD: JB 7FH,MO_ADD MOV A,MIN ADD A,#01H DA A CJNE A,#60H,M_ADD1 MOV A,#0 M_ADD1: MOV MIN,A AJMP RT MO_ADD: MOV A,MONTH ADD A,#01H DA A CJNE A,#13H,MO_ADD1 MOV A,#1 MO_ADD1: MOV MONTH,A
36、 AJMP RT S_ADD: JB 7FH,D_ADD MOV A,SEC ADD A,#01H DA A CJNE A,#60H,S_ADD1 S_ADD1: MOV SEC,A LED 电子钟设计 20 AJMP RT D_ADD: MOV A,DAY ADD A,#01H DA A CJNE A,#32H,D_ADD1 MOV A,#01H D_ADD1: MOV DAY,A AJMP RT K_STR: MOV DS1302_ADDR,#80H ;开始振荡 MOV DS1302_DATA,#00H LCALL WRITE MOV DS1302_ADDR,#8EH ;禁止写入 1302
37、 MOV DS1302_DATA,#80H LCALL WRITE SETB F0 AJMP RT WR1302: MOV DS1302_ADDR,#8EH MOV DS1302_DATA,#00H ;允许写 1302 LCALL WRITE MOV DS1302_ADDR,#80H MOV DS1302_DATA,#80H ;1302 停止振荡 LCALL WRITE MOV DS1302_ADDR,#8CH ;年写入 1302 MOV DS1302_DATA,YEAR LCALL WRITE MOV DS1302_ADDR,#88H ;月写入 1302 MOV DS1302_DATA,MO
38、NTH LCALL WRITE MOV DS1302_ADDR,#86H ;日写入 1302 MOV DS1302_DATA,DAY LCALL WRITE MOV DS1302_ADDR,#84H ;时写入 1302 MOV DS1302_DATA,HOUR LCALL WRITE MOV DS1302_ADDR,#82H ;分写入 1302 MOV DS1302_DATA,MIN LCALL WRITE MOV DS1302_ADDR,#82H ;秒写入 1302 MOV DS1302_DATA,MIN LCALL WRITE RET WRITE: CLR T_CLK LED 电子钟设计
39、21 NOP SETB T_RST NOP MOV A,DS1302_ADDR MOV R4,#8 WRITE1: RRC A NOP NOP CLR T_CLK NOP NOP NOP MOV T_IO,C NOP NOP NOP SETB T_CLK NOP NOP DJNZ R4,WRITE1 CLR T_CLK NOP MOV A,DS1302_DATA MOV R4,#8 WRITE2: RRC A NOP CLR T_CLK NOP NOP MOV T_IO,C NOP NOP NOP SETB T_CLK NOP NOP DJNZ R4,WRITE2 CLR T_RST RET
40、RD1302: MOV DS1302_ADDR,#8DH LCALL READ MOV YEAR,DS1302_DATA MOV DS1302_ADDR,#8BH LED 电子钟设计 22 LCALL READ MOV WEEK2,DS1302_DATA MOV DS1302_ADDR,#89H LCALL READ MOV MONTH,DS1302_DATA MOV DS1302_ADDR,#87H LCALL READ MOV DAY,DS1302_DATA MOV DS1302_ADDR,#85H LCALL READ MOV HOUR,DS1302_DATA MOV DS1302_AD
41、DR,#83H LCALL READ MOV MIN,DS1302_DATA MOV DS1302_ADDR,#81H LCALL READ MOV SEC,DS1302_DATA RET READ: CLR T_CLK NOP NOP SETB T_RST NOP MOV A,DS1302_ADDR MOV R4,#8 READ1: RRC A MOV T_IO,C NOP NOP NOP SETB T_CLK NOP NOP NOP CLR T_CLK NOP NOP DJNZ R4,READ1 MOV R4,#8 READ2: CLR T_CLK NOP NOP NOP MOV C,T_
42、IO LED 电子钟设计 23 NOP NOP NOP NOP NOP RRC A NOP NOP NOP NOP SETB T_CLK NOP DJNZ R4,READ2 MOV DS1302_DATA,A CLR T_RST RET DISP: MOV A,A_BIT MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.2 ACALL D1MS SETB P1.2 MOV A,B_BIT MOVC A,A+DPTR MOV P0,A CLR P1.3 ACALL D1MS SETB P1.3 MOV A,C_BIT MOVC A,A+DPTR MOV P
43、0,A SETB P0.7 CLR P1.4 ACALL D1MS ;显示 1ms SETB P1.4 MOV A,D_BIT MOVC A,A+DPTR MOV P0,A CLR P1.5 ACALL D1MS ;显示 1ms SETB P1.5 MOV A,E_BIT MOVC A,A+DPTR LED 电子钟设计 24 MOV P0,A SETB P0.7 CLR P1.6 ACALL D1MS ;显示 1ms SETB P1.6 MOV A,F_BIT MOVC A,A+DPTR MOV P0,A CLR P1.7 ACALL D1MS ;显示 1ms SETB P1.7 RET ;1
44、MS 延时(按 12MHZ 算) D1MS: MOV R5,#2 MOV R6,#250 DJNZ R6,$ DJNZ R5,$-4 RET TAB: ;共阴 DB 03FH ;0 DB 006H ;1 DB 05BH ;2 DB 04FH ;3 DB 066H ;4 DB 06DH ;5 DB 07DH ;6 DB 007H ;7 DB 07FH ;8 DB 06FH ;9 END LED 电子钟设计 25 附录 2 仿真效果图 X1 CRYSTAL C1 30pF C2 30pF R1 1k C3 10u 年 / 时 月 / 分 日 /秒 日 期 / 时 间 开 始 R2 300R D1
45、LED-RED RST 5 SCLK 7 I/O 6 X1 2 X2 3 VCC1 8 VCC2 1 U2 DS1302 X2 CRYSTAL 2 3 4 5 6 7 8 9 1 RP1 RESPACK-8 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51
链接地址:https://www.31doc.com/p-5197400.html