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