C51数码管可调倒计时时钟
时间: 2023-11-27 17:05:15 浏览: 86
基于51单片机的数码管倒计时可以设置时间
5星 · 资源好评率100%
C51是一种基于8051微控制器的单片机,可以用来实现各种应用,包括数码管可调倒计时时钟。下面是一个简单的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;
uchar minute = 0;
uchar hour = 0;
void delay(uint t)
{
uint i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
void display(uchar num, uchar pos)
{
P0 = 0xff;
P2 = pos;
P0 = table[num];
}
void main()
{
TMOD = 0x01;
TH0 = 0x4c;
TL0 = 0x00;
TR0 = 1;
ET0 = 1;
EA = 1;
while (1)
{
display(hour / 10, 0x80);
delay(5);
display(hour % 10, 0x40);
delay(5);
display(minute / 10, 0x20);
delay(5);
display(minute % 10, 0x10);
delay(5);
display(second / 10, 0x08);
delay(5);
display(second % 10, 0x04);
delay(5);
}
}
void timer0() interrupt 1
{
TH0 = 0x4c;
TL0 = 0x00;
second++;
if (second == 60)
{
second = 0;
minute++;
if (minute == 60)
{
minute = 0;
hour++;
if (hour == 24)
{
hour = 0; }
}
}
}
```
这个程序使用了8051的定时器0来实现时间的计数,每秒钟定时器0会产生一个中断,然后更新时间。程序中的display函数用来在数码管上显示时间,delay函数用来延时,以便让人眼能够看到数码管上的数字变化。在主函数中,程序不断地调用display函数来显示时间。
阅读全文