1 引言
I2C總線接口的顯示及鍵盤管理器件ZLG7290廣泛應(yīng)用于智能儀表的接口設(shè)計(jì)當(dāng)中,在具體應(yīng)用過程中,它接收所要顯示的數(shù)據(jù)并將其顯示在LED顯示器上,動態(tài)地掃描管理著顯示過程,該器件本身只需2根線就可與單片機(jī)實(shí)現(xiàn)接口,硬件連接簡便,軟件編程容易。尤其用在單片機(jī)擔(dān)負(fù)繁忙數(shù)據(jù)處理任務(wù)的系統(tǒng)中,可節(jié)省單片機(jī)用于顯示掃描的時間,更顯出其優(yōu)越性。
2 ZLG7290的特點(diǎn)及工作原理
2.1 ZLG7290的特點(diǎn)
如圖1所示,ZLG7290是一種多位LED顯示及鍵盤管理器件,采用流行的I2C總線接口,可與各種帶I2C總線的單片機(jī)方便接口,并可同時驅(qū)動8位LED。其內(nèi)部具有15×8 RAM的功能控制寄存器,可方便尋址。對每位數(shù)字可單獨(dú)控制、刷新。顯示亮度可數(shù)字控制,每位都具有閃爍使能控制功能。無需任何外部元件便可多路復(fù)用自動掃描。
ZLG7290的特點(diǎn)有:采用I2C串行接口;提供鍵盤中斷信號,方便與處理器接口;可驅(qū)動8位共陰數(shù)碼管或64只獨(dú)立的LED和64個按鍵:可控制掃描位數(shù),可控制任意數(shù)碼管的閃爍:提供數(shù)據(jù)譯碼和循環(huán)移位段尋址等控制;8個功能鍵均可檢測任意鍵的連擊次數(shù);無需外接元件即直接驅(qū)動LED,可擴(kuò)展驅(qū)動電流和驅(qū)動電壓。
2.2 ZLG7290的工作原理
2.2.1鍵盤的管理與控制
ZLG7290可采樣64個按鍵或傳感器,可檢測每個按鍵的連擊次數(shù),并具有如下功能:鍵盤去抖動處理;雙鍵互鎖處理,即當(dāng)有兩個以上按鍵被同時按下時,ZLG7290只采樣優(yōu)先級高的按鍵:連擊按鍵處理,即當(dāng)某個按鍵按下輸出一次鍵值后。如果該按鍵還未釋放,該鍵值連續(xù)有效,就像連續(xù)壓按該鍵一樣,這種功能稱為連擊。連擊次數(shù)計(jì)數(shù)器RepeatCnt可區(qū)別出單擊(某些功能不允許連擊如開關(guān))或連擊,判斷連擊次數(shù),可以檢測被按下時間。以防止某些功能的誤操作。
2.2.2顯示的管理與控制
在每個顯示刷新周期,ZLG7290按照掃描位數(shù)寄存器(ScanNum)指定的顯示位數(shù)N,把顯示緩存DpRam0-DpRamN的內(nèi)容按先后順序送入LED驅(qū)動器以實(shí)現(xiàn)動態(tài)顯示,減小N值可提高每位顯示掃描時間的占空比,以增強(qiáng)LED亮度,顯示緩存中的內(nèi)容不受影響。修改閃爍控制寄存器(FlashOnOff)可改變閃爍頻率和占空比亮、滅的時間。
ZLG7290有兩種控制方式,即寄存器映像控制和命令解釋控制。如上述對顯示部分的控制,寄存器映像控制是指直接訪問底層寄存器,實(shí)現(xiàn)基本控制功能,這些寄存器須字節(jié)操作。命令解釋控制是通過解釋命令緩沖區(qū)CmdBuf0-CmdBuf1中的指令間接訪問底層寄存器,實(shí)現(xiàn)擴(kuò)展控制功能,如對寄存器的位操作。
2.2.3內(nèi)部寄存器的定義
ZLG7290內(nèi)部可通過I2C總線訪問的寄存器地址范圍為00H-17H,任意寄存器都可按字節(jié)直接讀寫,也可以通過命令接口間接讀寫或按位讀寫。ZLG7290的控制和狀態(tài)查詢均通過讀/寫寄存器實(shí)現(xiàn),用戶只需像讀寫24C02內(nèi)的單元一樣操作即可實(shí)現(xiàn)對ZLG7290的控制。
?。?)系統(tǒng)寄存器(SystemReg):地址00H,復(fù)位值11110000B,系統(tǒng)寄存器可以保存ZLG7290系統(tǒng)狀態(tài)并可對系統(tǒng)運(yùn)行狀態(tài)進(jìn)行配置。
(2)鍵值寄存器(Key):地址01H,復(fù)位值00H,Key表示被按下鍵的鍵值,當(dāng)Key=0時表示沒有鍵被按下。
?。?)連擊次數(shù)計(jì)數(shù)器(RepeatCnt):地址02H。復(fù)位值00H,RepeatCnt=0時表示單擊鍵,RepeatCnt大于0時表示鍵的連擊次數(shù),用于區(qū)別出單擊鍵或連擊鍵,判斷連擊次數(shù)可以檢測被按下時間。
?。?)閃爍控制寄存器(FlashOnOff):地址0CH,復(fù)位值0111B/0111B,高4位表示閃爍時"亮"的時間,低4位表示閃爍時"滅"的時間,改變其值同時改變了閃爍頻率,也能改變"亮"和滅"的占空比。FlashOnOff的1個單位相當(dāng)于150 ms~250ms("亮"和"滅"的時間范圍為1-160000B相當(dāng)1個單位時間),所有像素的閃爍頻率和占空比相同。
?。?)顯示緩存寄存器(DpRam0-DpRam7):地址10H-17H,復(fù)位值00H,00H緩存中一位置1表示該像素亮,DpRam7-DpRam0的顯示內(nèi)容對應(yīng)Dig7-Dig0引腳。
2.2.4 I2C通信
ZLG7290的I2C接口傳輸速率可達(dá)32 kbit/s,容易與處理器接口,并提供鍵盤中斷信號,提高了主處理器的時間效率。有效的按鍵動作、普通鍵的單擊、連擊和功能鍵狀態(tài)的變化都會令系統(tǒng)寄存器SystemReg的KeyAvi位置1。INT引腳信號信號為低電平有效,用戶的鍵盤處理程序可由INT引腳低電平中斷觸發(fā),以提高程序效率,也可以不采樣INT引腳信號,節(jié)省系統(tǒng)的I/O數(shù)而采取輪詢系統(tǒng)寄存器KeyAvi位的方式,在讀鍵值寄存器時會使KeyAvi位清0,并會使INT引腳信號無效,為確保某個有效的按鍵動作及所有參數(shù)寄存器的同步性.可利用I2C通信的地址自動遞增功能。連續(xù)讀取RepeatCnt FunctionKey和Key寄存器。
3 儀表面板接口的硬件連接
圖2所示是ZLG7290作為儀表面板接口的硬件連接,圖中的8位LED作為智能儀表面板的顯示部分,鍵盤矩陣完成智能儀表面板的參數(shù)設(shè)定、修改按鍵,實(shí)現(xiàn)人機(jī)交互功能。
使用ZLG7290驅(qū)動數(shù)碼管顯示有兩種方法,一是向命令緩沖區(qū)(07H-08H)寫入復(fù)合指令,向07H寫入命令并選通相應(yīng)的數(shù)碼管,向08H寫入所要顯示的數(shù)據(jù),這種方法每次只能寫入一個字節(jié)的數(shù)據(jù),多字節(jié)數(shù)據(jù)的輸出可在程序中用循環(huán)寫入的方法實(shí)現(xiàn);二是向顯示緩存寄存器(10H-17H)寫入所要顯示的數(shù)據(jù)的段碼。段碼的編碼規(guī)則為從高位到低位為abcdefgdp,每次可寫入1~8個字節(jié)數(shù)據(jù)。
4 儀表面板接口中的軟件設(shè)計(jì)
下面是P89LPC932單片機(jī)的I2C接口部分的主程序:
圖3是ZLG7290在儀表面板應(yīng)用中的鍵盤掃描及顯示程序流程圖。該流程實(shí)現(xiàn)的功能是:上電復(fù)位后,數(shù)碼管顯示初值0-7,若有鍵按下,判斷是普通鍵還是功能鍵,若為功能鍵,則保持原來的顯示不變,使8個數(shù)碼管同時閃爍;若為普通鍵,則將鍵值顯示在第一個和第二個數(shù)碼管并同時閃爍,其他數(shù)碼管不閃爍,原有的顯示左移兩位。
5 結(jié)束語
ZLG7290作為鍵盤及顯示管理器件與單片微處理器的連接,無論是硬件接口還是軟件編程都非常簡單。該器件本身具有掃描顯示功能,不需要單片機(jī)進(jìn)行動態(tài)掃描,以使其將更多的時間用于數(shù)據(jù)處理。筆者已將ZLG7290應(yīng)用在所設(shè)計(jì)的產(chǎn)品當(dāng)中,并取得了較為滿意的效果。