C51单片机代码实现数码管即使
时间: 2023-08-09 12:11:22 浏览: 90
以下是使用C语言实现数码管即时显示的代码:
```c
#include <reg51.h> // 引入单片机头文件
#define uchar unsigned char // 定义uchar类型为无符号字符类型
uchar code disCode[] = { // 数码管显示码表
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};
void delay(uchar t) { // 延时函数
uchar i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main() {
uchar i = 0, j = 0, k = 0, l = 0; // 初始化计数器
while (1) { // 循环执行
P0 = disCode[i]; // 显示第一位数码
P2 = 0xfe; // 选择第一位数码管
delay(1); // 延时
P2 = 0xff; // 关闭数码管
P0 = disCode[j]; // 显示第二位数码
P2 = 0xfd; // 选择第二位数码管
delay(1); // 延时
P2 = 0xff; // 关闭数码管
P0 = disCode[k]; // 显示第三位数码
P2 = 0xfb; // 选择第三位数码管
delay(1); // 延时
P2 = 0xff; // 关闭数码管
P0 = disCode[l]; // 显示第四位数码
P2 = 0xf7; // 选择第四位数码管
delay(1); // 延时
P2 = 0xff; // 关闭数码管
l++; // 计数器加1
if (l > 9) { // 判断是否超过9
l = 0; // 超过9则清零
k++; // k加1
if (k > 9) { // 判断是否超过9
k = 0; // 超过9则清零
j++; // j加1
if (j > 9) { // 判断是否超过9
j = 0; // 超过9则清零
i++; // i加1
if (i > 9) { // 判断是否超过9
i = 0; // 超过9则清零
}
}
}
}
}
}
```
该代码中使用了一个计数器,每隔一段时间更新计数器的值,并将计数器中的数值转换成数码管的显示码表中对应的数字进行显示。由于该代码使用了循环实现,因此数码管的显示会不断更新,从而实现即时显示的效果。
阅读全文