黃勇
摘要:74HC595是一串行輸入/串行輸出或并行輸出的8位芯片,介紹了該芯片在LED點(diǎn)陣顯示、雙色LED點(diǎn)陣顯示及多位LED點(diǎn)陣顯示應(yīng)用中的硬件設(shè)計(jì)及軟件設(shè)計(jì),對硬件設(shè)計(jì)及軟件設(shè)計(jì)的關(guān)鍵環(huán)節(jié)進(jìn)行了詳細(xì)闡述。
關(guān)鍵詞:74HC595;LED點(diǎn)陣;顯示系統(tǒng)
中圖分類號:G642? ? ? ? 文獻(xiàn)標(biāo)識碼:A? ? ? ? 文章編號:1009-3044(2018)36-0256-02
隨著單片機(jī)技術(shù)的不斷發(fā)展以及高亮度LED發(fā)光管的出現(xiàn),LED點(diǎn)陣顯示屏作為一種新型的傳播媒體迅速發(fā)展起來。LED顯示屏主要應(yīng)用在醫(yī)院、銀行、車站、碼頭、廣告窗等各種公共場所。LED點(diǎn)陣顯示屏具有成本低、亮度高、耗電省、使用壽命長、色彩鮮艷、視角廣、屏幕尺寸大、可視性好等特點(diǎn),是目前較為先進(jìn)的宣傳顯示媒體。LED點(diǎn)陣顯示屏的驅(qū)動需要占用多個(gè)并行口資源,而用于驅(qū)動LED點(diǎn)陣的51單片機(jī)只有常用的P0至P2三個(gè)并口,在實(shí)際應(yīng)用系統(tǒng)設(shè)計(jì)中往往采用74HC595進(jìn)行串行到并行的擴(kuò)展,這樣就節(jié)約了大量的并口資源。本文詳細(xì)介紹了74HC595芯片在LED點(diǎn)陣顯示、雙色LED點(diǎn)陣顯示及多位LED點(diǎn)陣顯示應(yīng)用中的硬件設(shè)計(jì)及軟件設(shè)計(jì)。
1 74HC595的結(jié)構(gòu)和工作原理
74HC595是8位串行輸入/輸出或串行輸入/并行輸出的器件。內(nèi)部具有8位移位寄存器、一個(gè)鎖存器、三態(tài)輸出。其功能結(jié)構(gòu)如圖1。
74HC595的工作過程如下:每當(dāng)SHcp上升沿到來時(shí),Ds引腳當(dāng)前電平值在移位寄存器中左移一位,在下一個(gè)上升沿到來時(shí)移位寄存器中的所有位都會向左移一位,同時(shí)Q7'也會串行輸出移位寄存器中高位的值,這樣連續(xù)進(jìn)行8次,就可以將一個(gè)數(shù)(8位)送到移位寄存器;然后當(dāng)STcp上升沿到來時(shí),移位寄存器的值將會被鎖存到鎖存器里,在OE引腳為低電平時(shí),數(shù)據(jù)從Q0~7引腳輸出。
2 LED點(diǎn)陣顯示
LED點(diǎn)陣顯示屏是由多個(gè)發(fā)光二極管組成。按點(diǎn)陣可以分為5×7、8×8以及16×16規(guī)格的顯示屏模塊。它是一種通過控制發(fā)光二極管的顯示方式,即靠燈的亮滅來顯示字符。一般用來顯示文字、圖形、圖像等各種信息。在物理連接上分共陰極連接和共陽極連接兩種。LED點(diǎn)陣結(jié)構(gòu)原理如圖2所示,顯示時(shí),先通過單片機(jī)的并口輸出位選擇信息0111111,即選中第一行,然后通過單片機(jī)另一個(gè)并口輸出第一行對應(yīng)的幀信息,1表示亮,0表示不亮。然后再輸出位選擇信息10111111,選擇第二行,再輸出第二行對應(yīng)的幀信息,如此,一直掃描到第8行。再軟件中,按一定的頻率依次輸出位選擇信號及每行的幀信息,利用人的視覺慣性就能看到穩(wěn)定的字符或圖形顯示。
3 74HC595在LED點(diǎn)陣顯示中的應(yīng)用
3.1 74HC595在單色LED點(diǎn)陣顯示中的應(yīng)用
從上面的LED點(diǎn)陣顯示原理上,可以看出,一個(gè)8×8點(diǎn)陣顯示就需要占用單片機(jī)的2個(gè)并口資源,在實(shí)際使用中,可以用2片74HC595芯片,一個(gè)74HC595芯片只需連接單片機(jī)的3位輸入輸出口即可輸出8位信息。具體連接是:74HC595芯片的Ds引腳(串行輸入)、SHcp引腳(移位寄存器的移位脈沖輸入)、STcp引腳(鎖存器的鎖存脈沖信號輸入)。輸出使能端OE接地。相關(guān)程序如下:
sbit LATCH =P1^0; 鎖存時(shí)鐘輸入
sbit SRCLK=P1^1;移位時(shí)鐘輸入
sbit SER= P1^2;位數(shù)據(jù)線輸入
void Send(unsigned char dat)
{unsigned char i;
for(i=0;i<8;i++)? //發(fā)送字節(jié)
{SRCLK=0;
SER=dat&0x80;? //發(fā)送dat的最高位
SRCLK_B=1;
dat<<=1;}
LATCH=0;? ? //鎖存
_nop_();
LATCH=1;}
3.2 74HC595在雙色LED點(diǎn)陣顯示中的應(yīng)用
一個(gè)雙色8×8LED點(diǎn)陣的驅(qū)動需要3個(gè)并口,一個(gè)并口輸出位選擇信號,一個(gè)并口輸出一種顏色的幀信息,另一個(gè)并口輸出另一個(gè)顏色的幀信息。顯然占用了單片機(jī)太多的并口資源。實(shí)際使用中,可以用3片74HC595,一片輸出位選擇信息,另二片輸出顏色的幀信息。二片輸出顏色的幀信息的74HC595在連接上要進(jìn)行級聯(lián)。即一片74HC595的輸入端連接在另一74HC595芯片的串行輸出端Q7,特別注意的是,二片芯片的SHcp引腳和STcp引腳需分別連接在一起,使用相同的移位脈沖源及相同的鎖存信號。在軟件設(shè)計(jì)中,需考慮級連的情況,先將二種顏色的幀信息發(fā)完,再進(jìn)行鎖存。相關(guān)程序如下:
void SendByte(unsigned char dat)
{? unsigned char i;
for(i=0;i<8;i++)
{SRCLK=0;
SER=dat&0x80;
SRCLK=1;
dat<<=1; }}
void Send2Byte(unsigned char dat1,unsigned char dat2)//發(fā)送2個(gè)字節(jié)
{? SendByte(dat1);
SendByte(dat2); }
void Out595(void)? ?//鎖存幀信息
{? LATCH=0;
_nop_();
LATCH=1;}
3.3 74HC595在多位LED點(diǎn)陣顯示中的應(yīng)用
在多位LED點(diǎn)陣的顯示系統(tǒng)中,也可以使用74HC595的級連來驅(qū)動每個(gè)LED點(diǎn)陣。設(shè)有4個(gè)8×8的LED點(diǎn)陣,若要在這四個(gè)LED上同時(shí)顯示4個(gè)字符的話,則需要5個(gè)并口資源。這就占用了單片機(jī)太多的并口資源。實(shí)際上,51單片機(jī)最多可以使用4個(gè)并口?,F(xiàn)在考慮使用5個(gè)74HC595,一個(gè)74HC595作為位選擇信號輸出,另外4個(gè)74HC595級連,每個(gè)74HC595驅(qū)動一個(gè)LED點(diǎn)陣。在硬件連接上,將四個(gè)LED點(diǎn)陣的位選擇端連接再一起,用來輸出幀信息的4個(gè)74HC595采用級聯(lián),芯片的SHcp引腳和STcp引腳需分別連接在一起。再軟件設(shè)計(jì)上需考慮到74HC595的級連,先發(fā)出4個(gè)LED的幀信息,然后再發(fā)出鎖存信號。相關(guān)程序如下:
void Send4Byte(unsigned char dat1,…,unsigned char dat4)//發(fā)送4個(gè)字節(jié)
{? SendByte(dat1);
SendByte(dat2);
SendByte(dat3);
SendByte(dat4);}
void Out595(void)? ?//鎖存幀信息
{? LATCH=0;
_nop_();
LATCH=1;}
4 結(jié)束語
本文詳細(xì)地闡述了74HC595在LED點(diǎn)陣顯示系統(tǒng)、雙色LED點(diǎn)陣顯示系統(tǒng)及多位LED點(diǎn)陣顯示系統(tǒng)中的硬件設(shè)計(jì)及軟件設(shè)計(jì)的關(guān)鍵環(huán)節(jié)。并給出了硬件連接方案和關(guān)鍵程序段。
參考文獻(xiàn):
[1] 劉援瓊.基于AT89C51單片機(jī)的LED點(diǎn)陣顯示系統(tǒng)設(shè)計(jì)[J].儀器儀表用戶,2015,22(1):21-23
[2] 楊富強(qiáng),朱利強(qiáng).基于單片機(jī)的LED 點(diǎn)陣動態(tài)顯示系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2013,26(1):101-102
[3] 漆強(qiáng).LED 矩陣顯示屏實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)[J]. 實(shí)驗(yàn)科學(xué)與技術(shù).2014,12(2):19-21.
[4] 陳晨,孫濤.LED 顯示屏控制器設(shè)計(jì)[J]. 電子世界,2013(3):26-26.
[通聯(lián)編輯:王力]