51-LED点阵屏

news/2024/11/22 15:19:32/

1.LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字,图片,视频等。

点阵屏的驱动关键:移位寄存器74HC595;

可位寻址:可以对寄存器中的某一位进行定义;例如:ET1=1;

不可位寻址:不能对寄存器中的某一位进行单独的定义,不可以控制其中某一位,不能对其中的一位进行定义;例如TMOD=0x80;

2. 74HC595原理图:

主要的三个控制接口是RCLK、SRCLK、SER;

---信号给到SER,SER接收信号,上升沿SERCLK高电位移位,每接收一个就向下移位一次,接收完置0;接收之前一定要定义初始值0电位;上升沿RCLK高电位1向右移位锁存,锁存完以后置0;接收之前也要定义初始值0电位;

#include <REGX52.H>sbit RCK=P3^5;
sbit SCK=P3^6;
sbit SER=P3^4;
void _74HC595_writebyte(unsigned char byte)
{unsigned char i;for(i=0;i<8;i++){SER=byte&(0x80>>i);SCK=1;SCK=0;}RCK=1;RCK=0;
}
void main()
{SCK=0;RCK=0;_74HC595_writebyte(0xAA);while(1){}
}

3.  LED点阵屏---显示笑脸

sbit是重新定义的意思;库里面已经有的定义,在此基础上从新定义;例如;PCLK是库里的函数,在此定义为PCK;p3^5=P35;

首先:定义一列的情况:定义参数Byte;定义i;for循环,Byte&0x80是把0x80的最高位拿出来;移位代表分别拿出每一位;然后按照寄存器的性质进行设定;

最后定义列和每列的情况;高电位1亮灯;

SER=byte&(0x80>>i);是把一列的8个位置情况分别调出来,&--会把高电位1的那一个位置传给SER;

#include <REGX52.H>
#include <Delay.h>sbit RCK=P3^5;
sbit SCK=P3^6;
sbit SER=P3^4;
void _74HC595_writebyte(unsigned char byte)
{unsigned char i;for(i=0;i<8;i++){SER=byte&(0x80>>i);SCK=1;SCK=0;}RCK=1;RCK=0;
}
void MatrixLED_ShowColomn(unsigned char Colomn,Date)
{_74HC595_writebyte(Date);P0=~(0x80>>Colomn);Delay(1);P0=0xFF;
}
void main()
{SCK=0;RCK=0;while(1){MatrixLED_ShowColomn(0,0x3C);MatrixLED_ShowColomn(1,0x42);MatrixLED_ShowColomn(2,0xA9);MatrixLED_ShowColomn(3,0x85);MatrixLED_ShowColomn(4,0x85);MatrixLED_ShowColomn(5,0xA9);MatrixLED_ShowColomn(6,0x42);MatrixLED_ShowColomn(7,0x3C);}
}

4.LED点阵屏显示动画:

main.c

#include <REGX52.H>
#include <Delay.h>
#include <matri.h>unsigned char Animation[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0x08,0x08,0x08,0xFF,0x00,0x0E,0x15,
0x15,0x15,0x08,0x00,0x7E,0x01,0x02,0x00,
0x7E,0x01,0x02,0x00,0x0E,0x11,0x11,0x0E,
0x00,0x7D,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
void main()
{unsigned char i,count=0,offset=0;matri_Init();while(1){for(i=0;i<8;i++){MatrixLED_showColomn(i,Animation[i+offset]);}count++;if(count>10){count=0;offset++;if(offset>40)offset=0;}}
}

Delay.c

#include <REGX52.H>void Delay(unsigned int xms)
{unsigned char i,j;while(xms){i=2;j=256;do{while(--j);}while(--i);xms--;}
}

Delay.h

#ifndef _DELAY__H_
#define _DELAY__H_void Delay(unsigned int xms);#endif

matri.c

#include <REGX52.H>
#include <Delay.h>sbit RCK=P3^5;
sbit SCK=P3^6;
sbit SER=P3^4;void _74HC595_writebyte(unsigned char byte)
{unsigned char i;for(i=0;i<8;i++){SER=byte&(0x80>>i);SCK=1;SCK=0;}RCK=1;RCK=0;
}
void matri_Init()
{SCK=0;RCK=0;
}
void MatrixLED_showColomn(unsigned char colomn,Date)
{_74HC595_writebyte(Date);P0=~(0x80>>colomn);Delay(1);P0=0xFF;
}

matri.h 

#ifndef _MATRI__H_
#define _MATRI__H_
//外部可调用---主文件要用什么--头文件就要引用什么
void MatrixLED_showColomn(unsigned char colomn,Date);
void matri_Init();
#endif


http://www.ppmy.cn/news/444374.html

相关文章

51单片机学习笔记(串口通信 LED点阵屏 DS1302)

四、串口通信 1.基本概念 通信中最重要的两个方面&#xff1a; 信息表示和解析方法&#xff1b; 信息的传输方法。 通信双方事先需要约定好信息的表示方法和解析方法&#xff0c;做到一致&#xff0c;否则信息不能有效传递。 信号的传输方法是指经过编码后的通信信息如何在传…

按键控制8*8led点阵C语言程序,单片机按键控制8X8LED点阵屏显示图形 程序的几个问题...

/* 名称:按键控制8X8LED点阵屏显示图形 说明:每次按下K1时,会使8X8LED点阵屏循环显示不同图形。 本例同时使用外部中断和定时中断。 */ #include #include #define uchar unsigned char #define uint unsigned int //待显示图形编码 uchar code M[][8]= {{0x00,0x7e,…

STC8H驱动hub75e接口的64*64LED点阵屏

由于最近在做毕业设计&#xff0c;应导师要求学习LED点阵屏的显示原理&#xff0c;学习并驱动hub75e接口的64*64LED点阵屏。点阵屏上一个点有三个颜色分量R&#xff0c;G&#xff0c;B&#xff0c;1为亮&#xff0c;0为灭。当这个点为110时&#xff0c;颜色为红色和绿色的混合-…

LED点阵屏实现文字滚动

void display_onechar(){//实现一个字滚动int i0;int j0;int k0;int m0;int n0;int change;for(i0;i<16;i){//16个状态&#xff0c;文字从无到有移动16次n0;while(1){m0;for(k16-i;k<16;k){change(my_char[0][m]<<8)|my_char[0][m16];LAT 0; for(j 0; j < 16;…

第八章、stc89c52中LED点阵屏的控制

1、LED点阵屏简介 LED点阵屏由若干个独立的LED组成&#xff0c;LED以矩阵的形式排列&#xff0c;以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合&#xff0c;如汽车报站器、广告屏以及公告牌等LED点阵屏分类 按颜色&#xff1a;单色、双色、全彩 …

51定时中断系统控制LED点阵屏显示逐帧动画

写在前面 最近回头看之前写的文章感到一种很浓的公式感&#xff0c;我确实是提前写好了模板每次都套用&#xff0c;整篇看下来感觉就像是在交老师布置的实验报告&#xff0c;看起来很成熟但实际上背离了自己的初衷&#xff0c;接下来我会尽可能的复现自己在做的时候的尝试和思…

51单片机入门 - 驱动 8x8 LED 点阵屏

硬件型号、软件版本、以及烧录流程 操作系统&#xff1a;Windows 10 x84-64单片机&#xff1a;STC89C52RC编译器&#xff1a;SDCC烧录软件&#xff1a;stcgal 1.6开发板&#xff1a;普中51单片机开发板A2套件&#xff08;2022&#xff09; 在 VS Code 中新建项目到烧录的过程…

一文教你玩LED点阵屏32*64/64*64----基于STM32

以32*64点阵屏为例&#xff0c;详解LED点阵屏驱动全过程 首先要了解LED点阵屏幕的显示原理。 一般LED点阵屏在某一时间段内只能点亮某一行或者某一列&#xff0c;因为人的眼睛只有24帧速度&#xff0c;只要屏幕速度超过这个值&#xff0c;我们看到的是一个连续完整的画面。一般…