1. 程式人生 > >AD硬體電路模組設計——PS7219及微控制器的SPI介面電路

AD硬體電路模組設計——PS7219及微控制器的SPI介面電路

1 PS7219簡介
PS7219是一種新型的序列介面的8位數字靜態顯示晶片。它是由武漢力源公司新推出的24腳雙列直插式晶片,採用流行的同步序列外設介面(SPI),可與任何一種微控制器方便介面,並可同時驅動8位LED(或64只獨立LED),其引腳圖如圖1所示。

                                                                                    引腳圖
  PS7219內部具有15×8RAM功能控制暫存器,可方便選址,對每位數字可單獨控制、重新整理、不需重寫整個顯示器。顯示數字亮度可由數字進行控制,每位具有閃爍使能控制位。當引腳CON(13腳)置高電平,可禁止所有顯示,達到降低功耗的效果,但同時並不影響對控制暫存器的修改。PS7219還有一個掉電模式、一個允許使用者從1位數顯示到8位數顯示選擇的掃描界限暫存器和一個強迫所有LED接通的測試模式。另外,PS7219A型內建一個可靠的uP監控電路,可為外部提供一個脈寬140ms,觸發門限典型值為4.63V的高電平復位訊號。

  如果N個PS7219級聯,可實現N×8位LED顯示。

2 PS7219引腳功能


PS7219引腳功能如表1所示。

                                      ps7219引腳功能

3  PS7219工作過程
圖2為PS7219工作時序圖。由圖2可行,DIN是序列資料輸入端,在CLK的上升沿,一位資料被載入到內部16位移位暫存器中,CLK端最高輸入頻率可達500kHz,在輸入時鐘訊號的每個上升沿,均有1位資料由DIN移入到內部暫存器中,LOAD用來裝載資料,在LOAD的上升沿,16位序列輸入資料被鎖存到數字或控制暫存器中。LOAD必須在第16個時鐘上升沿的同時或之後,在下一個時鐘上升沿之前變高,否則資料將會丟失。

  規定一組資料為16位二進位制資料包,其格式如下:

       ps7219工作時序圖


  其中D15~D12位不用,D11~D8為內部5個控制暫存器和8個LED顯示資料暫存器的地址,地址編碼如表2。D7~D0為5個控制暫存器命令字或8個LED數碼管待顯示的資料。因為控制暫存器與顯示資料暫存器均獨立編址,所以可以通過程式單獨對每個暫存器進行操作。一般情況下,程式先送控制命令,後向顯示暫存器送資料,但必須注意,每16位為一組,從高位地址節最高位開始送起,直到低位資料字最後一位為止。

      地址編碼

  PS7219按5個控制暫存器規定的方向對待顯示的數字自動掃描顯示,所以有必要對各控制暫存器的功能有所瞭解,現分述如下:

  (1)譯碼方式暫存器:對每個數字設定BCD碼B(0~9、E、H、L、P和-)或非程式碼操作。暫存器中的每一位與一個數字對應。邏輯高電平選擇程式碼BCD譯碼,而低電平選擇旁路譯碼器。

  (2)顯示亮度暫存器:其中D7~D4位可任意,而D3~D0可選擇0000~1111。D3~D0的值越大,LED顯示器越亮。

  (3)掃描範圍暫存器:其掃描範圍暫存器設定所顯示資料的多少,可從1至8。它們一般以掃描速率1.5kHz、8位資料、多路複用方式顯示。

  (4)掉電控制暫存器:其中D7~D1位可任意,D0=0,關閉所有顯示器;D0=1,允許顯示。

  (5)顯示測試暫存器:其中D7~D1位可任意;D0=00,LED處於正常工作狀態;D0=1,允許顯示。LED處於顯示測試狀態。

  在送完控制字後,可根據實際需要呼叫顯示子程式,改變1~8個數據暫存器的內容,完成顯示功能。

4 SPI介面


SPI是同步序列外設介面,主要用於與各種外圍器件以序列方式進行通訊、交換資訊。這些外圍器件可以是簡單的TTL移位暫存器、或是複雜的LCD顯示驅動器或A/D轉換子系統。SPI介面很容易與許多廠家的各種外圍器件直接相連。

  它使用4條線:序列時鐘線(SCK)、主機輸入/從機輸出線(MISO)、主機輸出/從機輸入線(MOSI)、低電平有效的使能訊號線(CS———)。如圖3所示。這樣,僅需3-4根資料線和控制線即可擴充套件具有SPI介面的各種I/O器件。其典型結構如圖3。

spi介面

5 介面設計

5.1 硬體設計

PS7219的SPI介面是一個高速的同步序列I/O口,它允許1~8位的序列位元流以特定的傳輸速率移進移出晶片。但這要求微處理器帶有SPI介面能力。對不帶SPI或相同介面能力的微處理器,需用軟體合成SPI操作來和PS7219介面,這裡筆者以目前應用廣泛的AT89C51為例,進行了電路設計,介面電路圖見圖4所示。

  這裡,89C51的P1.6作序列資料輸出,連線到PS7219的DIN腳,P1.7和P1.5通過程式分別模擬PS7219的時鐘脈衝CLK及資料載入LOAD訊號。PS7219的SA~SG、SDP端連線到各LED數碼管對應的a~f及dp端,DIG0~DIG3分別接4位LED數碼管的共陰極,以實現位選。另外,選用XICOR公司的X25045作為看門狗監控電路。

  實際上,數碼管的位數可在1~8位之間任意選擇,這可由寫入的掃描界線暫存器的命令字決定。注意,為了使由峰值數字驅動器電流引起的紋波減到最小,需要在V+和GND之間儘可能靠近晶片的地方外接一個10μF的電解電容和一個0.1μF的瓷片電容。PS7219應放在緊靠LED顯示器的地方,且連線儘可能短,兩個GND引腳都必須連線到地線上。

  PS7219只需一組+5V電源和89C51的三個輸出口,且無附加電路,可驅動1~8個LED顯示器,顯示亮度可調,工作可靠。

介面電路圖

5.2 軟體程式設計
在89C51的程式儲存器區開闢一些儲存單元,專門用來定義控制命令字,這些命令字的具體數值根據你要選擇的工作方式、顯示內容、顯示位數等等來定義。

  由於PS7219的控制暫存器和顯示暫存器均獨立編址,顯示程式實際上就是89C51在P1.7(CLK),P1.5(LOAD)時序的配合下不斷通過P1.6(DIN)向PS7219的相應控制暫存器和資料顯示暫存器寫入16位二進位制資料包的過程。所以問題的關鍵在於編寫一個通用的寫入子程式,將VWO的內容從高位到低位在P1.7(CLK)的作用下依次移入移位暫存器,最後由P1.5的上升沿(LOAD訊號)鎖存到相應的內部控制暫存器和資料顯示暫存器中去。寫入子程式的程式流程圖如圖5所示。

  無論初始化PS7219的控制暫存器,還是在相應的數碼管顯示數字,均可通過呼叫上述通用寫入子程式完成。

           寫入子程式