用c语言在51单片机上写一个电子时钟的代码
时间: 2023-03-31 15:04:46 浏览: 75
好的,我可以回答这个问题。以下是一个简单的电子时钟的代码示例:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = {x3f,x06,x5b,x4f,x66,x6d,x7d,x07,x7f,x6f};
void delay(uint z)
{
uint x,y;
for(x=z;x>;x--)
for(y=110;y>;y--);
}
void main()
{
uchar hour=12,minute=,second=; // 初始化时间为12:00:00
while(1)
{
P = table[hour/10]; // 显示小时的十位数
P2 = xfe; // 选择第一位数码管
delay(5);
P = table[hour%10]; // 显示小时的个位数
P2 = xfd; // 选择第二位数码管
delay(5);
P = x40; // 显示冒号
P2 = xfb; // 选择冒号所在的数码管
delay(5);
P = table[minute/10]; // 显示分钟的十位数
P2 = xf7; // 选择第三位数码管
delay(5);
P = table[minute%10]; // 显示分钟的个位数
P2 = xef; // 选择第四位数码管
delay(5);
P = x00; // 关闭数码管
P2 = xff; // 取消选择
delay(100); // 延时1秒
second++; // 秒数加1
if(second==60) // 如果秒数达到60
{
second=; // 秒数清零
minute++; // 分钟数加1
if(minute==60) // 如果分钟数达到60
{
minute=; // 分钟数清零
hour++; // 小时数加1
if(hour==24) // 如果小时数达到24
{
hour=; // 小时数清零
}
}
}
}
}
```
这个代码使用了一个数组来存储数码管显示的数字,然后通过循环显示小时、分钟和秒数。同时,还使用了一个延时函数来控制数码管的刷新速度。