赞
踩
本文是关于LED点阵的使用,使用74HC595模块实现对LED点阵的控制。
LED点阵是由发光二极管排列组成的显示器件,被广泛应用于汽车报站器、广告屏等。如下所示:
proteus中的8x8点阵如下:
通常应用较多的是8x8点阵,使用多个8x8点阵可组成不同分辨率的LED点阵显示屏,比如16x16点阵可以使用4个8x8点阵构成。
8x8LED点阵内部结构图如下,这两种图片只是接法不同,要点亮LED,左图需要行置为高电平,列置为低电平;右图则需要行置为低电平,列置为高电平。
8x8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置高电平,某一列置低电平,则相应的二极管将点亮。
比如对于左图,如果要将第一个点点亮,则将第一行的⑨脚接高电平,第一列的13脚接低电平,第一个点就会点亮;如果要将第一行点亮,则第一行的⑨脚接高电平,所有列(13、3、4、10、6、11、15、16脚)接低电平,第一行就会点亮;如果要将第一列点亮,则第一列的13脚接低电平,所有行(9、14、8、12、1、7、2、5脚)接高电平,第一列就会点亮;如果要将对角线点亮,可以动态显示,首先点亮第一个点,然后点亮第2行第2列的点…这样依次循环点亮,就可以显示对角线的点。
如果要显示数字或字符,在需要的位置点亮,比如显示0(如下),可以循环点亮如下位置的LED。
开发板上使用了74HC595芯片实现串转并,接到LED点阵模块,原理图如下:
74HC595起到了扩展IO口的功能,从原理图可以看到74HC595使用3个IO口输入,有8个IO口输出。这8个IO口控制LED点阵的行(从第一行到最后一行分别是D7-D0),使用P0口控制LED点阵的列(从第一列到最后一列分别是P07-P00)。
比如对于如上结构图左图所示,如果要点亮第一个LED,那么P0口应该置为0x7f,D7-D0应该置为0x80。
74HC595芯片具有8为串行输入/输出或者并行输出移位寄存器,具有三态输出(高电平、低电平、高阻态)。是总线驱动的并行输出。通常用于串行输入到并行输出的数据转换。
74HC595引脚说明如下:
符号 | 引脚 | 描述 |
---|---|---|
Q0…Q7(QA…QH) | 15,1-7 | 并行数据输出 |
GND | 8 | 逻辑地 |
Q7’ | 9 | 串行数据输出 |
/MR(/SRCLR) | 10 | 主复位(低电平有效),接到GND就处于复位状态,要接到电源处于高电平状态 |
SHCP(SRCLK) | 11 | 移位寄存器时钟输入 |
STCP(RCLK) | 12 | 存储寄存器时钟输入 |
/OE | 13 | 输出有效(低电平有效),在开发板上有一个端子,如果要使输出有效,就短接到GND,如果要使输出无效,就短接到VCC。也可以连接到一个IO口进行控制。进行LED点阵实验时要短接到地,使输出有效。 |
DS(SER) | 14 | 串行数据输入,输入的数据经过74HC595芯片转换为并口输出 |
VCC | 16 | 电源 |
74HC595功能如下,H=高电平,L=低电平,↑=上升沿,↓=下降沿,Z=高阻态,NC=无变化,X=无效
输入 | 输入 | 输入 | 输入 | 输入 | 输出 | 输出 | 功能 |
---|---|---|---|---|---|---|---|
SHCP | STCP | OE | MR | DS | Q7’ | Qn | |
X | X | L | ↓ | X | L | NC | MR为低电平时仅影响移位寄存器 |
X | ↑ | L | L | X | L | L | 移位寄存器到输出寄存器,STCP上升沿会将数据输出 |
X | X | H | L | X | L | Z | 清空移位寄存器,并行输出为高阻态 |
↑ | X | L | H | H | Q6’ | NC | 逻辑高电平移入移位寄存器状态0,包含所有的移位寄存器状态移入 |
X | ↑ | L | H | X | NC | Qn | 移位寄存器的内容到达存储寄存器并从并口输出 |
↑ | ↑ | L | H | X | Q6’ | Qn’ | 移位寄存器内容移入,先前的移位寄存器的内容到达存储寄存器并输出 |
从上表可以知道,当主复位MR为高电平,输出使能OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口。
74HC595的数据端:
Q0-Q7:八位并行输出端,可以直接控制数码管的8个段。
Q7’:级联输出端,可以接下一个595的SER端。
SER:串行数据输入端。
74HC595控制端说明
在proteus中硬件设计如下,实现的功能为使用74HC595芯片实现流水灯效果。
根据上面对74HC595的介绍,DS引脚是输入的串行数据,SHCP上升沿会进行移位寄存器的移位操作,STCP上升沿时会将数据输出到并行端口。
软件代码如下:
/* 实现功能:74HC595芯片控制LED点阵实现LED流水灯的效果 [2023-12-08] zoya */ #include "reg52.h" #include "intrins.h" typedef unsigned char u8; typedef unsigned int u16; sbit DS = P3^4; // 74HC595输入数据端口 sbit STCP = P3^5; // 74HC595存储寄存器端口,上升沿时移位寄存器进入存储寄存器 sbit SHCP = P3^6; // 74hc595移位寄存器端口,上升沿时移入数据 // 延时函数,i=1延时10us void Delay(u16 i) { while(i--); } // 74HC595芯片将输入的串行数据转换为并行数据输出 void HC595SendByte(u8 dat) { u8 i; STCP = 1; // 高电平时存储寄存器数据保持不变 SHCP = 1; // 高电平时移位寄存器数据保持不变 for(i=0;i<8;i++) { DS = dat >> 7; // 每次输入最高位数据 dat <<= 1; // 移位后将dat数据左移一位,保证下一次移入的数据在最高位 // 实现移位寄存器的时序,需要SHCP有一个上升沿,所以先将SHCP置0,然后置1 SHCP = 0; _nop_(); // 空指令,不做任何操作,当做延时使用 _nop_(); SHCP = 1; } // 数据已经在移位寄存器了,现在将移位寄存器的数据输出到存储寄存器 // STCP上升沿时将数据从移位寄存器输出到存储寄存器 STCP = 0; _nop_(); _nop_(); STCP = 1; } void main() { u8 ledNum = ~0x01; // 首先点亮D0 // HC595SendByte(0xff); while(1) { HC595SendByte(ledNum); ledNum = _crol_(ledNum,1); // 左移,逐个点亮D0-D7 Delay(50000); } }
仿真结果:
在proteus中设计如下LED点阵,实现使用74HC595控制LED点阵对角线灯亮的功能。
代码实现如下:
/* 实现功能:74HC595芯片控制LED点阵实现对角线点亮 [2023-12-08] zoya */ #include "reg52.h" #include "intrins.h" #define GPIO_LED P0 // LED点阵列控制IO口 typedef unsigned char u8; typedef unsigned int u16; sbit DS = P3^4; // 74HC595输入数据端口 sbit STCP = P3^5; // 74HC595存储寄存器端口,上升沿时移位寄存器进入存储寄存器 sbit SHCP = P3^6; // 74hc595移位寄存器端口,上升沿时移入数据 u8 ledNum = 0x01; // 延时函数,i=1时延时10us void Delay(u16 i) { while(i--); } // 74HC595芯片将输入的串行数据转换为并行数据输出 void HC595SendByte(u8 dat) { u8 i; STCP = 1; // 高电平时存储寄存器数据保持不变 SHCP = 1; // 高电平时移位寄存器数据保持不变 for(i=0;i<8;i++) { DS = dat >> 7; // 每次输入最高位数据 dat <<= 1; // 移位后将dat数据左移一位,保证下一次移入的数据在最高位 // 实现移位寄存器的时序,需要SHCP有一个上升沿,所以先将SHCP置0,然后置1 SHCP = 0; _nop_(); // 空指令,不做任何操作,当做延时使用 _nop_(); SHCP = 1; } // 数据已经在移位寄存器了,现在将移位寄存器的数据输出到存储寄存器 // STCP上升沿时将数据从移位寄存器输出到存储寄存器 STCP = 0; _nop_(); _nop_(); STCP = 1; } void main() { // 点亮LED点阵的第一个灯,P00=0,其它为1 u8 dNum = ~0x01; GPIO_LED = ledNum; while(1) { HC595SendByte(dNum); GPIO_LED = ledNum; Delay(200); dNum = _crol_(dNum,1); ledNum = _crol_(ledNum,1); } }
仿真结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。