使用74HC595目的是節(jié)省IO口,那么它是如何做到的呢?就是通過將MCU的一個IO口(數(shù)據(jù)輸出引腳)輸出的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù),轉(zhuǎn)換后的并行數(shù)據(jù)再通過74HC595的引腳輸出到片外外設(shè),所以使用時我們需要將MCU寄存器中的并行數(shù)據(jù)(通常是一個字節(jié))首先轉(zhuǎn)換成串行數(shù)據(jù),放置到MCU的一個數(shù)據(jù)引腳上,然后74HC595對這個引腳上的電平進行采樣,移位寄存后再次轉(zhuǎn)換成串行數(shù)據(jù)。所以你有沒有發(fā)現(xiàn)一個關(guān)鍵的步驟:MCU數(shù)據(jù)輸出引腳上的電平需要依據(jù)MCU寄存器的字節(jié)數(shù)據(jù)進行變化!!!所以你如果直接對ser賦值,只能不斷的往外送出同一個字節(jié)數(shù)據(jù)!!!
1.3 74HC595 簡介74HC595 它是一個芯片,是一個 8 位串行輸入、并行輸出的移位緩存器,那么它的功能就是將串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù),它的內(nèi)部具有八位移位寄存器和一個存儲器,還有三態(tài)輸出功能。如下圖所示 由上圖可知,輸入數(shù)據(jù)的最低位和 Q7 是對應(yīng)的、最高位和 Q0 是對應(yīng)的。
那么下面就講一下我們的 74HC595 芯片應(yīng)該怎么使用。首先說一下 MR 復(fù)位端 這個端口是主復(fù)位端口,引腳名稱 MR 上面有一根橫線代表是低電平有效,當它為低電平時它可以將移位寄存器內(nèi)的數(shù)據(jù)進行清零。通常我們把它接到 VCC 目的是防止數(shù)據(jù)的清零。 第二個端口是 DS 端口,這個端口與我們的 MCU 相連接,通過這個端口我們將串行數(shù)據(jù)傳入到移位寄存器當中
下面的是 SHCP 端口,這個端口是移位寄存器時鐘輸入,在它的上升沿時將輸入的串行數(shù)據(jù)移入到移位寄存器當中;需要注意的是:它是一個移位寄存器,也就是說當下一個脈沖到來時,上一個脈沖移入的數(shù)據(jù)就會往下進行移位。如果我們串行數(shù)據(jù)輸入 8 比特數(shù)據(jù),那么 8 比特數(shù)據(jù)輸入完之后,第一位輸入的數(shù)據(jù)就會自動移到最后面;如果我們一次輸入的數(shù)據(jù)超過 8 比特,那么最前面輸入的數(shù)據(jù)就會通過 Q7S 端口輸出,這個端口與下一個 74HC595 芯片的 DS 端口相連接,就相當于先前輸入的數(shù)據(jù)會輸入到下一個 74HC595 芯片當中
當我們的串行數(shù)據(jù)都輸入到 74HC595 芯片之后怎么控制它的輸出呢? 我們的 74HC595 芯片,它的內(nèi)部有一個八位存儲寄存器,它由 STCP 這個信號控制它,叫存儲寄存器時鐘;在存儲寄存器時鐘的上升沿時,74HC595 芯片會將移位寄存器當中的數(shù)據(jù)寫入到我們的存儲寄存器當中
當我們的輸出使能信號 OE 為有效的低電平時,74HC595 芯片就將存儲寄存器當中的數(shù)據(jù)通過 Q0、Q1、Q2、……、Q7 這八個端口傳輸出去
這八個端口就與我們的片外外設(shè)相連接,這樣就完成了串行輸入到并行輸出的一個轉(zhuǎn)換,這就是我們的 74HC595 芯片。 |