51单片机led点阵显示屏滚动代码
时间: 2023-12-13 15:04:32 浏览: 274
这篇引用提供了一个基于51单片机的LED点阵屏滚动显示代码的仿真实例。代码主要包括两个模块:74HC595模块和点阵屏显示函数,以及定时器中断模块。其中,74HC595模块用于控制点阵屏的显示,点阵屏显示函数用于控制点阵屏某一列的显示,定时器中断模块用于控制滚动速度。具体的代码实现可以参考引用中提供的示例代码。
相关问题
led点阵显示屏滚动代码
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点阵屏的显示。具体实现过程可以参考代码注释。
51单片机led点阵显示滚动
下面是51单片机led点阵显示滚动的基本思路和代码实现:
1. 点阵LED的接线方式为行列式,其中行由P0口控制,列由P2口控制;
2. 定义一个8*8的字符数组,存储要显示的内容;
3. 定义一个计数器变量i,控制字符数组的滚动;
4. 每次滚动时,将字符数组中的第i列数据分别送入P2口,同时将P0口控制的行口输出低电平,达到显示效果;
5. 每隔一定时间(如50ms)更新一次i的值,实现滚动效果。
以下是示例代码:
```c
#include<reg51.h>
#define uint unsigned int//宏定义
#define uchar unsigned char
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar code weiduan[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//共阴数码管
uchar code arr[8][8]={
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}
};//定义一个8*8的字符数组
uint i,j,k;//计数器
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display()
{
for(k=0;k<8;k++)
{
P0=0x01<<k;
P2=0xff;
P2=weiduan[k];
P0=0xff;
P2=duan[arr[k][i]];
delay(1);
}
}
void main()
{
while(1)
{
for(i=0;i<8;i++)
{
display();
}
for(j=0;j<7;j++)
{
for(k=0;k<8;k++)
{
arr[k][j]=arr[k][j+1];
}
}
for(k=0;k<8;k++)
{
arr[k][7]=0;
}
delay(50);
}
}
```
这段代码实现了一个基本的8*8点阵LED滚动显示效果,可以根据实际需求进行调整和修改。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)