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 传输数据