51单片机数码管显示0~99实验详细代码代码
时间: 2024-10-11 18:15:03 浏览: 47
51单片机通过数码管驱动电路控制数码管显示数字的过程涉及到硬件连接和软件编程两部分。这里提供一个简单的8位单片机如ATmega8/Atmel AVR系列的数码管显示实验代码示例,我们假设已连接好7段共阴极LED数码管。
```c
#include <reg52.h> // 对应于AVR的头文件
// 定义数码管段码字典
char segCode[16] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F, // 9
// A - D 略...
};
void displayDigit(int digit) {
char data;
switch (digit) {
case 0:
data = segCode[0];
break;
case 1:
data = segCode[1];
break;
// ... 依次处理其他数字
default:
data = segCode[digit - '0'];
}
P0 = ~data; // 将数据反向(共阴极数码管)
}
int main() {
TRISB = 0xFF; // 设置PB口所有端口为输入
while(1) {
int num = 12; // 需要显示的数字,这里是固定的
for(int i = 0; i <= 1; i++) { // 分两位显示,假设最多显示两位
displayDigit(num % 10);
num /= 10;
delay_ms(50); // 每位之间有延迟
}
}
}
```
阅读全文