74HC595的驱动

作者: 天之道天知道 | 来源:发表于2018-01-15 11:26 被阅读15次

    74HC595的引脚如下


    图片.png

    其逻辑如下


    图片.png

    引脚说明


    图片.png

    Ds :串行数据的输入,简称SER
    Q0-Q7:并行输出,
    Q7‘ :则是为了级联多个595设置的引脚,级联的话会连接到下一个595的Ds
    OE : 芯片使能脚
    SHCP:移位时钟,一般简称 SCLK
    STCP : 锁存时钟, 一般简称 RCLK

    其中对于数据的流向,有些人一直搞不清楚,其实就可以按照下面画的红线去理解


    图片.png

    按D7-D0组成的二进制序列数即为要从串口输入的数据

    具体的程序如下

    #define  SER  //此添加引脚的输出寄存器
    #define  SCLK   //此添加引脚的输出寄存器
    #define  RCLK  //此添加引脚的输出寄存器
    driver_595(uint8_t data)
    {
        uint8_t i = 0;
        uint8_t temp = 0x80;
        
        for(i = 0; i<num;  i++)
        {
            if(data & temp)
            {
                SER = 1;
            }
            else
            {
                SER = 0;
            }       
            SCLK = 1;  
            _delay(10);
            data = data << 1;
            SCLK = 0;
        }
    
        RCLK = 0;
        _delay(10);
        RCLK = 1;
    }
    
    

    如果是多个595级联,则用下面的函数

    
    driver_multi_595(uint32_t data, uint8_t bitCnt)
    {
        uint8_t i = 0;
        uint32_t temp = 0x000001<<(num-1);
        
        for(i = 0; i<num;  i++)
        {
            if(data & temp)
            {
                SER = 1;
            }
            else
            {
                SER = 0;
            }       
            SCLK = 1;  
            _delay(10);
            data = data << 1;
            SCLK = 0;
        }
    
        RCLK = 0;
        _delay(10);
        RCLK = 1;
    }
    
    
    

    当然,如果使用的这个函数的时候bitCnt设为8,则和单个595是一样的

    需要注意的事情
    (1)这个是没有加使能控制, 如果上电对引脚电平以及功耗有要求,可以加上使能引脚的控制
    (2)如果系统本身的速度就不快,延时可以省略掉
    (3)SCLK,RCLK引脚在初始化结束的时候,一般立即设为低电平

    相关文章

      网友评论

        本文标题:74HC595的驱动

        本文链接:https://www.haomeiwen.com/subject/zcmroxtx.html