51单片机数码管显示0~999C语言程序代码
时间: 2024-12-30 16:39:39 浏览: 15
在51单片机上使用C语言控制数码管显示0到999,通常会涉及到7段数码管、共阳极或共阴极接法以及相应的驱动电路。这里给出一个基本的示例,假设我们使用4位BCD码(Binary Coded Decimal)来表示数字,共阳极接法:
```c
#include <reg52.h> // 如果使用8051系列
#define LED_PORT P0 // 数码管连接到P0口
#define SEGMENT0 0x3F
#define SEGMENT1 0x06
#define SEGMENT2 0x5B
#define SEGMENT3 0x4F
#define SEGMENT4 0x66
#define SEGMENT5 0x6D
#define SEGMENT6 0x7D
#define SEGMENT7 0x07
void display(int num) {
char digit[4] = { (num / 100) % 10, (num / 10) % 10, num % 10, 0 }; // 分割BCD码
for (int i = 0; i < 4; ++i) {
int segment = (digit[i] > 0) ? SEGMENT0 + (digit[i] * 7) : 0;
LED_PORT &= ~segment; // 清除对应数码管
LED_PORT |= segment << (4 - i); // 显示当前位
}
}
int main(void) {
TRISB = 0xFF; // 全部设置为输入
while (1) {
for (int i = 0; i <= 999; ++i) {
display(i);
delay_ms(100); // 每个数字停留一段时间
}
}
return 0;
}
```
阅读全文