51单片机数码管显示0-99
时间: 2023-07-03 09:04:25 浏览: 213
51单片机通过控制数码管的引脚来实现数字的显示,我们可以通过以下步骤来显示0-99:
1.定义数码管引脚和数字表
使用宏定义或者常量来定义数码管引脚和数字表。例如:
```
#define DIGIT_PORT P1 // 数码管控制引脚所连接的端口
#define DIGIT_COM 0x00 // 共阴数码管控制信号
#define DIGIT_TAB {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90} // 数字表,从0到9的编码
```
2.设置数码管引脚为输出模式
将数码管控制引脚所连接的端口设为输出模式,例如:
```
DIGIT_PORT = 0x00; // 将数码管引脚设为输出模式
```
3.循环显示0-99
使用一个循环,每隔一段时间显示一个数字,例如:
```
int i;
for (i = 0; i < 100; i++) {
DIGIT_PORT = DIGIT_TAB[i / 10] | DIGIT_COM; // 显示十位数
delay_ms(10); // 延时10毫秒
DIGIT_PORT = DIGIT_TAB[i % 10] | DIGIT_COM; // 显示个位数
delay_ms(10); // 延时10毫秒
}
```
在以上代码中,每隔20毫秒显示一个数字。可以根据需要调整延时时间。
完整代码示例:
```
#include <reg52.h>
#define DIGIT_PORT P1
#define DIGIT_COM 0x00
#define DIGIT_TAB {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}
void delay_ms(int ms) {
int i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 110; j++);
}
}
void main() {
int i;
DIGIT_PORT = 0x00;
while (1) {
for (i = 0; i < 100; i++) {
DIGIT_PORT = DIGIT_TAB[i / 10] | DIGIT_COM;
delay_ms(10);
DIGIT_PORT = DIGIT_TAB[i % 10] | DIGIT_COM;
delay_ms(10);
}
}
}
```
阅读全文