☛ 功能說明

利用 Arduino UNO 開發板及 74HC164 晶片控制一個七段顯示器計數,計數範圍由 0 ~ F。

74HC164 晶片功能介紹:

8 位串入、並出移位寄存器

74HC164、74HCT164 是高速矽門 CMOS 器件,與低功耗肖特基型 TTL ( LSTTL ) 器件的引腳相容。 74HC164、74HCT164 是 8 位邊沿觸發式移位寄存器,串行輸入數據,然後並行輸出。 數據通過兩個輸入端 ( DSA 或 DSB )之一串行輸入;任一輸入端可以用作高電平使能端,控制另一輸入端的數據輸入。 兩個輸入端或者連接在一起,或者把不用的輸入端接高電平,一定不要懸空。

時鐘 ( CP ) 每次由低變高時,數據右移一位,輸入到 Q0, Q0 是兩個數據輸入端 ( DSA 和 DSB ) 的邏輯與,它將上升時鐘沿之前保持一個建立時間的長度。

主複位 ( MR ) 輸入端上的一個低電平將使其它所有輸入端都無效,同時非同步地清除寄存器,強制所有的輸出為低電平。

引腳資訊:DIP14、SO14、SSOP14 和 TSSOP14 封裝的引腳配置。

引腳說明:

H = HIGH ( 高 )電平

h = 先於低-至-高時鐘躍變一個建立時間 ( set-up time ) 的 HIGH ( 高 )電平

L = LOW ( 低 ) 電平

l = 先於低-至-高時鐘躍變一個建立時間 ( set-up time ) 的 LOW ( 低 ) 電平

q = 小寫字母代表先於低-至-高時鐘躍變一個建立時間的參考輸入 ( referenced input ) 的狀態

↑ = 低-至-高時鐘躍變

☛ 使用材料

Arduino UNO R3 開發板 × 1、74HC164 IC × 1、共陽極七段顯示器 5161BS × 1。

☛ 電路圖及麵包板接線圖

☛ 程式碼

const unsigned char DuanMa[16]=                  //定義共陽極七段顯示器段碼 0~F
                    {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
                     0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
int CLK=2;
int DAT=3;
 
void setup() 
{
     pinMode(CLK,OUTPUT);                      //迴圈設置,把對應的埠都設置成輸出
     pinMode(DAT,OUTPUT);
     Serial.begin(9600);
}

void loop() 
{
     for(int i=0;i<=15;i++)                    //循環顯示 0 ~ F 
     {
         SendByte(DuanMa[i]);  
         delay(1000);                          //調節延時 1 秒
     }

}

void SendByte(unsigned char dat)
{
     static unsigned char i;
     for(i=0;i<=15;i++)
     {
         digitalWrite(CLK,0);
         digitalWrite(DAT,bitRead(dat,15-i));  //高位先輸出
         digitalWrite(CLK,1);
     }
}