单片机51数字钟C语言实验代码
时间: 2023-10-11 19:05:43 浏览: 154
基于51单片机的电子钟C语言程序
5星 · 资源好评率100%
以下是一个简单的基于单片机51的数字钟实验代码:
```c
#include <reg51.h>
unsigned char code digit[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
unsigned char hour = 0, minute = 0, second = 0;
void delay(unsigned int count) {
unsigned int i, j;
for (i = 0; i < count; i++) {
for (j = 0; j < 120; j++);
}
}
void display(unsigned char h, unsigned char m) {
P2 = digit[h / 10];
P1 = 0xFE; // 打开第一位数码管
delay(1);
P1 = 0xFF; // 关闭数码管
P2 = digit[h % 10];
P1 = 0xFD; // 打开第二位数码管
delay(1);
P1 = 0xFF; // 关闭数码管
P2 = digit[m / 10];
P1 = 0xFB; // 打开第三位数码管
delay(1);
P1 = 0xFF; // 关闭数码管
P2 = digit[m % 10];
P1 = 0xF7; // 打开第四位数码管
delay(1);
P1 = 0xFF; // 关闭数码管
}
void timer0(void) interrupt 1 {
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
second++;
if (second == 60) {
second = 0;
minute++;
if (minute == 60) {
minute = 0;
hour++;
if (hour == 24) {
hour = 0;
}
}
}
}
void main() {
TMOD = 0x01; // 设置定时器0为模式1
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
EA = 1; // 打开总中断
ET0 = 1; // 打开定时器0中断
TR0 = 1; // 启动定时器0
while (1) {
display(hour, minute);
}
}
```
这段代码使用了定时器0来实现时间的计时和显示。通过中断控制每秒钟更新一次时间,并且将小时和分钟分别显示在四个数码管上。在主函数中,使用一个无限循环来持续地进行时间的显示。请注意,这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展。
阅读全文