基于AT89S52单片机的万年历设计 下载本文

内容发布更新时间 : 2024/5/20 20:41:13星期一 下面是文章的全部内容请认真阅读。

洛阳师范学院课程设计说明书(2015)

行输入,前8位指定访问地址,命令字装入寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。时钟脉冲的个数在单字节方式下为8+8(8位地址+8位输数据),在多字节方式下为8加最多可达248的数据。对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、始终突发寄存器及与RAM相关的寄存器等。始终突发寄存器可一次性顺利读写除充电寄存器以外的寄存器。日历、时间寄存器及控制字如表2-13所示。

表2-13 日历、时钟寄存器与控制字对照表 寄存器名称 秒寄存器 分寄存器 小时寄存器 日寄存器 月寄存器 星期寄存器 年寄存器 写寄存器 慢充电寄存器 时钟突发寄存器 7 1 1 1 1 1 1 1 1 1 1 1 6 RAM/CK 0 0 0 0 0 0 0 0 0 0 5 A4 0 0 0 0 0 0 0 0 0 1 4 A3 0 0 0 0 0 0 0 0 1 1 3 A2 0 0 0 0 1 1 1 1 0 1 2 A1 0 0 1 1 0 0 1 1 0 1 1 A0 0 1 0 1 0 1 0 1 0 1 0 RD/W 注:最后一位RD/W为“0”时表示进行写操作,为“1”是表示读操作

物理上,DS1302的通讯接口由3个口线组成,即RST,SCLK,I/O。其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。具体的读写时序参考下图,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般数据写入有效是在上升沿,读出有效数据是在下降沿(DS1302正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和

25

洛阳师范学院课程设计说明书(2015)

一个下降沿。

0R/W\\1A02A13A24A35A46RAMCK7101234567

图2.17 DS1302的命令结构

2.4.2时钟电路

此电路图中是以DS1302时钟芯片为主,单片机为辅来控制时钟。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。如图2.18所示。

图2.18 时钟电路

3系统软件的设计

3.1 主程序流程图

时间调整使用两个调整按键,一个作为控制位移,另一个作为加“1”调整,分别定义为控制按键,加“1”按键。在调整时间的过程中,需要调整的位与其他应该区别开来,所以增加了闪烁功能。主程序流程图如下图3.1所示。

26

洛阳师范学院课程设计说明书(2015)

开始 初始化 是否调整时间 否

图3.1基于AT89S52单片机的万年历主程序流程图

读时间和日期 分离日期/时间显示值 日期/时间显示子程序 日期、时间修改子程序 返回 3.2 系统子程序的设计

在系统中不仅包括主程序的设计为了在编写程序中方便,可以使用子程序,这

样只需要调用子程序就可以实现。 3.2.1 MAX7219送显示流程图

在系统一开始首先定义变量,定义好之后初始化各个变量的初始值,然后设置显示区的首地址,设置好之后开始传输数据,传送完之后就开始显示传输的数据值。如图3.2所示。

27

洛阳师范学院课程设计说明书(2015)

开始定义变量初始化设置显示区首址传送数据显示返回 图3.2 MAX7219的流程图

3.2.2 DS1302的流程图

DS1302可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,其中主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。首先对DS1302初始化,然后再读取DS1302中的时间,最后将时、分、秒显示出来,如此循环来计时,如图3.3所示。

28

洛阳师范学院课程设计说明书(2015)

开始DS1302初始化读取DS1302时间显示时、分、秒

图3.3 DS1302的流程图

3.2.3 18B20的流程图

DS1820通过一个单线接口发送或接收信息,因此在中央微处理器和DS1820之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。接通后首先采集温度,然后初始化,再启动温度转换,然后读取温度,最后输出返回,如图3.4所示。

29