在一些智能化儀表中,人機接口通常是LED數(shù)碼管顯示器和小型鍵盤。常見的工作方式有兩種:一是直接使用系統(tǒng)中的 CPU對顯示器進行動態(tài)掃描和鍵盤檢測,為保證顯示的穩(wěn)定和鍵盤的及時響應,CPU需要頻繁的執(zhí)行動態(tài)掃描程序,顯然在CPU工作比較繁忙的情況下不太適用;二是用專用的顯示、鍵盤芯片如 8279、SAA1064等,這些芯片由于種種原因在實際應用中總有不便之處,如可顯示的位數(shù)均較少,價格較高等。Phlips公司的P87LPC76X 系列單片機屬51系列,其體積小、功能強、價格低廉,有很高的性價比,本文介紹一種利用該系列單片機構成的具有一定通用性的顯示、鍵盤電路。
圖1 硬件電路圖
P87LPC76X單片機簡介
P87LPC76X單片機共有P87LPC760、P87LPC761、 P87LPC762、 P87LPC764、P87LPC767、P87LPC768等型號,該芯片采用加速的51內核,在相同的時鐘頻率下,其速度是標準51的2倍,它們除引腳數(shù)目、存儲器容量和一些特殊的I/O功能外,其大部分功能均相同。下面以87LPC762為例進行說明。87LPC762為20腳封裝,內有2KB的程序存儲器,128B的數(shù)據(jù)存儲器,兩個16位定時/計數(shù)器,有一個標準串行通訊口,一個I2C接口,內部帶有振蕩器、上電復位和看門狗電路。在使用其內部振蕩器和上電復位電路的情況下,可以有多達18根I/O線;特別值得一提的是,它的I/O口都可有上拉,其中P0口還專門設有鍵盤中斷功能,若利用這些口線作為按鍵,則當有任一鍵按下時會產(chǎn)生相應的中斷。
硬件設計
圖2 寄存器的地址安排
D7 D6 D5 D4 D3 D2 D1 D0
D3-D0,顯示的LED位數(shù)
D4 數(shù)據(jù)格式,0-ASCII碼,1-BCD碼
D6 鍵盤工作方式,0-簡易按鍵,1-掃描鍵盤
D5,D7 保留
本設計用87LPC762組成一個最小的單片機系統(tǒng)。為使成本最低,結構最簡單,再考慮到其可靠性要求不是太高,故使用單片機內部的振蕩器、上電復位和看門狗電路,這樣可以有18根I/O線可供使用??紤]到驅動的LED數(shù)碼管的位數(shù)和單片機口線的驅動能力,通過 87LPC762的串行接口,使用移位寄存器進行擴展。本應用中,由于顯示的總位數(shù)為8位LED,故使用了2片移位寄存器74HC595,其中一片用作顯示的位控,一片用作段控。根據(jù)74HC 系列芯片的輸出驅動特性,可以不使用限流電阻,直接用74HC595的輸出驅動數(shù)碼管的段和各位。使用結果表明在電源電壓為5V,顯示的數(shù)碼管數(shù)目不是太多的條件下,有較好的亮度,并可長期穩(wěn)定工作。按鍵可直接連接在87LPC762的P0口,這樣其電路結構最為簡單,工作時可使用87LPC762的按鍵中斷方式,不用附加任何外部元件。但使用87LPC762在不用掃描方式時最多只可以有8個按鍵,這里利用P0.0~P0.7作為輸入,可以有8個按鍵,這在一般情況下已經(jīng)夠用;如需要的按鍵數(shù)目較多,可以使用掃描式鍵盤。顯示/鍵盤部分和系統(tǒng)中主CPU之間的數(shù)據(jù)交換使用I2C接口,87LPC762作為從器件;工作時,系統(tǒng)的主CPU只需將要顯示的數(shù)據(jù)通過I2C接口,以標準的格式發(fā)送到87LPC762即可。另外87LPC762使用一根I/O線作為向系統(tǒng)主CPU發(fā)送中斷申請的信號線,當有按鍵按下時,87LPC762分析識別后向系統(tǒng)主CPU發(fā)出中斷申請,系統(tǒng)主CPU響應中斷后,通過I2C接口,從87LPC762中讀出鍵值即可。本設計的硬件電路如圖1所示。
軟件設計
軟件設計主要包括顯示驅動程序的設計、鍵盤識別分析程序及I2C接口程序的設計。顯示程序設計比較簡單,讓87LPC762的串行接口工作在方式0,用一個定時/計數(shù)器工作在定時方式,按顯示的位數(shù)和掃描頻率確定定時常數(shù),打開定時中斷,P87LPC762進入中斷后通過串行口送出顯示的段控和位控碼。鍵盤可利用P87LPC762的按鍵中斷功能,在有按鍵按下時,進入中斷服務程序進行按鍵的抗抖、識別等,此處不再贅述。
下面主要介紹I2C接口和驅動軟件的接口設計及其考慮。87LPC762內部有完善的I2C接口部件,它可以工作在主方式,也可以工作在從方式,這里工作在從方式即可,其編程也較為簡單。在從方式下87LPC762需要有一個從地址,這個地址可以根據(jù)我們的需要選擇,但要注意不要和系統(tǒng)中其他的I2C器件地址相沖突。軟件的接口設計的和標準的I2C器件完全一樣,訪問時先寫入器件地址,然后是片內地址;訪問時既可以對某一特定的單元,也可以連續(xù)訪問若干單元。為方便系統(tǒng)中主CPU對鍵盤、顯示電路的訪問,該電路對外提供了一個標準的接口,即可以由主CPU通過 I2C訪問的10個寄存器,這些寄存器的地址安排如圖2所示。注意,這只是通過I2C接口訪問時使用的地址,并不是在87LPC762內部RAM中的真正地址。工作時,主CPU只須將要顯示的數(shù)據(jù)按地址通過I2C接口寫入,87LPC762即將其顯示出來。同樣當87LPC762識別到有按鍵按下,把該鍵的鍵碼放入寄存器中,然后向主CPU發(fā)出中斷申請,主CPU響應中斷通過I2C接口從87LPC762中指定的地址讀出鍵碼即可。由此可見,我們完全可以把87LPC762作為一片專用的鍵盤、顯示芯片來使用。為使該電路使用起來更為方便、靈活,還設置了一個控制寄存器,用來控制顯示的位數(shù)和方式、鍵盤工作方式等如圖3所示。在此基礎上還可以增加一些其他功能,如讓指定的位閃爍,長時間無鍵按下時關閉顯示,進入保護模式等??刂萍拇嫫饔脕砜刂骑@示/鍵盤電路的工作方式,其格式見圖3。
系統(tǒng)中的主CPU既可以采用有I2C接口的單片機;也可以使用沒有專用I2C接口的單片機,這種情況下可用軟件模擬I2C接口。
結語
利用P87LPC762構成的顯示、鍵盤電路具有結構簡單、功能強、與系統(tǒng)主CPU的接口簡單、使用方便、成本低等特點,在我們所研制的智能化儀表中已成功使用。實際上我們可以將P87LPC762、74HC595等芯片集成在一起做成一個專用的顯示和鍵盤模塊。
參考文獻
1 何立民. I2C應用系統(tǒng)設計.北京:航空航天大學出版社