☛ 功能說明
利用 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); } }