目前共有6篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:台灣正體▼
 
點擊 回復
661 5
【圖解】74HC595驅動8x8點陣
一派掌門 二十級
1樓 發表于:2016-7-28 19:00
一派掌門 二十級
2樓 發表于:2016-7-28 19:06

【程序範例】

void SerIn(unsigned char dat)
{
    unsigned char i;
    for (i = 0; i < 8; i++)
    {
        SHCLK = 0;
        if (dat & 0x80)
            SDAT = 1;
        else
            SDAT = 0;
        dat <<= 1;
        SHCLK = 1;
    }
}

 

void ParOut(void)
{
    STCLK = 0;
    STCLK = 1;
}

 

int main(void)
{
    SerIn(0xfe); // 選中第1列
    SerIn(0xf1); // 第一列的內容
    ParOut();

 

    SerIn(~BIT(1));
    SerIn(0xf2);
    delay(1000); // 等待1秒
    ParOut(); // 輸出

 

    while (1);
}

 

可見,雖然SerIn輸入了數據,但是如果不執行ParOut,數據就一直緩存在晶片中不輸出。

 
一派掌門 二十級
3樓 發表于:2016-7-28 19:19
 
一派掌門 二十級
4樓 發表于:2016-7-28 19:26

為了解決單片機燒寫、開機時晶片輸出混亂的問題,可以將OE引腳接到單片機上。

當OE=1時,晶片的輸出為高阻態;當OE=0時,晶片正常輸出。因此在單片機開機後可在main函數中將OE設為0,使能輸出。而單片機在燒寫、開機時,OE(所接的單片機I/O口)默認為高電平或高阻態,就禁用了輸出。

 
一派掌門 二十級
5樓 發表于:2016-7-28 19:28
SHCLK和STCLK兩個時鐘線,都是高電平時空閒,上升沿時執行命令。
 
一派掌門 二十級
6樓 發表于:2016-7-28 19:30
回復4樓 @巨大八爪鱼 的內容:
為了解決單片機燒寫、開機時晶片輸出混亂的問題,可以將OE引腳接到單片機上。
當OE=1時,晶片的輸出為高阻態;當OE=0時,晶片正常輸出。因此在單片機開機後可在main函數中將OE設為0...
所有HC595晶片的OE端都可以共用這一個I/O使能引腳,以節約單片機I/O口資源。
 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:661 回複數:5
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-7-28 19:30
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用共享創意姓名標示-相同方式分享 3.0 Unported許可協議進行許可。