C51写一个控制8段数码管能同时显示1-8
时间: 2024-05-02 16:17:42 浏览: 7
以下是C51代码:
```
#include <reg52.h>
// 数码管共阴极接口定义
sbit LED_COM1 = P2^0;
sbit LED_COM2 = P2^1;
sbit LED_COM3 = P2^2;
sbit LED_COM4 = P2^3;
sbit LED_COM5 = P2^4;
sbit LED_COM6 = P2^5;
sbit LED_COM7 = P2^6;
sbit LED_COM8 = P2^7;
// 数码管段码定义
unsigned char LED_Disp[8] = {
0x3F, // 数字1
0x06, // 数字2
0x5B, // 数字3
0x4F, // 数字4
0x66, // 数字5
0x6D, // 数字6
0x7D, // 数字7
0x07 // 数字8
};
void main() {
unsigned char i;
while(1) {
// 循环显示数字1-8
for(i = 0; i < 8; i++) {
// 先全部输出高电平(关闭数码管)
LED_COM1 = 1;
LED_COM2 = 1;
LED_COM3 = 1;
LED_COM4 = 1;
LED_COM5 = 1;
LED_COM6 = 1;
LED_COM7 = 1;
LED_COM8 = 1;
// 根据当前循环次数选择要显示的数码管
switch(i) {
case 0:
LED_COM1 = 0;
P0 = LED_Disp[0];
break;
case 1:
LED_COM2 = 0;
P0 = LED_Disp[1];
break;
case 2:
LED_COM3 = 0;
P0 = LED_Disp[2];
break;
case 3:
LED_COM4 = 0;
P0 = LED_Disp[3];
break;
case 4:
LED_COM5 = 0;
P0 = LED_Disp[4];
break;
case 5:
LED_COM6 = 0;
P0 = LED_Disp[5];
break;
case 6:
LED_COM7 = 0;
P0 = LED_Disp[6];
break;
case 7:
LED_COM8 = 0;
P0 = LED_Disp[7];
break;
}
// 延时一段时间,使数字能够被看清
delay(10);
}
}
}
// 延时函数
void delay(unsigned int i) {
while(i--);
}
```