51单片机 8X8点阵屏循环左移
时间: 2023-09-25 22:06:11 浏览: 71
循环左移可以使用位运算来实现,以下是一个示例代码:
```c
#include<reg51.h>
unsigned char table[] = { // 8x8点阵屏的编码表
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
void delay(unsigned int t) { // 延时函数
unsigned int i, j;
for (i = 0; i < t; i++) {
for (j = 0; j < 125; j++);
}
}
void main() {
unsigned char i, j;
while (1) {
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
table[i] = (table[i] << 1) | (table[i] >> 7); // 循环左移一位
}
P0 = ~table[i]; // 显示每行数据
delay(10); // 延时一段时间
}
}
}
```
以上代码中,`table`数组存储了8x8点阵屏每个像素的编码,循环左移通过位运算实现,然后将每行数据显示在点阵屏上,通过延时函数控制循环速度。