51单片机点亮数码管0~99程序
时间: 2023-08-10 10:09:11 浏览: 144
好的,以下是51单片机点亮数码管0~99的程序:
```c
#include <reg52.h> // 包含51单片机的头文件
sbit LSA = P2^2; // 数码管A引脚
sbit LSB = P2^3; // 数码管B引脚
sbit LSC = P2^4; // 数码管C引脚
sbit LED = P2^0; // 数码管段选引脚
unsigned char code DisplayTable[] = { // 0~9、A~F的编码
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
void main() {
unsigned char num = 0; // 数码管显示的数字
unsigned char cnt = 0; // 计数器
while (1) { // 循环执行
LED = 0; // 共阳极数码管,低电平点亮
P0 = DisplayTable[num / 10]; // 显示十位数码
LSA = 0; LSB = 0; LSC = 0; // 第一个数码管
delay(1); // 延时一段时间
LED = 1; // 灭数码管
LED = 0; // 共阳极数码管,低电平点亮
P0 = DisplayTable[num % 10]; // 显示个位数码
LSA = 1; LSB = 0; LSC = 0; // 第二个数码管
delay(1); // 延时一段时间
LED = 1; // 灭数码管
cnt++; // 计数器加1
if (cnt == 100) { // 显示完0~99后,重新从0开始
cnt = 0;
num = 0;
} else {
num++; // 数码管显示的数字加1
}
}
}
void delay(unsigned int i) { // 延时函数
unsigned int j, k;
for (j = i; j > 0; j--) {
for (k = 114; k > 0; k--);
}
}
```
在这个程序中,我们使用P0口连接数码管的段选引脚,使用P2口连接数码管的位选引脚。程序中的`DisplayTable`数组包含了0~9、A~F的编码,`num`变量表示数码管显示的数字,`cnt`变量用于计数,`delay`函数用于延时。程序中先显示十位数码,再显示个位数码,最后将计数器加1,如果计数器达到100,则重新从0开始。
阅读全文