c51单片机实现两个共阴数码管动态显示0~99程序
时间: 2024-02-05 12:14:23 浏览: 166
51单片机实现数码管循环显示00~99字样,到99后返回00重新显示,时间间隔为100ms。
5星 · 资源好评率100%
以下是基于C语言的c51单片机实现两个共阴数码管动态显示0~99的程序:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = { // 共阴数码管数字编码表
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f // 9
};
void delay(uint z) { // 延时函数
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() {
uchar cnt = 0; // 计数器
while(1) {
P0 = table[cnt / 10]; // 显示十位
P2 = 0xfe; // 打开十位数码管
delay(500); // 延时一段时间
P2 = 0xff; // 关闭数码管
P0 = table[cnt % 10]; // 显示个位
P2 = 0xfd; // 打开个位数码管
delay(500); // 延时一段时间
P2 = 0xff; // 关闭数码管
cnt++; // 计数器加1
if(cnt > 99) cnt = 0; // 计数器归零
}
}
```
该程序中使用了一个计数器来控制数码管的显示。首先在循环中将计数器的值分别除以10和取模,得到十位和个位数字,并通过共阴数码管数字编码表将数字转换为对应的编码。然后依次打开十位数码管和个位数码管,显示数字,并延时一段时间后关闭数码管。最后计数器加1,如果计数器的值大于99,则将计数器归零重新开始循环。
阅读全文