74HC595的驅動

74HC595的引腳如下


圖片.png

其邏輯如下


圖片.png

引腳說明


圖片.png

Ds :串行數(shù)據(jù)的輸入,簡稱SER
Q0-Q7:并行輸出,
Q7‘ :則是為了級聯(lián)多個595設置的引腳,級聯(lián)的話會連接到下一個595的Ds
OE : 芯片使能腳
SHCP:移位時鐘,一般簡稱 SCLK
STCP : 鎖存時鐘, 一般簡稱 RCLK

其中對于數(shù)據(jù)的流向,有些人一直搞不清楚,其實就可以按照下面畫的紅線去理解


圖片.png

按D7-D0組成的二進制序列數(shù)即為要從串口輸入的數(shù)據(jù)

具體的程序如下

#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級聯(lián),則用下面的函數(shù)


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


當然,如果使用的這個函數(shù)的時候bitCnt設為8,則和單個595是一樣的

需要注意的事情
(1)這個是沒有加使能控制, 如果上電對引腳電平以及功耗有要求,可以加上使能引腳的控制
(2)如果系統(tǒng)本身的速度就不快,延時可以省略掉
(3)SCLK,RCLK引腳在初始化結束的時候,一般立即設為低電平

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容