74hc595驅(qū)動(dòng)led點(diǎn)陣原理及74HC595在8x8LED點(diǎn)陣中的應(yīng)用
只有1個(gè)移位寄存器,但有1+8個(gè),共9個(gè)鎖存器。其中第1個(gè)鎖存器可以理解為中轉(zhuǎn)前置鎖存器,它并沒(méi)有連接Q0-Q7,后面8個(gè)鎖存器連接了Q0-Q7。
當(dāng)?shù)?次SCK和LCK時(shí),移位寄存器中=第1位數(shù)據(jù),前置鎖存器=第1位數(shù)據(jù)。但是并沒(méi)有進(jìn)入到Q0-Q7所對(duì)應(yīng)的鎖存器當(dāng)中去。Q0到Q7=NON。
當(dāng)?shù)?次SCK和LCK時(shí),移位寄存器中=第2位數(shù)據(jù),前置鎖存器=第2位數(shù)據(jù)。同時(shí)前置鎖存器把之前的第1位數(shù)據(jù)才更新到Q0對(duì)應(yīng)的鎖存器當(dāng)中去。此時(shí)Q0=第1位。Q1到Q7=NON。
當(dāng)?shù)?次SCK和LCK時(shí),移位寄存器中=第3位數(shù)據(jù),前置鎖存器=第3位數(shù)據(jù)。同時(shí)前置鎖存器把之前的第2位數(shù)據(jù)才更新到Q0對(duì)應(yīng)的鎖存器當(dāng)中去,Q0把之前的第1位數(shù)據(jù)給Q1,此時(shí)Q0=第2位。Q1=第1位。Q2到Q7=NON。
當(dāng)循環(huán)8次后(給出8個(gè)SCK和8個(gè)LCK后),移位寄存器中=第8位數(shù)據(jù),前置鎖存器=第8位數(shù)據(jù)。但Q0-Q6里分別對(duì)應(yīng)第7位-第1位數(shù)據(jù),第8位數(shù)據(jù)并沒(méi)有更新到Q0,同時(shí)Q7=NON。
這就是為什么給出循環(huán)8次的程序,總是不能顯示第8位數(shù)據(jù)的原因。
因此要全部顯示8位,需要再多給一次SCK和LCK。
那么問(wèn)題來(lái)了,最后給這次SCK和LCK,全部顯示8位了。但是:移位寄存器和前置鎖存器中又鎖定了8位之外的第9位無(wú)用數(shù)據(jù)。
那么我們就可以用到SCLR(10腳)了。
給SCLR一個(gè)下降沿就可以了。這個(gè)下降沿同時(shí)清空移位寄存器和前置鎖存器。但并不立即生效!只有產(chǎn)生下一個(gè)SCK時(shí),才生效。
所以,SCLR時(shí),前置鎖存器和Q0-Q7鎖存器依然鎖定的是原來(lái)的數(shù)據(jù),直到下一個(gè)SCK之前,不會(huì)改變輸出內(nèi)容。
而等我們下一次再傳送一個(gè)新的8位數(shù)據(jù)時(shí),在第一個(gè)SCK的時(shí)候,SCLR生效之后才接收新數(shù)據(jù),因?yàn)椴粫?huì)影響接收新數(shù)據(jù)。
這個(gè)過(guò)程我稱(chēng)之為“收口操作“。
74HC595在【8x8LED點(diǎn)陣】中的應(yīng)用
每個(gè)燈就相當(dāng)于坐標(biāo)圖中的一個(gè)點(diǎn),具有唯一獨(dú)特的坐標(biāo)位置,這樣就可以通過(guò)引腳的信號(hào)來(lái)控制每個(gè)燈的關(guān)和開(kāi)
col管腳連接的是P0的八個(gè)引腳,row管腳連接的是595的八位并行輸出端。
實(shí)驗(yàn)中采取的是逐列顯示,通過(guò)P0控制八列每列逐列顯示,其間通過(guò)595位移緩存器控制每列要亮的led燈。
74HC595是串入并出帶有鎖存功能移位寄存器.形象來(lái)說(shuō),14引腳是搬運(yùn)工,11是進(jìn)廠(chǎng)守門(mén)員,12是出廠(chǎng)守門(mén)員,11出現(xiàn)上升沿時(shí),從14引腳輸入一位數(shù)據(jù),一共重復(fù)八次12引腳上升沿時(shí),將之前進(jìn)來(lái)的八位數(shù)據(jù)分別從1到7引腳輸出OE為使能端,低電平時(shí)使輸出有效。