51单片机数码管显示0~99
时间: 2023-08-14 11:51:32 浏览: 267
对于51单片机,你可以使用数码管来显示0到99的数字。以下是一个简单的示例代码:
```c
#include <reg51.h>
// 数码管段选位定义
sbit segA = P2^0;
sbit segB = P2^1;
sbit segC = P2^2;
sbit segD = P2^3;
sbit segE = P2^4;
sbit segF = P2^5;
sbit segG = P2^6;
sbit segDP = P2^7;
// 数码管位选位定义
sbit digit1 = P3^0;
sbit digit2 = P3^1;
// 数码管显示的数字数组
unsigned char digitCode[10] = {
0xC0, // 显示0
0xF9, // 显示1
0xA4, // 显示2
0xB0, // 显示3
0x99, // 显示4
0x92, // 显示5
0x82, // 显示6
0xF8, // 显示7
0x80, // 显示8
0x90 // 显示9
};
void delay(unsigned int time) {
unsigned int i, j;
for (i = time; i > 0; i--)
for (j = 110; j > 0; j--);
}
void displayNumber(unsigned char num) {
unsigned char num1, num2;
num1 = num / 10; // 十位数
num2 = num % 10; // 个位数
digit1 = 1; // 打开第一个数码管
P1 = digitCode[num1]; // 显示十位数
delay(1);
digit1 = 0; // 关闭第一个数码管
digit2 = 1; // 打开第二个数码管
P1 = digitCode[num2]; // 显示个位数
delay(1);
digit2 = 0; // 关闭第二个数码管
}
void main() {
unsigned char i;
while (1) {
for (i = 0; i < 100; i++) {
displayNumber(i);
delay(1000);
}
}
}
```
这段代码使用了P1口来控制数码管的段选,P2口来控制数码管的位选。通过函数`displayNumber()`来显示数字,函数内部将数字拆分为十位数和个位数,并分别显示在两个数码管上。`delay()`函数用于延时。在`main()`函数中,通过循环显示0到99的数字。
请注意,具体的数码管连接方式可能会有所不同,你需要根据你所使用的具体数码管进行相应的引脚定义和连接。