开封市做网站的公司,网站服务器租赁哪家好,做平台的企业有哪些,在线微信小程序本文是关于LED点阵的使用#xff0c;使用74HC595模块实现对LED点阵的控制。 文章目录 一、8x8LED点阵的原理1.1 LED点阵显示原理1.2 LED点阵内部结构图1.3 开发板上的LED点阵原理图1.4 74HC595芯片 二、使用74HC595模块实现流水灯效果三、 使用74HC595模块控制LED点阵对角线亮… 本文是关于LED点阵的使用使用74HC595模块实现对LED点阵的控制。 文章目录 一、8x8LED点阵的原理1.1 LED点阵显示原理1.2 LED点阵内部结构图1.3 开发板上的LED点阵原理图1.4 74HC595芯片 二、使用74HC595模块实现流水灯效果三、 使用74HC595模块控制LED点阵对角线亮 一、8x8LED点阵的原理
1.1 LED点阵显示原理
LED点阵是由发光二极管排列组成的显示器件被广泛应用于汽车报站器、广告屏等。如下所示 proteus中的8x8点阵如下 通常应用较多的是8x8点阵使用多个8x8点阵可组成不同分辨率的LED点阵显示屏比如16x16点阵可以使用4个8x8点阵构成。
1.2 LED点阵内部结构图
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。 1.3 开发板上的LED点阵原理图
开发板上使用了74HC595芯片实现串转并接到LED点阵模块原理图如下 74HC595起到了扩展IO口的功能从原理图可以看到74HC595使用3个IO口输入有8个IO口输出。这8个IO口控制LED点阵的行(从第一行到最后一行分别是D7-D0)使用P0口控制LED点阵的列(从第一列到最后一列分别是P07-P00)。
比如对于如上结构图左图所示如果要点亮第一个LED那么P0口应该置为0x7fD7-D0应该置为0x80。
1.4 74HC595芯片
74HC595芯片具有8为串行输入/输出或者并行输出移位寄存器具有三态输出(高电平、低电平、高阻态)。是总线驱动的并行输出。通常用于串行输入到并行输出的数据转换。
74HC595引脚说明如下
符号引脚描述Q0…Q7(QA…QH)151-7并行数据输出GND8逻辑地Q7’9串行数据输出/MR(/SRCLR)10主复位(低电平有效)接到GND就处于复位状态要接到电源处于高电平状态SHCP(SRCLK)11移位寄存器时钟输入STCP(RCLK)12存储寄存器时钟输入/OE13输出有效(低电平有效)在开发板上有一个端子如果要使输出有效就短接到GND如果要使输出无效就短接到VCC。也可以连接到一个IO口进行控制。进行LED点阵实验时要短接到地使输出有效。DS(SER)14串行数据输入输入的数据经过74HC595芯片转换为并口输出VCC16电源
74HC595功能如下H高电平L低电平↑上升沿↓下降沿Z高阻态NC无变化X无效
输入输入输入输入输入输出输出功能SHCPSTCPOEMRDSQ7’QnXXL↓XLNCMR为低电平时仅影响移位寄存器X↑LLXLL移位寄存器到输出寄存器STCP上升沿会将数据输出XXHLXLZ清空移位寄存器并行输出为高阻态↑XLHHQ6’NC逻辑高电平移入移位寄存器状态0包含所有的移位寄存器状态移入X↑LHXNCQn移位寄存器的内容到达存储寄存器并从并口输出↑↑LHXQ6’Qn’移位寄存器内容移入先前的移位寄存器的内容到达存储寄存器并输出
从上表可以知道当主复位MR为高电平输出使能OE为低电平时数据在SHCP上升沿进入移位寄存器在STCP上升沿输出到并行端口。
74HC595的数据端
Q0-Q7八位并行输出端可以直接控制数码管的8个段。
Q7’级联输出端可以接下一个595的SER端。
SER串行数据输入端。
74HC595控制端说明
/SCLR(10脚)主复位脚低电平时清空移位寄存器通常接VCC。SCK(11脚)上升沿数据寄存器移位下降沿移位寄存器数据保持不变。RCK(12脚)上升沿时移位寄存器的数据进入存储寄存器下降沿存储寄存器数据不变。/OE(13脚)输出使能高电平时禁止输出。
二、使用74HC595模块实现流水灯效果
在proteus中硬件设计如下实现的功能为使用74HC595芯片实现流水灯效果。 根据上面对74HC595的介绍DS引脚是输入的串行数据SHCP上升沿会进行移位寄存器的移位操作STCP上升沿时会将数据输出到并行端口。
软件代码如下
/*实现功能74HC595芯片控制LED点阵实现LED流水灯的效果[2023-12-08] zoya
*/
#include reg52.h
#include intrins.htypedef unsigned char u8;
typedef unsigned int u16;sbit DS P3^4; // 74HC595输入数据端口
sbit STCP P3^5; // 74HC595存储寄存器端口上升沿时移位寄存器进入存储寄存器
sbit SHCP P3^6; // 74hc595移位寄存器端口上升沿时移入数据// 延时函数i1延时10us
void Delay(u16 i)
{while(i--);
}// 74HC595芯片将输入的串行数据转换为并行数据输出
void HC595SendByte(u8 dat)
{u8 i;STCP 1; // 高电平时存储寄存器数据保持不变SHCP 1; // 高电平时移位寄存器数据保持不变for(i0;i8;i){DS dat 7; // 每次输入最高位数据dat 1; // 移位后将dat数据左移一位保证下一次移入的数据在最高位// 实现移位寄存器的时序需要SHCP有一个上升沿所以先将SHCP置0然后置1SHCP 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-D7Delay(50000);}
}仿真结果 三、 使用74HC595模块控制LED点阵对角线亮
在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;// 延时函数i1时延时10us
void Delay(u16 i)
{while(i--);
}// 74HC595芯片将输入的串行数据转换为并行数据输出
void HC595SendByte(u8 dat)
{u8 i;STCP 1; // 高电平时存储寄存器数据保持不变SHCP 1; // 高电平时移位寄存器数据保持不变for(i0;i8;i){DS dat 7; // 每次输入最高位数据dat 1; // 移位后将dat数据左移一位保证下一次移入的数据在最高位// 实现移位寄存器的时序需要SHCP有一个上升沿所以先将SHCP置0然后置1SHCP 0;_nop_(); // 空指令不做任何操作当做延时使用_nop_();SHCP 1;}// 数据已经在移位寄存器了现在将移位寄存器的数据输出到存储寄存器// STCP上升沿时将数据从移位寄存器输出到存储寄存器STCP 0;_nop_();_nop_();STCP 1;
}void main()
{// 点亮LED点阵的第一个灯P000其它为1u8 dNum ~0x01;GPIO_LED ledNum;while(1){HC595SendByte(dNum);GPIO_LED ledNum;Delay(200);dNum _crol_(dNum,1);ledNum _crol_(ledNum,1);}
}
仿真结果