74HC595芯片验证

0x00 74595芯片简介

74595芯片有很多种封装,不管是贴片的还是直插式的,它们的引脚定义都如下图所示:
在这里插入图片描述

其中 :

  • Q0-Q7为并行数据输出口,可以输出高低电平。
  • OE 为使能引脚,低电平有效
  • DS 为串行数据输入引脚,也称SER,也就是你用于输入数据的引脚
  • MR为复位引脚,将其拉低可以清空数据
  • STCP在上升沿时,数据从移位寄存器转存到存储寄存器
  • SHCP在上升沿时,数据移位,并且可以接收新的数据(从DS引脚输入)
  • Q7S为串行数据输出引脚,这个引脚可以用于级联其他的74595芯片。

其工作原理为,74595内部有两个8位的寄存器,其中一个用于存储,一个用于移位输入新的数据,74595将根据用于存储的8位寄存器内容,8个引脚按位依次输出对应的电平值。

0x01 实现原理

以下将介绍如何编写函数向74595发送一个字节的数据,如果需要控制两个74595芯片,将这个函数调用两次即可。

实现的原理都在代码之中,结合引脚介绍即可看懂

void SendTo595(uint8_t byteData)
{
   int i=0;
   uint8_t SER;
    for(;i<8;i++)
   {
   		//判断最高位数据是 0 或 1
        SER = (byteData>>7) & 0x01; 
        
        if(SER)
          gpio_bit_set(GPIO_PORT_SER,GPIO_PIN_SER);
        else
          gpio_bit_reset(GPIO_PORT_SER,GPIO_PIN_SER);
          
        byteData= byteData<<1;      
		//上升沿,让串行输入时钟变为高电平,并延时2个时钟周期
        gpio_bit_set(GPIO_PORT_SCK,GPIO_PIN_SCK);/
        delay_1us(5);
        gpio_bit_reset(GPIO_PORT_SCK,GPIO_PIN_SCK);//变为低电平,为下次准备
   }
   
   /*位移寄存器数据准备完毕,转移到存储寄存器*/ 
   //上升沿,让存储寄存器时钟变为高电平,并延时2个时钟周期
   gpio_bit_set(GPIO_PORT_RCK,GPIO_PIN_RCK);
   delay_1us(5);
   gpio_bit_reset(GPIO_PORT_RCK,GPIO_PIN_RCK);
}
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoT_H2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值