led点阵显示屏滚动代码
时间: 2023-10-29 07:05:37 浏览: 156
LED点阵屏滚动代码可以通过AT89S52单片机和74HC595模块实现。下面是一个简单的滚动代码示例:
```
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LATCH = P2^0; // 74HC595锁存引脚
sbit SCLK = P2^1; // 74HC595时钟引脚
sbit SDI = P2^2; // 74HC595数据引脚
uchar code LED_DuanMa[17] = { // 数码管段码表
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00
};
uchar code LED_WeiMa[8] = { // 数码管位码表
0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f
};
uchar code LED_DuanMa_Scroll[17] = { // 滚动显示的段码表
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
uchar LED_WeiMa_Scroll[8] = { // 滚动显示的位码表
0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f
};
void Delay(uint z) { // 延时函数
uint x, y;
for(x=z; x>0; x--)
for(y=110; y>0; y--);
}
void HC595SendByte(uchar dat) { // 发送一个字节到74HC595
uchar i;
for(i=0; i<8; i++) {
SDI = dat & 0x80;
dat <<= 1;
SCLK = 0;
_nop_();
SCLK = 1;
}
}
void Display_Scroll() { // 滚动显示函数
uchar i, j;
for(i=0; i<16; i++) {
for(j=0; j<8; j++) {
HC595SendByte(LED_DuanMa_Scroll[i+j]);
HC595SendByte(LED_WeiMa_Scroll[j]);
LATCH = 0;
_nop_();
LATCH = 1;
Delay(1);
}
}
}
void main() {
uchar i, j;
while(1) {
for(i=0; i<16; i++) {
for(j=0; j<8; j++) {
LED_DuanMa_Scroll[j] = LED_DuanMa[i+j];
}
Display_Scroll();
}
}
}
```
该代码使用了74HC595模块和AT89S52单片机,通过滚动显示的方式实现了LED点阵屏的显示。具体实现过程可以参考代码注释。
阅读全文