写一段51单片机8个数码管从左往右滚动显示1、9、8、6、3、4、8、9的代码
时间: 2023-10-20 18:41:50 浏览: 99
以下是基于51单片机的8051架构的代码,实现8个数码管从左往右滚动显示1、9、8、6、3、4、8、9:
```c
#include <reg51.h>
// 数码管的连接方式
sbit dig1 = P1^0;
sbit dig2 = P1^1;
sbit dig3 = P1^2;
sbit dig4 = P1^3;
sbit dig5 = P1^4;
sbit dig6 = P1^5;
sbit dig7 = P1^6;
sbit dig8 = P1^7;
// 数码管对应数字的编码
unsigned char code table[] = {
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90
};
void delay(unsigned int x) {
unsigned int i, j;
for (i = x; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main() {
unsigned char i, j;
unsigned char data[] = {1, 9, 8, 6, 3, 4, 8, 9}; // 要显示的数字
while (1) {
// 从左往右滚动
for (i = 0; i < 8; i++) {
dig1 = 1; dig2 = 0; dig3 = 0; dig4 = 0;
dig5 = 0; dig6 = 0; dig7 = 0; dig8 = 0;
P0 = table[data[(i + 0) % 8]];
delay(1);
dig1 = 0; dig2 = 1; dig3 = 0; dig4 = 0;
dig5 = 0; dig6 = 0; dig7 = 0; dig8 = 0;
P0 = table[data[(i + 1) % 8]];
delay(1);
dig1 = 0; dig2 = 0; dig3 = 1; dig4 = 0;
dig5 = 0; dig6 = 0; dig7 = 0; dig8 = 0;
P0 = table[data[(i + 2) % 8]];
delay(1);
dig1 = 0; dig2 = 0; dig3 = 0; dig4 = 1;
dig5 = 0; dig6 = 0; dig7 = 0; dig8 = 0;
P0 = table[data[(i + 3) % 8]];
delay(1);
dig1 = 0; dig2 = 0; dig3 = 0; dig4 = 0;
dig5 = 1; dig6 = 0; dig7 = 0; dig8 = 0;
P0 = table[data[(i + 4) % 8]];
delay(1);
dig1 = 0; dig2 = 0; dig3 = 0; dig4 = 0;
dig5 = 0; dig6 = 1; dig7 = 0; dig8 = 0;
P0 = table[data[(i + 5) % 8]];
delay(1);
dig1 = 0; dig2 = 0; dig3 = 0; dig4 = 0;
dig5 = 0; dig6 = 0; dig7 = 1; dig8 = 0;
P0 = table[data[(i + 6) % 8]];
delay(1);
dig1 = 0; dig2 = 0; dig3 = 0; dig4 = 0;
dig5 = 0; dig6 = 0; dig7 = 0; dig8 = 1;
P0 = table[data[(i + 7) % 8]];
delay(1);
}
}
}
```