×
单片机 > 单片机程序设计 > 详情

基于51单片机的日历时钟

发布时间:2020-08-21 发布时间:
|

1 引言

随着微电子技术与大规模集成电路的发展,单片机的串行通信应用正在不断的走向深入,由于它具有功能强、体积小、功耗低、价格便宜、工作可靠、使用方便等特点,广泛使用与我们生活的各个领域。单片机往往是作为一个核心部件来使用,再根据具体硬件结构,以及针对各种具体的要求使用相应的外部扩展,来实现具体的实际要求。


本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C52、时钟电路DS1302、显示电路、按键电路、和复合电路等部分构成,能实现时钟日历的显示的功能,能进行时、分、秒的显示。


2 硬件设计

2.1电路设计框图

2.2 电路原理图

2.3.1时钟电路

(1)DS1302引脚功能                     

DS1302引脚图

VCC1.VCC2:电源引脚。                        

其中VCC2接主电源,VCC1接备用电源。

GND:接地。输出数据。

X1、X2:32.768kHz。晶振引脚。


若采用外部振荡信号时。32768Hz的信号从 X1脚输入.x2脚悬空。  RST:片选端,高电平有效。RST端接通控制逻辑,当其为‘0”时 ,IO引脚变为高阻截状态,所有的数据传送中止,当其为‘1’时,允许数据传送。RST由‘0’至‘1’时。SCIK必须为“0”。

DS1302每次操作时,须把RST置为高电平。再把提供地址和命令信息的8位装入移位寄存器。数据在SCLK的上升沿串行输入。在开始 8个时钟周期把含有地址信息的命令字装入移位寄存器之后。紧随其后的时钟在读操作时输出数据。


2.3.2串口电路

该微处理器采用AT89C52单片机作为主控芯片,在电路中单片机的P1.2控制DS1302的复位输入端,P1.0与数据输入/输出引脚相连,P1.1用来作为DS1302的输入时钟SCLK控制端。为防止单片机复位时端口电平变化导致DS1302计时的不稳定,主电源(5 V)接 VCC2,备份电池采用可充电镉镍电池(3.6 V)接 VCC1。


2.3.3复位电路

单片机在开关机时都需要复位,以便中央处理器CPU及其他功能部件都RC构成处于一个确定的初始状态,并从这个状态开始工作。AT89C52的RST引脚是复位信号的输入端。复位信号高电平有效,持续时间需要24个时钟周期以上。

RC构成微分电路,在接电瞬间,产生一个微分脉冲,其宽度若大于2个机器周期,80C51型单片机将复位。为保证微分脉冲宽度足够大,RC时间常数应大于2个机器周期。一般取10uF电容、8.2K欧姆电阻。


2.3.4键盘设置电路

(1)独立式键盘

独立式键盘是指直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,当某个键闭合时,相应的I/O口线变为低电平,当CPU查询到为低电平的I/O口线时,就可以判别出与其对应的键处于释放状态。

(2)设置电路介绍

设置电路的功能主要是把时间和日期设置到当前的时间,可以在系统运行中进行。用4个独立式按键完成,分别接到单片机P3口的高4位。

4个按键的功能设计如下:

①第1个按钮表示是否进行设置,按下时表示设置,并且每按一次,在显示器上分别在年、月、日等日期时间上跳转,表示对相应的项进行更改;

②第2个按钮按下表示对第1个按钮选中的项进行加1操作;

③第3个按钮按下表示对第1个按钮选中的项进行减1操作;

④第4个按钮按下表示停止设置;


3 软件设计

程序流程图


主程序设计

从上面主程序看出,主程序的组成是通过分别调用各子程序组成总体系统功 能,能很直观的看出主程序所要完成的功能,首先是初始化各模块,之后调用键 盘完成时间的调整,调用日历子程序完成日历时钟的初始化和时间数据的读写,调用显示子程序显示数据,最后又转到键盘程序来回循环。


初始化部分主要有初始化定时器部分和和一些寄存器、标志位、初始化时间 等。

对定时器T0初始化时,首先置初值,CPU 开中断,定时器 T0 开中断,并且开始计数,而对定时器 T1 初始化时,首先置初值,定时器T1关中断,并且停止,只有收到命令时才能产生中断。


寄存器的初始化主要是初始化执行程序时用到的部分RAM空间,防止程序执行时带来混乱。

标志位初始化是对时间调整时 判断是调分还是调时等而专设的位 标志,初始化过程中标志位全部置0,即开始时是处于显示状态,而不是调整状态,这一点在程序中相当明了

初始化时间是开机时显示的时间,并通过调用日历时钟的写程序来完成时间的置初值。


4 调试结果与讨论

4.1硬件调试

4.1.1硬件调试方法

首先通过电路图和和万用表确认元件型号、规格、工作状况和安装情况是否正确,然后在通电的情况下,执行读写指令,对用户样机的存储器、I/O端口进行读写和逻辑检查等操作,用示波器等设备观察波形(如输出波形、读/写控制信号、地址数据波形和有关控制电平),通过波形的观察分析,发现和排除故障。


4.2软件调试

软件调试方法与选用的软件结构和程序设计技术有关。如果采用模块设计技术,则逐个模块调好以后,再进行系统程序总调试。在这里我们采用Protues仿真进行软件测试,将主程序的HEX文件下载到AT89C52中,点击开始仿真,结果如图所示;点击四个按键能实现上述功能

4.3调试结果分析与讨论

在经过简单的调试后,在液晶显示屏上显示了对应时间并且按键的对应功能都可实现。

实验结束后,我们对这次实验进行了反思和总结: 由于思路的不清晰以及相关知识的不充分,遇到了许多问题,在参考了文献和和向他人请教后,理清思路,最终完成了这次实验。通过这次实验认识到了自己的不足也收获了许多经验,获益匪浅。


5  主要参考文献

[1]田富洋,李晋阳,基于单片机的日历时钟设计[J].常州信息职业技术学院学报,2012( 3) : 32-35。

[2]李光飞,51系列单片机设计实例[M].北京: 北京航 空航天大学出版社,2003: 24-28。

[3] 孙佳玲.基于单片机的多功能数字时钟系统设计分析[J].吉林工 程技术师范学院学报,2009,(10):25-26.

[4] 楼然苗.单片机课程设计指导[M]. 北京:北京航空航天大学出版社,2007.7

[5] 朱思荣.51单片机实现公历与农历、星期的转换[Z].当当电子网

[6] 王越明.电子万年历的设计[J].黑龙江科技信息,2004年

[7]沈庆阳, 80C51单片机实践与应用[M].北京: 清华大 学出版社,2003: 81-86。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向