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);
}
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐