单片机模拟电子时钟设计
单片机课程设计--智能电子钟的设计

目录1引言 (1)1.1设计内容和要 (1)1.2 工作原理 (2)2总体设计 (2)2.1 方案设计 (2)2.2 系统框图 (2)2.3 核心芯片简介 (3)2.3.1 DS1302简介 (3)2.3.2 AT89C51简介 (3)3 智能电子钟软硬件电路的设计 (4)3.1 硬件设计 (4)3.1.1 复位电路设计 (4)3.1.2 DS1302与单片机的接口设计 (5)3.1.3 LED显示设计 (5)3.1.4 电源设计 (6)3.1.5 按键开关去抖设计 (6)3.1.6 时钟电路的设计 (7)3.1.7 电路总原理图设计 (8)3.2 软件设计 (8)3.2.1 流程图 (8)4protues仿真与调试 (11)4.1 电路的仿真 (11)4.2软件调试 (11)结论……………………………………………………………………………………………错误!未定义书签。
参考文献 (14)附录 (15)源程序 (15)1 引言电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。
另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。
本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。
本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。
本设计应用AT89C51芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。
这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。
该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。
1.1设计内容和要求以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、天、周、月、年。
基于单片机液晶定时闹钟的设计方案

基于单片机液晶定时闹钟的设计方案1 设计方案论证1.1 应用近几年,单片机在各个领域得到广泛的应用。
从工业到人们的日常生活,大部分的科技产品都是通过单片机来控制。
在它问世之前,自动控制设备不能被广泛的应用,这是因为控制设备的体积庞大,耗电量大,价格昂贵。
在第一台微处理器成功研制不久,第一个单片机就问世了。
因为其小巧的体积,低功耗,以及高效的性能,单片机受到了大家的欢迎。
今天,单片机成为了解决低复杂度,中等复杂度控制问题的传统选择。
我们选择的方法是单片机开发设计使用的传统方法,通过本次设计,可以了解整个单片机开发的流程。
利用STC89C52单片机结合七段显示器完成的简易的定时闹铃时钟,干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、闹钟电路组成。
秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。
译码显示电路将“时”、“分”、“秒”计数器的输出送到七段显示译码驱动器译码驱动,通过LCD液晶显示屏显示出来。
闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。
通过设置现在的时间及显示闹铃设置时间,并在定时时间发出一阵声响,可以进—步扩充控制电器的启停等。
1.2 方案选择用单片机来设计数字钟,软件实现各种功能比较方便,但因软件的执行需要一定的时间,所以就会出现误差。
因此我进一步努力,通过对比实际的时钟,查找出误差的来源,并作出调整,使得误差尽可能减小,达到实际数字钟系统的允许误差范围。
在程序设计中,采用模块化的程序设计思想,对整个设计划分了若干个模块,先对各个模块分别进行设计,然后整合各个模块,进行仿真模拟,对出现的错误进行分析,然后找出问题的所在,改进程序,再仿真模拟,观察结果、分析结果,直至最终结果满足设置要求。
基于单片机的多功能数字钟60秒LED旋转电子钟

第1节引言1.1 电子钟概述目前市场上提供的无论是机械钟还是石英钟在晚上无照明的情况下都是不可见的。
要知道当前的时间,必须先开灯,故较为不便。
现在市场上也出现了一些电子钟,它以六只LED数码管来显示时分秒,违背了人们指针式的传统习惯与理念,而且这类电子钟一般是采用大型显示器件,适用于银行、车站等公共场所,且外观设计欠美观,很少进入百姓家庭。
此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:时间误差。
针对以上存在的问题,我们设计了一款采用LED显示器件显示的电子时钟,解决了时钟存在的误差问题,并能在夜间不必其它照明就能看到时间,且以60只发光管实现秒显示,接近于传统的秒针来显示秒的形式,用户容易接受,而且美观大方。
另加七只装饰用的LED灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。
1.2 设计任务本次设计通过对一个实现定时、双时钟显示、闹钟、温度等功能的时间系统的设计,其中结合了数据转换显示、数码管显示、动态扫描、单片机定时中断等技术。
系统由AT89C2051、LED数码管、按键、三极管、两片CD4017BE、CD4069BE、DS18B20、电阻等组成。
能实现时钟时、分、秒的显示。
也具有温度显示、时间设置、闹铃开和关设置、制式切换。
文章后附有电路图、程序清单。
1.3 系统主要功能电子钟的外观如图1所示。
周边60只发光管顺时旋转来显示秒,中间四只LED 数码管用于显示时间,中下方的七只LED灯顺时旋转,供装饰用。
其主要功能有:①整点报时;②四只LED数码管显示当前时分;③每隔一秒钟周边的60只LED发光管旋转一格;④当发生停电事件时,由后备电池供电,系统进入低功耗状态,所有显示部件停止显示,这样即延长了电池的寿命,同时又保证CPU继续计数,不至于因停电而时钟停止运行。
⑤当恢复供电后,系统自动恢复工作状态,不影响计时。
图一第2节电子钟硬件设计2.1系统的硬件构成及功能电子钟的原理框图如图2所示。
基于单片机的多功能电子万年历设计

引言随着生活节奏的日益加快,人们的时间观也越来越重,同时对电子钟表、日历的需求也随之提高。
因此,研究实用电子时钟及其扩展应用,有着非常现实的意义,具有很大的实用价值。
本系统程序由主程序、中断服务函数和多个子函数构成。
主函数主要完成各子函数和中断函数的初始化。
定时中断函数主要完成时钟芯片的定时扫描及键盘扫描。
时钟芯片的读写函数主要是将时间、日历信息读出来,并把要修改具体值写入时钟芯片内部。
系统的硬件设计与电路原理电路设计框图系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能、低功耗、能在3V的超低压工作。
时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒,具有使用寿命长、精度高和低功耗等特点,同时具有掉电自动保存功能。
主控制模块单片机主控制模块的设计AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
时钟电路模块时钟电路模块的设计DS1302的引脚排列如图3所示,其中Vcc1为后备电源,Vcc2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电;当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768KHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]
![毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]](https://img.taocdn.com/s3/m/9ad55f3e0508763230121257.png)
程序仿真等全套设计,联系153893706第1章绪论二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。
第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。
第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。
第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步……我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。
商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。
本设计为软件,硬件相结合的一组设计。
在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。
基本的要了解一些主要器件的基本功能和作用。
除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。
AT89C52是由ATMEL公司推出的一种小型单片机。
95年出现在中国市场。
其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。
本文介绍了基于AT89C52单片机设计的电子万年历。
选题背景及研究的目的与意义设计的目的电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。
基于51单片机的电子时钟

1、电子闹钟的硬件系统框架:设计出电子闹钟的基本整体框架。
2、电子闹钟的电源设计:采用交直流供电电源。
电子钟一般采用数码管等显示介质,因而必须以交流供电为主,以直流电源为后备辅助电源。
3、电子闹钟的主机电路设计:主要有1)系统时钟电路设计:对时间要求不是很高,只要能使系统可靠起振并稳定运行就行。
2)系统复位电路设计:本系统采用的是RC复位方式3)按键与按钮电路设计:按键与按钮电路设计中关键要考虑的就是按键的去抖动问题。
本系统采用软件去抖。
考虑到对时和设定闹铃时间操作的使用频率不高,为了精简系统和降低成本,本系统只设置两个按键。
a)SET键,对应系统的不同工作状态,具有3个功能:在复位后的待机状态下,用于启动设定时间参数(对时或定闹);在设定时间参数状态而且不是设定最低位(即分个位)的状态下,用于结束当前位的设定,当前设定位下移;在设定最低位(分个位)的状态下,用于结束本次时间设定。
b)+1键,用于对当前设定位进行加1操作。
4)闹铃声光指示电路设计:本系统采用声音指示,关键元件是蜂鸣器。
4、电子闹钟的显示电路设计:设计一个由LED数码管组成的显示电路,显示采用共阳极数码管,其目的是为了简化限流电路的设计和实现亮度可调的要求。
一功能模、设计指标:1. 显示时、分、秒。
2. 可以24小时制或12小时制。
3. 具有校时功能,可以对小时和分单独校时,对分校时的时候,停止分向小时进位。
校时时钟源可以手动输入或借用电路中的时钟。
4. 具有正点报时功能,正点前10秒开始,蜂鸣器1秒响1秒停地响5次。
5. 为了保证计时准确、稳定,由晶体振荡器提供标准时间的基准信号。
二、设计要求:1. 画出总体设计框图,以说明数字钟由哪些相对独立的块组成,标出各个模块之间互相联系,时钟信号传输路径、方向和频率变化。
并以文字对原理作辅助说明。
2. 设计各个功能模块的电路图,加上原理说明。
3. 选择合适的元器件,在面包上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在充分电路正确性同时,输入信号和输出方式要便于电路的测试和故障排除。
基于单片机的数字钟设计

(注意:20和40引脚分别接地和VCC),如图12所示。
图9 时间显示流程图
5.
5
Keil C51集成开发环境是基于80C51内核的微处理器软件平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立、管理、程序编译、链接、目标代码生成、软硬件仿真等完整的开发流程[12]。尤其是C编译工具在产生代码的准确性和效率方面达到了较高水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。Keil C51集成开发环境的主要功能有以下几点[13]:
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用于单片机的数字钟设计,采用AT89C51单片机作为系统的主控芯片,外接LED显示电路,按键电路,晶振电路,复位电路模块构成一个简单的数字钟。通过按键电路能对时、分、秒分别进行设置和实时调整,并将结果显示在数码管上。
图3 键盘控制电路
3.3.2
晶振的全称叫晶体振荡器,它在单片机系统里作用非常大,主要作用是产生单片机所需的时钟频率,单片机执行程序所需的时间完全取决于单片机晶振所提供的时钟频率,时钟频率越高,那么单片机运行速度就越快[8]。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。晶振电路如图4所示。
基于单片机的数字电子钟的设计与制作

第26卷 第5期大庆师范学院学报V o.l26 N o.5 2006年10月J OURNA L O F DAQ ING NORM AL U N I V ERSITY O ctober,2006基于单片机的数字电子钟的设计与制作卢超(陕西理工学院物理系,陕西汉中723000)摘 要:该电子钟使用12MH Z晶振与单片机AT89C51相连接,通过软件编程的方法实现了以24小时为一个周期同时显示小时,分钟和秒的要求,并在计时过程中具有报时功能,当时间到达整点进行蜂鸣报时。
该电子钟设有三个按键:S1,S2和S3键,使之具备了校时、定时功能。
关键词:电子钟;51系列单片机;AT89C51;晶振作者简介:卢超(1979-),男,陕西汉中人,陕西理工学院物理系教师,主要从事电子技术、测控方面的研究。
中图分类号:TP271 文献标识码:A 文章编号:1006-2165(2006)05-0048-06 收稿日期:2006-07-15数字电子钟设计与制作可采用数字电路实现,也可以采用单片机来完成。
若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。
若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机AT89C51,它是低功耗、高性能的C MOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。
1硬件电路的设计该电子钟是以单片机AT89C51为核心来完成的,在硬件电路中采用P0口作为6位LED数码管的驱动接口,这是由于P0口输出驱动电路工作处于开漏状态,它的驱动能力强,故只需外接上拉电阻便可以把LED数码管点亮。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计课题:单片机模拟电子时钟设计学院:自动化学院专业: 07电气工程及其自动化(低压电力智能控制方向)姓名:谭善文学号:2007104743002指导老师:张华目录一、前言 (3)二、设计目的 (3)三、设计任务与要求 (3)四、设计原理 (3)五、总体设计方案 (4)六、小结与展望 (21)七、致谢 (22)八、主要参考文献 (22)(3)、晶振 (5)(4)、LED (5)(5)、复位 (6)(6)、蜂鸣器 (6)(7)、按键 (6)(8)、串行口 (7)(9)、单片机 (7)(10)、数码管 (8)2、程序编写 (10)六、小结与展望 (21)七、致谢 (22)八、主要参考文献 (22)一、前言在当今的工作和生活环境中,有越来越多的单片机在为人们服务,例如电视遥控、手机、洗衣机、空调等,单片机几乎无所不在,学习单片微型计算机这门课程,就是为了对单片微型计算机有进一步感性的认识,了解、掌握、应用,甚至设计开发它。
让我们能综合运用单片机的软、硬件技术分析实际问题,为工业生产、科学研究和实验设备等领域的单片机应用和开发打下良好的基础。
二、设计目的a)通过《单片微型计算机原理与接口技术教程》了解单片微型计算机的发展;b)根据课程设计的要求,学会用汇编语言设计程序,学会应用程序设计调试软件;c)通过调试程序设计模块,掌握单片微型计算机的结构原理,了解程序设计的编程思想;d)通过软件调试熟悉使用单片机指令系统,掌握汇编语言程序设计方法及编程技巧,掌握子程序的设计与使用,熟悉中断服务程序的设计及调用过程。
三、设计任务与要求任务:利用单片机定时功能实现电子时钟的计时要求:1.设计单片机电子时钟设计控制方案,功能设计;2.详细描述实现需要的硬件,效果等;3.编写汇编语言程序设计,在KEIL仿真实现调试程序;四、设计原理单片机可以利用定时功能实现电子时钟的计时。
设计时利用单片机的定时器作为时钟的基准,利用几个单元作为时、分、秒的累计单元,秒到时,秒单元加1,直到59s时,分单元加1,依此类推,可完成年、月、日、时、分、秒的计时工作。
五、总体设计方案1、硬件电路图(1)总电路图图1 总硬件电路原理图(2)电源图2 电源部分原理图该电源接上USB 口后可输出一个+5V 的直流电源。
图中C1为电解电容,有储能缓冲作用。
C2为一个滤波电容。
而R1则为保护电阻,有限流作用。
D1为电源工作指示灯。
(3)晶振20pF晶振Y111.0592MHz图3 晶振部分原理图该振荡电路可产生11.0952MHZ 的频率。
XTAL1为输入引脚,XTAL2为输出引脚。
Y1为振荡器,C15、C16为微调电容,它们之间形成反馈电路,振荡器即能工作。
(4)LEDLED图4 LED接线图该部分主要用来记秒,即每隔一秒,LED指示灯就闪烁一次。
(5)复位图5 复位电路原理图开关断开时,复位键RST为低电平,不起作用;当按下按键时,RST变为高电平,将起清零作用。
(6)蜂鸣器图6 蜂鸣器电路原理图访电路在T1口的驱动后,经过Q1的放大,作用到BZ1上发出声音,在设计中将用作整点报时。
(7)按键按键图7 按键电路原理图这两个按键在设计中分别用来调整时间和切换显示内容。
(8)串行口串行口图8 串行口电路原理图该电路主要由MAX232芯片和它的外围电路组成,可通过它与电脑的串口连接,将程序下载到单片机里。
(9)单片机图9 单片机引脚图整个电路的主控芯片。
(10)数码管图10 数码管显示电路原理图该电路通过了二片74HC595芯片组成的电路去驱动4位的共阴数码管显示时间。
74HC595是一款具有8位移位寄存器和一个存储器,三态输出功能的驱动芯片。
移位寄存器和存储器分别具有独立的时钟信号。
数据在SHCP的上升沿输入,在STCP的上升沿进入到存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(DS),和一个串行输出(Q7),和一个异步的低电平复位(MR),存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
它和74HC164的功能类似,都是串入并出的IO接口,将串行的数据,转为并行的输出,这样可以节约MCU的IO口资源。
主要应用在多路LED指示或多位数码管驱动方面。
但与74HC164比,595主要还有以下更优越的功能:1.支持3态输出,当第13脚为高电平时,595无输出;2.具有数据锁存功能,这样不会影响移位时的瞬时输出;3.具有数据输出功能,可以更方便的进行595级联其引脚图和引脚功能如下:图11 74HC595引脚图1. 第1脚:数据输出端QB2. 第2脚:数据输出端QC3. 第3脚:数据输出端QD4. 第4脚:数据输出端QE5. 第5脚:数据输出端QF6. 第6脚:数据输出端QG7. 第7脚:数据输出端QH8. 第8脚:电源GND9. 第9脚:串行数据输入端SQH,时钟下降沿数据移出10. 第10脚:复位引脚RESET11. 第11脚:数据移位时钟输入端SCK12. 第12脚:数据锁存信号输入端RCK13. 第13脚:数据输出使能端/OE,低电平有效14. 第14脚:串行数据输入端A,时钟上升沿数据移入15. 第15脚:数据输出端QA16. 第16脚:电源VDD2、程序编写汇编源程序如下:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 电子时钟程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SPK EQU P3.5 ;P3.5端口定义为喇叭org 0x0000 ;程序执行开始地址ajmp main ;跳到标号main执行org 0x0003 ;外中断0中断程序入口;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1秒闪烁子程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;org 0x000b ;定时器T0中断程序入口clr tf0mov TH0,#0x4cmov TL0,#0x00djnz r4,ret1 ;50*20(0x14)=1000ms=1Smov r4,#0x14clr p1.0 ;每隔1秒指示灯闪烁一次clr p1.1push accsetb rs0clr rs1mov r0,#0x20; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 秒计时控制子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mov a,@r0add a,#0x01da a ;二-十进制调整指令mov @r0,acjne a,#0x60,t0lp1 ;60秒到后分钟加1,秒钟清零mov a,#0x00mov @r0,ainc r0; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 分计时控制子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mov a,@r0add a,#0x01da amov @r0,acjne a,#0x60,t0lp1 ;60分到后时钟加1,时钟清零mov a,#0x00lcall BZ ;整点到后喇叭报时mov @r0,ainc r0; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 小时计时控制子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mov a,@r0add a,#0x01da amov @r0,acjne a,#0x24,t0lp1 ;24小时到后天加1,时钟清零mov a,#0x00mov @r0,ainc r0; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 天计时控制子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mov a,@r0add a,#0x01da amov @r0,acjne a,#0x31,t0lp1 ;30天过后月加1,天归1mov a,#0x01mov @r0,ainc r0; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 月计时控制子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mov a,@r0add a,#0x01da amov @r0,acjne a,#0x13,t0lp1 ;12个月过后月归1mov a,#0x01mov @r0,a;t0lp1:noppop accclr rs0clr rs1ret1:cjne r4,#0x0a,ret2jc ret2 ;point judgesetb p1.0 ;point offsetb p1.1ret2:reti; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 电子时钟初始化程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;main: mov 0x20,#0x15 ;秒初始化mov 0x21,#0x59 ;分初始化mov 0x22,#0x23 ;时初始化mov 0x23,#0x30 ;天初始化mov 0x24,#0x12 ;月份初始化;clr p1.3clr p1.4clr p1.5;acall T0initmov sp,#0x0f; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 显示时分的子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;main1:jb p3.2,hmlpacall delayjb p3.2,hmlpmov r0,#0x21acall displayajmp main1; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 显示月份与日数的子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;hmlp:mov r0,#0x1facall displayajmp main1; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 50ms延时子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T0init: mov TMOD,#0x01mov TH0,#0x4c ;50ms延时初值设置mov TL0,#0x00setb et0setb easetb tr0mov r4,#0x14ret; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 显示子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;display:mov r1,#0x01mov r5,#0x04 ;4bit or 8bitmov dptr,#0x0300loop: mov r7,#0x08mov a,r1lp2: rlc asetb p1.5jc lp1clr p1.5lp1: setb p1.4clr p1.4djnz r7,lp2;mov a,@r0anl a,#0x0fmovc a,@a+dptrcpl amov r7,#0x08lp4: rlc asetb p1.5jc lp3clr p1.5lp3: setb p1.4clr p1.4djnz r7,lp4;setb p1.3clr p1.3;acall delay;mov a,r1rl amov r1,a;mov r7,#0x08mov a,r1lp6: rlc asetb p1.5jc lp5clr p1.5lp5: setb p1.4clr p1.4djnz r7,lp6;mov a,@r0anl a,#0x0f0swap amovc a,@a+dptrcpl amov r7,#0x08 lp8: rlc asetb p1.5jc lp7clr p1.5lp7: setb p1.4clr p1.4djnz r7,lp8;setb p1.3clr p1.3;acall delay;mov a,r1rl amov r1,ainc r0djnz r5,loopret; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 整点报时子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BZ: MOV R6, #200B1: CPL SPKACALL DELAY1DJNZ R6,B1 ;喇叭响的时间为:R6×R5=0.5sRET; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 延时子程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay: mov r6,#0x00del1: djnz r6,del1ret;DELAY1:D1: MOV R5,#250 ;延迟时间为:R5D2: DJNZ R5,D2RETSTART1: LCALL display ;调用显示子程序JB p1.2,SETMM1 ;P1.2口为0时转时间调整程序 SJMP START1 ;P1.2口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 时钟调整程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;当调时按键按下时进入此程序SETMM: cLR ET0 ;关定时器T0中断CLR TR0 ;关闭定时器T0mov TH0,#0x4cmov TL0,#0x00djnz r4,dede: lcall ret1mov r4,#0x14 ;调用1秒延时程序JB p1.2,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电) MOV R2,#06H ;进入调时状态,赋闪烁定时初值 SETB ET1 ;允许T1中断SETB TR1 ;开启定时器T1SET2: JNB p1.2,SET1 ;P1.2口为0(键未释放),等待SETB 00H ;键释放,分调整闪烁标志置1 SET4: JB p1.2,SET3 ;等待键按下mov TH0,#0x4cmov TL0,#0x00djnz r4,de1de1: lcall ret1mov r4,#0x0A ;有键按下,延时0.5秒JNB p1.2,SETHH ;按下时间大于0.5秒转调小时状态 MOV R0,#77H ;按下时间小于0.5秒加1分钟操作LCALL ADD1 ;调用加1子程序MOV A,R3 ;取调整单元数据CLR C ;清进位标志CJNE A,#60H,HHH ;调整单元数据与60比较HHH: JC SET4 ;调整单元数据小于60转SET4循环LCALL CLR0 ;调整单元数据大于或等于60时清0CLR C ;清进位标志AJMP SET4 ;跳转到SET4循环;CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。