51单片机8x8点阵滚动播放汉字“斗罗大陆”
时间: 2023-08-17 07:04:04 浏览: 106
基于51单片机的汉字滚动显示
以下是一个简单的51单片机8x8点阵滚动播放汉字“斗罗大陆”的代码:
```
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar segtable[] = { // 汉字“斗罗大陆”的点阵数据
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 空格
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 空格
0x20, 0x20, 0xFE, 0x20, 0x20, 0x00, 0xFE, 0x00, // “斗”
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, // “罗”
0x10, 0x10, 0xD0, 0x7F, 0x50, 0x54, 0x52, 0x00, // “大”
0x84, 0x84, 0x84, 0x84, 0x84, 0xFC, 0x00, 0x00, // “陆”
};
void delayms(uint x) { // 毫秒级延时函数
uint i, j;
for(i=0; i<x; i++)
for(j=0; j<114; j++);
}
void main() {
uchar i, j, k;
while(1) {
for(i=0; i<8; i++) { // 逐列扫描
for(j=0; j<50; j++) { // 滚动速度
for(k=0; k<8; k++) { // 逐行显示
P0 = _crol_(segtable[i*8+k], i); // 左移i位并输出
P2 = ~(1<<k); // 选择行
delayms(1); // 延时
P0 = 0x00; // 关闭
P2 = 0xFF; // 取消选择
}
}
}
}
}
```
这个代码将在8x8点阵上滚动播放汉字“斗罗大陆”。你可以通过修改`segtable`数组来显示其他汉字或字符。注意,这个代码使用了毫秒级延时函数,可能需要根据实际情况进行调整。
阅读全文