基于单片机设计的电子时钟,支持多位数码管显示时间与日期,具备闹钟功能,通过独立按键实现时间、日历及闹钟的设置与调节。
1、 编写软件程序
2、 Keil工程中的C语言代码实现
3、 数码管显示的电子时钟项目
4、 数码管显示时间与日期,支持时间及日历功能。
5、 时间可调节,支持定时闹钟,响铃持续一分钟。
6、 数组Mth存储各月份天数:首项为0,其余依次为1至12月的天数,分别为31、28、31、30、31、30、31、31、30、31、30、31。
7、 P3口第2位定义为KEY0按键输入。
8、 P3口第1位定义为按键加一功能。
9、 定义P3^0为按键2,用于设置闹钟功能。
10、 P2引脚2控制蜂鸣器发声。
11、 延时函数,用于程序中设定时间延迟。
12、 显示函数,传入三个无符号整数参数,分别代表秒、分、时,按格式输出时间信息。
13、 增加一个数值,功能为自增操作。
14、 设置闹钟功能,定时提醒用户。
15、 初始化函数,用于启动系统配置。
16、 获取当前系统时间的函数。
17、 计算日历日期的函数。
18、 {
19、 根据日历类型区分显示日期与时间。
20、 }
21、 }
22、 {
23、 }
24、 {
25、 {
26、 }
27、 }
28、 }
29、 初始化函数,用于设置初始状态。
30、 {
31、 设置定时器0为方式1工作模式。
32、 定时器高八位设置,计算得TH0为82,实现5毫秒定时功能。
33、 定时器低八位赋值为65536减50000后对256取模的结果。
34、 开启中断,设置IE寄存器为0x8f。
35、 启动定时器并设置工作模式为TCON等于0x15。
36、 }
37、 计算程序运行所消耗的时间。
38、 {
39、 当t等于10或20时,翻转tt的值,实现闪烁效果。
40、 {
41、 {
42、 {
43、 }
44、 }
45、 {
46、 {
47、 }
48、 }
49、 }
50、 }
51、 {
52、 }
53、 定时器0中断服务程序,用于处理定时器溢出触发的中断事件。
54、 {
55、 定时器高八位设置,5ms定时,计算式为(65536-50000)/256。
56、 定时器低八位设置为65536减50000后对256取余的结果。
57、 }
58、 {
59、 {
60、 }
61、 }
62、 }
63、 日历功能通过中断2实现,用于定时更新和显示日期时间信息。
64、 {
65、 {
66、 }
67、 }
68、 编写函数计算并生成日历信息
69、 {
70、 {
71、 {
72、 }
73、 }
74、 }
75、 自增函数,用于数值加一操作。
76、 {
77、 {
78、 {
79、 }
80、 {
81、 {
82、 {
83、 {
84、 }
85、 {
86、 {
87、 }
88、 }
89、 }
90、 }
91、 }
92、 设定闹钟时间,到达时发出提醒。
93、 {
94、 {
95、 {
96、 {
97、 {
98、 }
99、 }
100、 }
101、 }
102、 }
103、 引脚接线说明
104、 PO口连接8位共阴数码管。
105、 P2^0和P2^1分别控制数码管的段和位锁存信号。
106、 P3^0键用于显示闹钟功能
107、 P3^1用于时钟设置时的数值调节,仅支持单向递增。
108、 P3^2为设定键,用于调整闹钟、日期和时间。
109、 P3^3是日立设备查看时间转换的按键
110、 闹钟可选LED灯或蜂鸣器,提醒默认持续1分钟。
111、 软件模拟与实验结果对比分析
评论
更多评论