串行顯示驅(qū)動(dòng)器PS7219及單片機(jī)的SPI接口設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在單片機(jī)的應(yīng)用系統(tǒng)中,為了便于人們觀察和監(jiān)視單片機(jī)的運(yùn)行情況,常常需要用顯示器顯示運(yùn)行的中間結(jié)果及狀態(tài)等等。因此顯示器往往是單片機(jī)系統(tǒng)必不可少的外部設(shè)備之一。常用的顯示器有很多種,其中LED(發(fā)光二極管顯示器)是應(yīng)用較多的一種,它特別適用于強(qiáng)光和光線極弱的場(chǎng)合。
要使LED顯示,必須提供段選碼和位選碼。傳統(tǒng)的硬件譯碼顯示接口廣泛采用由中央處理器CPU(如:Intel 8031)擴(kuò)展I/O口(如:8255),然后再使用邏輯門驅(qū)動(dòng)芯片(如7407等)驅(qū)動(dòng)相應(yīng)的位碼和段碼。這種設(shè)計(jì),芯片間連線十分復(fù)雜,系統(tǒng)工作可靠性不高,已越來(lái)越不適應(yīng)單片機(jī)系統(tǒng)集成化、小型化的發(fā)展要求。特別是系統(tǒng)并行擴(kuò)展I/O,其缺點(diǎn)十分明顯:
?。?)連線太多,系統(tǒng)連線復(fù)雜,印制板布線不方便;
(2)并行總線上掛靠的器件太多,系統(tǒng)工作的穩(wěn)定性和可靠性低;
?。?)體積較大,集成度不高。
正是由于上述原因,近年來(lái),各廠家相繼開發(fā)出了集成度較高、驅(qū)動(dòng)能力較強(qiáng)、驅(qū)動(dòng)位數(shù)較多、功能齊全的LED顯示驅(qū)動(dòng)器。
本文介紹一種低價(jià)位、高性能的多位LED顯示驅(qū)動(dòng)器PS7219芯片,以及它與單片機(jī)89C51具體的SPI接口設(shè)計(jì)與應(yīng)用軟件。
1 PS7219簡(jiǎn)介
PS7219是一種新型的串行接口的8位數(shù)字靜態(tài)顯示芯片。它是由武漢力源公司新推出的24腳雙列直插式芯片,采用流行的同步串行外設(shè)接口(SPI),可與任何一種單片機(jī)方便接口,并可同時(shí)驅(qū)動(dòng)8位LED(或64只獨(dú)立LED),其引腳圖如圖1所示。
PS7219內(nèi)部具有15×8RAM功能控制寄存器,可方便選址,對(duì)每位數(shù)字可單獨(dú)控制、刷新、不需重寫整個(gè)顯示器。顯示數(shù)字亮度可由數(shù)字進(jìn)行控制,每位具有閃爍使能控制位。當(dāng)引腳CON(13腳)置高電平,可禁止所有顯示,達(dá)到降低功耗的效果,但同時(shí)并不影響對(duì)控制寄存器的修改。PS7219還有一個(gè)掉電模式、一個(gè)允許用戶從1位數(shù)顯示到8位數(shù)顯示選擇的掃描界限寄存器和一個(gè)強(qiáng)迫所有LED接通的測(cè)試模式。另外,PS7219A型內(nèi)置一個(gè)可靠的uP監(jiān)控電路,可為外部提供一個(gè)脈寬140ms,觸發(fā)門限典型值為4.63V的高電平復(fù)位信號(hào)。
如果N個(gè)PS7219級(jí)聯(lián),可實(shí)現(xiàn)N×8位LED顯示。
2 PS7219引腳功能
PS7219引腳功能如表1所示。
3 PS7219工作過程
圖2為PS7219工作時(shí)序圖。由圖2可行,DIN是串行數(shù)據(jù)輸入端,在CLK的上升沿,一位數(shù)據(jù)被加載到內(nèi)部16位移位寄存器中,CLK端最高輸入頻率可達(dá)500kHz,在輸入時(shí)鐘信號(hào)的每個(gè)上升沿,均有1位數(shù)據(jù)由DIN移入到內(nèi)部寄存器中,LOAD用來(lái)裝載數(shù)據(jù),在LOAD的上升沿,16位串行輸入數(shù)據(jù)被鎖存到數(shù)字或控制寄存器中。LOAD必須在第16個(gè)時(shí)鐘上升沿的同時(shí)或之后,在下一個(gè)時(shí)鐘上升沿之前變高,否則數(shù)據(jù)將會(huì)丟失。
規(guī)定一組數(shù)據(jù)為16位二進(jìn)制數(shù)據(jù)包,其格式如下:
其中D15~D12位不用,D11~D8為內(nèi)部5個(gè)控制寄存器和8個(gè)LED顯示數(shù)據(jù)寄存器的地址,地址編碼如表2。D7~D0為5個(gè)控制寄存器命令字或8個(gè)LED數(shù)碼管待顯示的數(shù)據(jù)。因?yàn)榭刂萍拇嫫髋c顯示數(shù)據(jù)寄存器均獨(dú)立編址,所以可以通過程序單獨(dú)對(duì)每個(gè)寄存器進(jìn)行操作。一般情況下,程序先送控制命令,后向顯示寄存器送數(shù)據(jù),但必須注意,每16位為一組,從高位地址節(jié)最高位開始送起,直到低位數(shù)據(jù)字最后一位為止。
PS7219按5個(gè)控制寄存器規(guī)定的方向?qū)Υ@示的數(shù)字自動(dòng)掃描顯示,所以有必要對(duì)各控制寄存器的功能有所了解,現(xiàn)分述如下:
?。?)譯碼方式寄存器:對(duì)每個(gè)數(shù)字設(shè)置BCD碼B(0~9、E、H、L、P和-)或非代碼操作。寄存器中的每一位與一個(gè)數(shù)字對(duì)應(yīng)。邏輯高電平選擇代碼BCD譯碼,而低電平選擇旁路譯碼器。
?。?)顯示亮度寄存器:其中D7~D4位可任意,而D3~D0可選擇0000~1111。D3~D0的值越大,LED顯示器越亮。
?。?)掃描范圍寄存器:其掃描范圍寄存器設(shè)置所顯示數(shù)據(jù)的多少,可從1至8。它們一般以掃描速率1.5kHz、8位數(shù)據(jù)、多路復(fù)用方式顯示。
?。?)掉電控制寄存器:其中D7~D1位可任意,D0=0,關(guān)閉所有顯示器;D0=1,允許顯示。
?。?)顯示測(cè)試寄存器:其中D7~D1位可任意;D0=00,LED處于正常工作狀態(tài);D0=1,允許顯示。LED處于顯示測(cè)試狀態(tài)。
在送完控制字后,可根據(jù)實(shí)際需要調(diào)用顯示子程序,改變1~8個(gè)數(shù)據(jù)寄存器的內(nèi)容,完成顯示功能。
4 SPI接口
SPI是同步串行外設(shè)接口,主要用于與各種外圍器件以串行方式進(jìn)行通訊、交換信息。這些外圍器件可以是簡(jiǎn)單的TTL移位寄存器、或是復(fù)雜的LCD顯示驅(qū)動(dòng)器或A/D轉(zhuǎn)換子系統(tǒng)。SPI接口很容易與許多廠家的各種外圍器件直接相連。
它使用4條線:串行時(shí)鐘線(SCK)、主機(jī)輸入/從機(jī)輸出線(MISO)、主機(jī)輸出/從機(jī)輸入線(MOSI)、低電平有效的使能信號(hào)線(CS———)。如圖3所示。這樣,僅需3-4根數(shù)據(jù)線和控制線即可擴(kuò)展具有SPI接口的各種I/O器件。其典型結(jié)構(gòu)如圖3。
5 接口設(shè)計(jì)
5.1 硬件設(shè)計(jì)
PS7219的SPI接口是一個(gè)高速的同步串行I/O口,它允許1~8位的串行比特流以特定的傳輸速率移進(jìn)移出芯片。但這要求微處理器帶有SPI接口能力。對(duì)不帶SPI或相同接口能力的微處理器,需用軟件合成SPI操作來(lái)和PS7219接口,這里筆者以目前應(yīng)用廣泛的AT89C51為例,進(jìn)行了電路設(shè)計(jì),接口電路圖見圖4所示。
這里,89C51的P1.6作串行數(shù)據(jù)輸出,連接到PS7219的DIN腳,P1.7和P1.5通過程序分別模擬PS7219的時(shí)鐘脈沖CLK及數(shù)據(jù)加載LOAD信號(hào)。PS7219的SA~SG、SDP端連接到各LED數(shù)碼管對(duì)應(yīng)的a~f及dp端,DIG0~DIG3分別接4位LED數(shù)碼管的共陰極,以實(shí)現(xiàn)位選。另外,選用XICOR公司的X25045作為看門狗監(jiān)控電路。
實(shí)際上,數(shù)碼管的位數(shù)可在1~8位之間任意選擇,這可由寫入的掃描界線寄存器的命令字決定。注意,為了使由峰值數(shù)字驅(qū)動(dòng)器電流引起的紋波減到最小,需要在V+和GND之間盡可能靠近芯片的地方外接一個(gè)10μF的電解電容和一個(gè)0.1μF的瓷片電容。PS7219應(yīng)放在緊靠LED顯示器的地方,且連線盡可能短,兩個(gè)GND引腳都必須連接到地線上。
PS7219只需一組+5V電源和89C51的三個(gè)輸出口,且無(wú)附加電路,可驅(qū)動(dòng)1~8個(gè)LED顯示器,顯示亮度可調(diào),工作可靠。
5.2 軟件編程
在89C51的程序存儲(chǔ)器區(qū)開辟一些存儲(chǔ)單元,專門用來(lái)定義控制命令字,這些命令字的具體數(shù)值根據(jù)你要選擇的工作方式、顯示內(nèi)容、顯示位數(shù)等等來(lái)定義。
由于PS7219的控制寄存器和顯示寄存器均獨(dú)立編址,顯示程序?qū)嶋H上就是89C51在P1.7(CLK),P1.5(LOAD)時(shí)序的配合下不斷通過P1.6(DIN)向PS7219的相應(yīng)控制寄存器和數(shù)據(jù)顯示寄存器寫入16位二進(jìn)制數(shù)據(jù)包的過程。所以問題的關(guān)鍵在于編寫一個(gè)通用的寫入子程序,將VWO的內(nèi)容從高位到低位在P1.7(CLK)的作用下依次移入移位寄存器,最后由P1.5的上升沿(LOAD信號(hào))鎖存到相應(yīng)的內(nèi)部控制寄存器和數(shù)據(jù)顯示寄存器中去。寫入子程序的程序流程圖如圖5所示。
無(wú)論初始化PS7219的控制寄存器,還是在相應(yīng)的數(shù)碼管顯示數(shù)字,均可通過調(diào)用上述通用寫入子程序完成。
參考文獻(xiàn)
1 潘天紅.分布式控制系統(tǒng)智能控制器的研究.江蘇理工大學(xué)碩士研究生論文,2000.1
2 武漢力源.PS7219帶有高速串行接口的8位LED控制驅(qū)動(dòng)器.武漢:武漢力源電子股份有限公司,1999.2
3 潘天紅.SPI串行總線與單片機(jī)系統(tǒng)的優(yōu)化設(shè)計(jì).測(cè)控技術(shù),2001.2
4 李華.MCS51系列單片機(jī)實(shí)用接口技術(shù).北京:北京航空航天大學(xué)出版社,1999.12