led点阵屏滚动显示设计程序
时间: 2024-03-14 15:47:24 浏览: 122
LED点阵显示程序设计
4星 · 用户满意度95%
LED点阵屏滚动显示的程序设计需要涉及到以下几个方面:
1. 点阵屏的驱动方式:针对不同型号的点阵屏,驱动方式有所不同,需要根据具体型号选择相应的驱动方式。
2. 字符集的设计:需要将需要滚动显示的字符转换为点阵图,根据点阵图来显示字符。
3. 显示方式的选择:滚动显示可以采用从右往左、从左往右、从上往下、从下往上等不同的方式,需要根据具体需求选择合适的显示方式。
4. 控制程序的编写:需要编写控制程序,实现点阵屏的初始化、字符显示、滚动等功能。
下面是一个简单的LED点阵屏滚动显示的程序示例:
```c
#include <reg52.h>
#define uchar unsigned char
uchar code table[]={
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, // 0-9
0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 // A-F
};
uchar code str[]={"Hello, World!"};
uchar code len=sizeof(str)-1;
uchar cnt=0;
void delay(uchar i){
while(i--);
}
void main(){
TMOD=0x01;
TH0=0xff;
TL0=0x9c;
TR0=1;
ET0=1;
EA=1;
while(1);
}
void timer0() interrupt 1 {
TH0=0xff;
TL0=0x9c;
cnt++;
if(cnt > len*8+8){
cnt=0;
}
if(cnt%8 == 0){
P0=0xff;
delay(100);
}
else{
P0=(table[str[cnt/8]] << (cnt%8)) & 0xff;
delay(2);
}
}
```
这个程序采用从右往左的滚动方式,每8个时间单位(具体时间可根据实际情况调整),向左移动一个像素点,直到显示完整个字符串。在程序中,`table`数组存储了0-9和A-F的点阵图,`str`数组存储需要显示的字符串,`len`为字符串长度,`cnt`为计数器,用于控制滚动的位置。`delay`函数是简单的延时函数,用于控制滚动速度。`timer0`函数是定时器0的中断服务函数,用于控制滚动的位置和显示。在程序中,定时器0被设置为1ms的计时器,每次中断时,将计数器加1,当计数器大于字符串长度的8倍加8时,将计数器重置为0,从头开始滚动。如果计数器是8的倍数,则在点阵屏上显示一个空白,否则根据计数器和字符集中对应字符的点阵图,在点阵屏上显示字符。
阅读全文