51单片机8位数码管时钟程序
时间: 2023-08-05 11:21:07 浏览: 107
51单片机做八位数码管时钟
以下是一个基于51单片机的8位数码管时钟程序:
```c
#include<reg52.h> // 导入51单片机的头文件
#define uchar unsigned char // 定义无符号字符类型
sbit LSA=P2^2; // 定义数码管引脚
sbit LSB=P2^3;
sbit LSC=P2^4;
uchar code table[]={
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
}; // 定义数码管显示的数字
void delay(uchar i) // 毫秒级延时函数
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void dis(uchar i, uchar num) // 显示函数
{
LSA=table[num/1000];
LSB=table[num%1000/100];
LSC=table[num%100/10];
P0=table[num%10];
delay(i);
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<100;i++) // 显示秒钟
{
dis(5,i);
}
for(i=0;i<60;i++) // 显示分钟
{
dis(5,i);
}
for(i=0;i<60;i++) // 显示小时
{
dis(5,i);
}
}
}
```
这个程序中,我们使用了三个循环分别显示秒钟、分钟和小时,并在每个循环中调用 `dis()` 函数来显示数码管上的数字。`dis()` 函数中,我们根据要显示的数字分别设置了数码管引脚的值,并使用了毫秒级延时函数 `delay()` 来控制数码管上数字的显示时间。
阅读全文