51单片机数码管电子时钟C语言代码
时间: 2023-10-21 09:05:40 浏览: 181
51单片机数码管电子时钟C程
以下是一个简单的基于51单片机的数码管电子时钟C语言代码示例:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar second = 0, minute = 0, hour = 0;
void delay(uint xms)
{
uint i, j;
for(i = xms; i > 0; i--)
for(j = 110; j > 0; j--);
}
void display(uchar num, uchar pos)
{
uchar i;
uchar temp = 0;
temp = num % 10;
P0 = 0x00;
P2 = 0x01 << pos;
P0 = table[temp];
delay(1);
temp = num / 10;
P0 = 0x00;
P2 = 0x01 << (pos + 1);
P0 = table[temp];
delay(1);
}
void timer0() 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;
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
display(hour, 0);
display(minute, 2);
display(second, 4);
}
}
```
这个代码采用了定时器中断的方式来实现时间的计数和更新,然后利用函数 `display()` 将当前时间显示在数码管上。需要注意的是,代码中的数码管显示方式可能需要根据使用的具体硬件进行调整。
阅读全文