4个74HC595级联控制16x16点阵横向滚动带仿真(二)

本文是关于4个74HC595芯片级联控制16x16点阵显示横向滚动效果的续篇,作者根据群内讨论,采用行扫描和移位方式实现了新的滚动程序,并提供了效果预览。文章末尾附有个人博客链接。
摘要由CSDN通过智能技术生成

废话

  续上篇

  《4个74HC595级联控制16x16点阵横向滚动带仿真(一)

  将横向滚动的程序分享给QQ群里后,群内的晚秋兄弟提出了另一种思路——采用行扫描、移位方式做滚动,于是熬夜将其实现了一下。仿真程序还是跟前篇一样,不再赘述。

 


 

效果预览

  


 

代码

/**
 **********************************************************
 ******       Copyright(C), 2010-2016,吐泡泡的虾           ******
 **********************************************************

 *@Tittle                :    16x16点阵滚动显示汉字——横向滚动 移位方式
 *@Version        :    v1.0
 *@Author        :    吐泡泡的虾
 *@Dat            :    2016-08-05 01:11:28
 *@Desctription    :    16x16点阵采用4个74HC595移位寄存器控制,
 *                    4个移位寄存器采用串联方式。
 *                    本例采用行刷新模式。
 *                    取模方式:横向取模,字节不倒序。
 *                    适用于普中开发板。
 *                    为尽量减少RAM占用,未用buff[32]缓存满屏
 *                    显存的方式来存储要显示的文字码值,而采用
 *                    3个基准指针和3个缓存字节循环赋值的方式
 *                注意:
 *                    由于采用4个595级联方式,输入数据速度太慢,
 *                    导致闪烁感较强。可改用6T模式,改善很多。
 *
 *                     更改k值可以更改滚动速度。
 *                     更改延时也可以更改滚动速度,但注意可能引
 *                     起闪烁。
 *@History        :
     #v1.0    [Press F5 to insert time]
         1. some comment

 **********************************************************
 **********************************************************
 */


#include <reg52.h>
#include <intrins.h>


#define uchar unsigned char
#define uint unsigned int

sbit DS_595 = P3 ^ 4;        //P3^4: 595的数据输入管脚
sbit SHCP_595 = P3 ^ 6;        //P3^6: 595的移位寄存器时钟管脚 SCK
sbit STCP_595 = P3 ^ 5;        //P3^5: 595的输出寄存器时钟管脚 RCK
// sbit MR_595 = P2 ^ 3;    //P0^3: 595的输出输出寄存器重置管脚 MR

void InputTo595(uchar *displayBuff, uchar len);
void OutputFrom595();
void DelayX10us(uchar multi);

//行扫描模式下的行序号,两两一组。如0x80, 0x00为点亮第一行,0x40, 0x00为第二行
uchar code ROW_NUM[] = {
    0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00,
    0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01,
};

//要显示的字符。开头和末尾均留1个空白字符,以显示滚入、滚出效果。任意替换中间的汉字即可
uchar code words[] =
{
    /*--  起始空白,滚入效果  --*/
    /*--  宽度x高度=16x16  --*/
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  • 11
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要控制16x16点阵,可以使用74HC595芯片。这个芯片是一个8位移位寄存器,可以通过串行数据输入来控制输出端口的状态。通过级联多个74HC595芯片,可以扩展输出端口的数量,从而控制更多的LED点阵。在控制16x16点阵时,需要将点阵的行和列分别连接到74HC595芯片的输出端口上,通过控制芯片的输出状态来控制点阵的亮灭。同时,还需要使用微控制器或其他控制器来生成控制芯片的串行数据输入信号,从而实现对点阵控制。 ### 回答2: 题目中提到的74HC595芯片是一种移位寄存器芯片,可以用来扩展控制IO口的数量。在控制16x16点阵时,可以使用4个74HC595芯片。每个芯片扩展出8个输出引脚,4个芯片则共扩展出32个输出引脚,足以控制16x16点阵中的所有LED点。 在使用74HC595芯片控制16x16点阵之前,需要进行引脚连接。74HC595芯片的引脚包括8个输出引脚(Q0-Q7)、一个时钟信号引脚(SRCLK)、一个锁存信号引脚(RCLK/LATCH)、一个数据输入引脚(SER)和一个输出使能引脚(OE/!G)。我们需要连接4个74HC595芯片来分别控制16x16点阵中的红、绿、蓝三种颜色。由于每个74HC595芯片的输出可以连续的输出多个引脚的电平,因此在连接时需要将多个LED点连接到同一个芯片输出。例如,将每个芯片的前4个输出分别连接到前4排LED点,将后4个输出分别连接到后4排LED点。这样每个芯片就可以控制2排LED点。 通过控制74HC595芯片的输出引脚,就可以实现对16x16点阵LED点的控制控制过程中,先向第一个74HC595芯片的数据输入引脚输入控制信号,然后向该芯片的时钟信号引脚发送时钟信号。当输入完毕后,向该芯片的锁存信号引脚发送锁存信号,该芯片的输出就会被锁定在刚刚输入的状态上。重复以上步骤,对其他3个74HC595芯片进行控制。 总之,通过使用多个74HC595芯片来扩展控制IO口数量,可以实现对16x16点阵LED点的控制控制过程中需要注意引脚连接和数据输入顺序,通过正确控制可以实现多种动态与静态的LED点阵显示效果。 ### 回答3: 74HC595是一款高集成度的8位移位寄存器,经常被用来扩展微控制器的输出,通过串行输入和并行输出的方式来控制输出。在控制16x16点阵时,需要使用两颗74HC595芯片,采用级联的方式来实现控制点阵各个灯的开关状态。 首先,需要确定点阵的行列接线方式。一般使用行列式扫描方式,即每行同时输出高电平,每列输出低电平,通过不同的组合实现控制。接下来,将两个74HC595芯片串联在一起,高位芯片连接到低位芯片的Q7'引脚上,这样就可以通过两个芯片16位输出来控制点阵的列。然后,将点阵行的16控制端口连接到第一个74HC595芯片的Q1-Q7引脚上,这样就可以通过第一个芯片的输出来控制点阵的行。 控制点阵需要发送数据到芯片的串行输入端口,可以使用微控制器来生成串行数据并将其发送到74HC595芯片。需要注意的是,发送顺序应该是高位优先,即先发送最高位,最后发送最低位。控制点阵的过程可以分为以下几步: 1. 将需要显示的数据按照要求转换为进制形式,并存储在微控制器的寄存器中。 2. 先将第一个74HC595芯片的串行数据输入端口拉低,相应地将时钟信号的管脚拉高。 3. 将第一个芯片的串行数据引脚连接到寄存器中最高位的数据,然后利用时钟信号的下降沿使数据进入芯片。 4. 重复第3步,直到所有的数据都被发送到了第一个芯片。 5. 将另一个74HC595芯片连接到第一个芯片的Q7'引脚上,并将其串行数据输入端口连接到第一个芯片的Q7引脚上。 6. 重复步骤3和4,将所有的数据发送到第芯片。 7. 控制点阵的行列进行扫描,将需要显示的数据通过控制芯片的输出管脚发送到点阵。 在实现控制点阵的过程中,需要考虑时序、数据格式等问题,并对实际应用进行优化和调试,以达到最优效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值