Live2d Test Env

TM74HC595

1. TM74HC595 简介

    TM74HC595 是一个串行输入,8输出的一个IC ,可以级联(可能可以无限级联,目前试过20个级联),通过  9管脚 SQH进行级联,手册说明,

   1.1 功能特点:

  • 最大输入信号频率Fmax >25MHz   
  • 标准串行( SPI ) 接口
  • CMOS 串行输出,可以哦那个与多个设备的级联
  • 低功耗:TA=25 ℃时,ICC=4uA ( MAX )

    1.2  输入管脚简介

1  TM74HC595       管脚号            管脚名称                            对应MCU-SPI接口
2   QB-QH(QA - 15) 1-7           输出管脚                             
3   SQH             9             串行数据输出管脚                          级联管脚
4   SCLR            10            移位寄存器输入管脚                        普通 IO 口  
5   SCK             11            数据移位时钟输入管教                        SCLK
6   RCK             12            锁存存储器时钟输入管脚                     普通 IO 口  
7   OE              13            输出使能管脚                             普通 IO 口  
8   SI              14            串行数据输入管脚                            MOSI

2. 功能简介 

     数据通过  SI 输入,每一个时钟SCK上升沿进行数据存储,当数据超过一个字节(8 bit ),数据通过 SQH 串行输出,移位到下一个级联芯片。

假如数据发送低位在前(先发低位),QA-QH: 对应数据的高位——低位,(数据发送之后相当于存储在一个数组中,先进的数据在底部)

数据发送先存储到移位寄存器中,当  RCK  上升沿来时,将数据保存到 输出存储器中,通过QA-QH进行输出

3.  功能描述

 

 

 SI       数据串行输入口 

 SCK   驱动数据输入,上升沿有效,下降沿保持移位寄存器状态;

SCLR  清除移位数据寄存器数据,低电平有效

RCK    输出状态值,上升沿将移位寄存器中的值通过 QA ~ QH 输出,下降沿保持

4.驱动代码

 1 #define  CLK(x)               ((x)>=1)?GPIO_SetBits(GPIOA,GPIO_Pin_7):GPIO_ResetBits(GPIO7,GPIO_Pin_7)     //数据时钟 CLK
 2 #define  DATA_BIT_SEND(x)     ((x)>=1)?GPIO_SetBits(GPIOA,GPIO_Pin_6):GPIO_ResetBits(GPIOA,GPIO_Pin_6)     //串行数据输入
 3 #define  RCLK(x)              ((x)>=1)?GPIO_SetBits(GPIOA,GPIO_Pin_5):GPIO_ResetBits(GPIOA,GPIO_Pin_5)     //移位寄存器时钟
 4 
 5 void loadData(void){
 6     
 7     RCK(0);  // delay_us(1);
 8       RCK(1);  // delay_us(1);
 9 }
10 
11 unsigned char sendOneByte(unsigned char data){
12  
13     unsigned char  i;
14     for(i=0;i<8;i++)
15     {
16       DATA_BIT_SEND(((data>>i)&0x01));
17         SHCP(0);  
18         delay_us(1);
19         SHCP(1);  
20     }
21     return 0;
22 }
23 
24 
25 
26 unsigned char sendNByte(const unsigned char *data, unsigned char len){
27 
28   unsigned char i=0;
29 
30     for(i = 0;i < len; i++)
31     {
32       sendOneByte(data[i]);
33     }                       //数据存储到移位数据寄存器中  
34     loadData();             //数据通过 QA ~ QH 输出
35     return 0;  
36 }

5. 应用说明

  实际使用中,多个级联,有遇到 LED 闪烁的情况,这个时候可以提高数据传输速率,使用硬件 SPI 传输数据

 

 

 

        

 

posted @ 2022-02-15 11:56  爬上那个坡  阅读(1297)  评论(0编辑  收藏  举报