嵌入式开发--IO口扩展--74HC595

嵌入式开发–IO口扩展,输出引脚

嵌入式开发经常遇到IO口不够的情况,更换引脚更多的单片机是一种选择,但最近两年单片机的价格翻着跟斗的往上涨,替代方便也有,就是通过IO口扩展芯片来实现。

本段说明摘自明微电子的说明书:
74HC595D 是一种具有8 位锁存、8 位串行输入、 8 位串/并行输出、 串—并移位寄存器和三态输出功能的通用LED 驱动芯片。具有8 位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SCK 的上升沿输入,在RCK 的上升沿进入的存储寄存器中去。移位寄存器有一个串行移位输入(SER),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8 位的,具备三态的总线输出,当使能时,存储寄存器的数据输出到总线。它可以与其他公司生产的74HC595 完全兼容
在这里插入图片描述

下图截取自NXP公司的说明书
在这里插入图片描述
两款芯片功能一样,引脚定义一样,只是用了不同的符号来表示。
由于两家公司的描述不同,在此特别说明一下
数据从
14脚:数据引脚 DS或SER 数据从该引脚送入
9脚:Q7S或Q7‘ 当数据超过8位时,最先送入的数据从该引脚溢出,本芯片只存储8位以内的数据。
11脚 移位时钟信号,
12脚 锁丰时钟信号

电路图

用了2片芯片做级联,也可以支持更多的芯片,比如4片,同样只需要MCU端用3根IO口线驱动。
在这里插入图片描述
在这里插入图片描述

芯片的驱动

在这里插入图片描述

对着这个表格来操作就行,
13脚G 为低时,芯片工作。
10脚SCLR 为低时,芯片数据清空,正常工作时接高即可。
11脚SCK 移位时钟上升沿时,将14脚的数据保存到移位寄存器内
12脚RCK 锁存时钟上升沿时,将移位寄存器内的数据输出,完成串入并出的转换。

芯片驱动方式与I2C接口很相近,差不多自己写两句就好了。很简单就没有再写注释

#define HC595_SDA_PORT  GPIOA
#define HC595_SDA_PIN   GPIO_PIN_9
#define HC595_SFT_PORT  GPIOA
#define HC595_SFT_PIN   GPIO_PIN_10
#define HC595_LCK_PORT  GPIOA
#define HC595_LCK_PIN   GPIO_PIN_8

#define HC595_SDA(n)  (n?HAL_GPIO_WritePin(HC595_SDA_PORT,HC595_SDA_PIN, GPIO_PIN_SET):HAL_GPIO_WritePin(HC595_SDA_PORT,HC595_SDA_PIN,GPIO_PIN_RESET))
#define HC595_SFT(n)  (n?HAL_GPIO_WritePin(HC595_SFT_PORT,HC595_SFT_PIN, GPIO_PIN_SET):HAL_GPIO_WritePin(HC595_SFT_PORT,HC595_SFT_PIN,GPIO_PIN_RESET))
#define HC595_LCK(n)  (n?HAL_GPIO_WritePin(HC595_LCK_PORT,HC595_LCK_PIN, GPIO_PIN_SET):HAL_GPIO_WritePin(HC595_LCK_PORT,HC595_LCK_PIN,GPIO_PIN_RESET))


void hc595_display(u16 in)
{
  u8 i=0;
  for(i=0; i<16; i++)
  {
    if((in&0x01) == 0)
      HC595_SDA(0);
    else
      HC595_SDA(1);
    delay_us(1);
    
    HC595_SFT(1);
    delay_us(1);
    HC595_SFT(0);
    delay_us(1);
    in>>=1;
  }
  
  HC595_LCK(1);
  delay_us(1);
  HC595_LCK(0);
  delay_us(1);
}

在这里要批评一下明微电子,说明书里面用的图能做得好一点么,下面这个图是给人看的么
在这里插入图片描述
看看人家NXP的图
在这里插入图片描述

输入扩展

如果同时需要输入IO扩展的话,还有另一款国产IC可供选择,沁恒的CH423S,没错,就是大名鼎鼎的CH340那家公司。2线控制,还有一根可选的中断线,非常不错,只是价格比74HC595要贵些。将来用到了再和大家分享。
只是芯片手册中有这样一句话,让我有点担心其可靠性。
在这里插入图片描述
转念一想,CH340不是用得好好的么,同一家公司的产品,不至于吧。

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值