点阵屏介绍
LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等
LED点阵屏分类
按颜色:单色、双色、全彩
按像素:8*8、16*16等(大规模的LED点阵通常由很多个小点阵拼接而成)
显示原理
LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已
LED点阵屏与数码管一样,有共阴和共阳两种接法,不同的接法对应的电路结构不同
LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示
74HC595介绍
•74HC595是串行输入并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于IO口扩展。
特点,8位串行输入,8位串行或并行输出,存储状态寄存器,三种状态,输出寄存器可以直接清除,100MHz的移位频率。移位寄存器和存储器是分别的时钟,数据在SH_CP(11脚)的上升沿输入,在ST_CP(12脚)的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早--个脉冲。 移位寄存器有一个串行移位输入(Ds,14脚),和一个串行输出(Q7’) ,和一个异步的低电平复位(MR,10脚),存储寄存器有一个并行8位的,具备三态的总线输出,当使能0E(13脚)时(为低电平),存储寄存器的数据输出到总线。
C51的sfr、sbit介绍
•sfr(special function register):特殊功能寄存器声明
例:sfrP0 = 0x80;
声明P0口寄存器,物理地址为0x80
•sbit(special bit):特殊位声明
例:sbitP0_1 = 0x81; 或 sbit P0_1 = P0^1;
声明P0寄存器的第1位
•可位寻址/不可位寻址:在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有8位,所以位的数量是寄存器数量的8倍,单片机无法对所有位进行编码,故每8个寄存器中,只有一个是可以位寻址的。对不可位寻址的寄存器,若要只操作其中一位而不影响其它位时,可用“&=”、“|=”、“^=”的方法进行位操作
LED点阵屏输出图像
1)程序
#include <REGX52.H>
#include "Delay.h"
#include "MatrixLED.h"void main()
{MatrixLED_Init();while(1){MatrixLED_ShowRow(0,0x3C);MatrixLED_ShowRow(1,0x42);MatrixLED_ShowRow(2,0xA5);MatrixLED_ShowRow(3,0x81);MatrixLED_ShowRow(4,0xA5);MatrixLED_ShowRow(5,0x99);MatrixLED_ShowRow(6,0x42);MatrixLED_ShowRow(7,0x3C);}
}
MatrixlLED.c
#include <REGX52.H>
#include "Delay.h"sbit RCK=P3^5; //RCLK
sbit SCK=P3^6; //SRCLK
sbit SER=P3^4; //SER#define MATRIX_LED_PORT P0
void MatrixLED_Init()
{SCK=0;RCK=0;
}/*** @brief 74HC595写入一个字节* @param Byte 要写入的字节* @retval 无*/
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;
}/*** @brief LED点阵屏显示一行数据* @param Row 要选择的行,范围:0~7,0在最上边* @param Data 选择列显示的数据,高位在上,1为亮,0为灭* @retval 无*/
void MatrixLED_ShowRow(unsigned char Row,Data)
{_74HC595_WriteByte(Data);MATRIX_LED_PORT=~(0x80>>Row);Delay(1);MATRIX_LED_PORT=0xFF;
}
2)Proteus仿真
仿真注意事项
红色:上为列选(高电平有效)
下为行选(低电平有效)
其他:下为列选(高电平有效)
上为行选(低电平有效)
SH_CP:移位寄存时钟(上升沿有效)
ST_CP:移位存储器时钟(上升沿有效)
DS:串行数据输入
MR:异步的低电平复位(需要置为高电平)