51单片机的数字钟设计的代码
时间: 2024-01-24 13:04:24 浏览: 71
以下是一个简单的51单片机数字时钟设计代码:
```
#include <reg51.h>
unsigned char code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管段码表
void delay(unsigned int i) //延时函数
{
while(i--);
}
void main()
{
unsigned char sec,min,hour; //秒、分、时
unsigned char i, j;
while(1)
{
for(hour=0;hour<24;hour++) //小时循环
{
for(min=0;min<60;min++) //分钟循环
{
for(sec=0;sec<60;sec++) //秒循环
{
for(j=0;j<50;j++) //循环50次
{
for(i=0;i<8;i++) //循环8次,显示8位LED数码管
{
switch(i) //选择数码管
{
case 0:P0=0xfe;break; //11011110B 第1个数码管
case 1:P0=0xfd;break; //11111101B 第2个数码管
case 2:P0=0xfb;break; //11111011B 第3个数码管
case 3:P0=0xf7;break; //11110111B 第4个数码管
case 4:P0=0xef;break; //11101111B 第5个数码管
case 5:P0=0xdf;break; //11011111B 第6个数码管
case 6:P0=0xbf;break; //10111111B 第7个数码管
case 7:P0=0x7f;break; //01111111B 第8个数码管
}
P2=table[sec%10]; //显示秒个位
delay(1000); //延时1秒
P2=table[sec/10]|0x80; //显示秒十位,最高位为1,表示显示冒号
delay(1000); //延时1秒
P2=table[min%10]; //显示分个位
delay(1000); //延时1秒
P2=table[min/10]; //显示分十位
delay(1000); //延时1秒
P2=table[hour%10]; //显示时个位
delay(1000); //延时1秒
P2=table[hour/10]|0x80; //显示时十位,最高位为1,表示显示冒号
delay(1000); //延时1秒
}
}
}
}
}
}
}
```
在该代码中,使用了一个数码管段码表来显示数字,循环显示了秒、分、时,并且在冒号的位置显示了一个点来分隔时间。
阅读全文