做了个比较叼的,数码管显示出年月日时分秒星期以及阴历的月份和日期。
按键可以修改年月日时分秒,星期几是根据年月日计算的,阴历也是计算出来的,不用按键修改。
文章目录
实验报告:基于51单片机的数码管万年历电子时钟
一、实验背景
本实验旨在利用51单片机实现一个具备电子时钟功能的数码管万年历。系统能够显示公历、农历和星期,并通过按键实现时间和日期的调整。本实验涉及的主要芯片包括DS1302时钟芯片和74LS138译码器。
二、实验器件
- 51单片机(型号:STC89C52)
-
- DS1302时钟芯片
-
- 74LS138译码器
-
- 数码管
-
- 按键
-
- 电源模块
三、硬件连接
- DS1302连接:
-
- RST 接 P3.2
-
- SCLK 接 P3.3
-
- DATA 接 P3.4
- 74LS138连接:
-
- A 接 P1.0
-
- B 接 P1.1
-
- C 接 P1.2
-
- G1/G2/G3分别接P2.0/P2.1/P2.2
- 按键连接:
-
- 按键1 接 P3.5
-
- 按键2 接 P3.6
-
- 按键3 接 P3.7
-
- 按键4 接 P3.1
四、系统功能设计
1. 定时器初始化
定时器1被初始化为1ms的定时中断,用于驱动数码管显示。定时器中断服务程序中,每次中断都会选择下一个数码管并刷新显示内容。
2. 按键驱动
通过扫描按键的电平变化检测按键按下情况,使用简单的延时去抖动。按键检测函数返回按键编号。
3. 74LS138译码器
使用74LS138译码器选择数码管,通过三位二进制输入控制选择一位数码管。
4. DS1302时钟芯片
DS1302用于存储和读取时间信息,通过SPI协议进行通信。初始化和读取时间的函数如下:
5. 时间显示
通过读取DS1302中的时间数据,并转换为数码管可显示的格式,按一定的刷新频率在数码管上显示时间信息。
6. 按键设置
通过按键调整时间和日期,并更新到DS1302中保存。
五、实验总结
本实验通过51单片机驱动数码管实现了一个具备显示公历、农历和星期功能的万年历电子时钟。系统可以通过按键调整时间和日期,并实时更新显示。DS1302时钟芯片提供了稳定的时间数据存储和读取功能,74LS138译码器则简化了数码管的驱动设计。本实验验证了硬件与软件结合设计电子时钟的可行性,具有一定的参考价值。