单片机四位共阴数码管显示0到999代码
时间: 2024-06-12 22:09:34 浏览: 13
以下是单片机四位共阴数码管显示0到999的代码:
```c
#include<reg52.h> // 引入 8052 单片机头文件
// 定义数码管段码
unsigned char code ledChar[] = {
0x3f, // '0'
0x06, // '1'
0x5b, // '2'
0x4f, // '3'
0x66, // '4'
0x6d, // '5'
0x7d, // '6'
0x07, // '7'
0x7f, // '8'
0x6f // '9'
};
// 数码管控制函数
void display(unsigned int num) {
unsigned int i = 0;
unsigned char buf[4]; // 缓存要显示的数据
// 将 num 的每一位存入缓存 buf 中
buf[0] = num / 1000;
buf[1] = (num % 1000) / 100;
buf[2] = (num % 100) / 10;
buf[3] = num % 10;
for (i = 0; i < 4; i++) { // 显示每一位
P2 = ledChar[buf[i]]; // 将 buf[i] 对应的数码管段码通过 P2 口输出
P0 = ~(1 << i); // 将 P0 的第 i 位设置为 0,点亮数码管的第 i 位
delay_ms(5); // 稍作延时
P0 = 0xff; // 关闭数码管
}
}
void main()
{
unsigned int i = 0;
while (1) {
for (i = 0; i < 1000; i++) { // 显示 0 到 999 的数值
display(i);
}
}
}
// 延时函数,约 1ms (12MHz)
void delay_ms(unsigned int ms) {
unsigned int i,j;
for(i=0; i<ms; i++) {
for(j=0; j<114; j++);
}
}
```