0 引言
在智能儀表中,經(jīng)常會(huì)用到鍵盤、數(shù)碼管等外設(shè)。因此,一個(gè)穩(wěn)定、占用系統(tǒng)資源少的人機(jī)對話通道設(shè)計(jì)非常重要。傳統(tǒng)的鍵盤與數(shù)碼管解決方案,由于鍵盤與數(shù)碼管是分離的,因而電路連接比較復(fù)雜,不管是獨(dú)立式鍵盤還是矩陣式鍵盤,都會(huì)浪費(fèi)微控制器的端口資源,而且都需要人為進(jìn)行去抖動(dòng)處理,且抗干擾性差。而數(shù)碼管部分,不管是靜態(tài)顯示方式還是動(dòng)態(tài)顯示方式,在不進(jìn)行鎖存器擴(kuò)展的前提下。仍然要占用8根I/O端口線,這將嚴(yán)重浪費(fèi)系統(tǒng)的端口資源。
ZLG7290可完全克服上述弊端。它采用I2C總線接口,與微控制器的連接僅需兩根信號(hào)線,硬件電路比較簡單。而且可以管理多達(dá)64只獨(dú)立的數(shù)碼管、64只獨(dú)立按鍵,并可提供自動(dòng)消除抖動(dòng)、連擊鍵計(jì)數(shù)等功能。這對于傳統(tǒng)的鍵盤與數(shù)碼管解決方案,無疑是不可想象的。強(qiáng)大的功能,豐富的資源,良好的接口,使得ZLG7290比傳統(tǒng)的鍵盤與數(shù)碼管解決方案且有更大的優(yōu)越性。因此,在現(xiàn)代智能儀表的設(shè)計(jì)中,通過ZLG7290可為系統(tǒng)設(shè)計(jì)工程師設(shè)計(jì)出良好的人機(jī)對話通道,從而提供了一種理想的解決方案。
1 ZLG7290的工作原理
ZLG7290的核心是一塊ZLG7290B芯片,它采用I2C接口,能直接驅(qū)動(dòng)8位共陰式數(shù)碼管,同時(shí)可掃描管理多達(dá)64只按鍵,實(shí)現(xiàn)人機(jī)對話的功能資源十分豐富。除具有自動(dòng)消除抖動(dòng)功能外,它還具有段閃爍、段點(diǎn)亮、段熄滅、功能鍵、連擊鍵計(jì)數(shù)等強(qiáng)大功能,并可提供10種數(shù)字和21種字母的譯碼顯示功能,用戶可以直接向顯示緩存寫入顯示數(shù)據(jù),而且無需外接元件即可直接驅(qū)動(dòng)數(shù)碼管,還可擴(kuò)展驅(qū)動(dòng)電壓和電流。此外,ZLG7290B的電路簡單,使用也很方便。
用戶按下某個(gè)鍵時(shí),ZLG7290的INT引腳會(huì)產(chǎn)生一個(gè)低電平的中斷請求信號(hào),讀取鍵值后,中斷信號(hào)就會(huì)自動(dòng)撤銷。正常情況下,微控制器只需要判斷INT引腳就可以得到鍵盤輸入的信息。微控制器可通過兩種方式得到用戶的鍵盤輸入信息。其一是中斷方式,該方式的優(yōu)點(diǎn)是抗干擾能力強(qiáng),缺點(diǎn)是要占用微控制器的一個(gè)外部中斷源。其二是查詢方式,即通過不斷查詢INT引腳來判斷是否有鍵按下,該方式可以節(jié)省微控制器的一根I/O口線,但是代價(jià)是I2C總線處于頻繁的活動(dòng)狀態(tài),消耗電流多并且不利于抗干擾。
2基于ZLG7290的無功補(bǔ)償控制器設(shè)計(jì)
由于采用了I2C總線接口,因而用ZLG7290與微控制器設(shè)計(jì)電力儀表的硬件電路連接非常簡單。它只需要兩根信號(hào)線(一根數(shù)據(jù)線SDA,一根時(shí)鐘信號(hào)線SCL)。但應(yīng)注意進(jìn)行I2C通信的雙方要共地,并應(yīng)用,INT傳遞鍵盤中斷信號(hào)。微控制器通過RST可以將ZLG7290復(fù)位。圖1是以電力系統(tǒng)中廣泛使用的低壓無功補(bǔ)償控制器的設(shè)計(jì)為實(shí)例,給出的ZLG7290的硬件連接電路圖。
本系統(tǒng)用ZLG7290與微控制器來構(gòu)成I2C總線通信系統(tǒng),SCT89C55本身雖沒有I2C總線控制器,但采用模擬I2C總線仍可進(jìn)行I2C總線通信。
低壓無功補(bǔ)償控制器的人機(jī)對話通道輸出中需要顯示的參數(shù)有電壓、電流、功率、功率因數(shù)、上限、下限、電容值、回路數(shù)、ABC三相等等,設(shè)計(jì)時(shí)可以分別用U、I、P、PF、-、-、C、LOOP、ABC等表示。ZLG7290可以顯示的值有0~9、0.、A、b、C、d、E、F、H、I、J、L、g、O、P、U、t、y、c、r、o,只要合理編碼,就可以滿足設(shè)備的顯示需求。本低壓無功補(bǔ)償控制器中的鍵盤有三種狀態(tài):一是菜單設(shè)置狀態(tài),可用變量menu_set表征,用戶可以觀察以前設(shè)置的一些參數(shù);二是手動(dòng)電容投切狀態(tài),可用變量cap_set表征,用戶可以直接手動(dòng)控制電容的投或切;三是參數(shù)設(shè)置狀態(tài),可用變量pra_set表征,用戶可以對參數(shù)進(jìn)行設(shè)置,且加減的步長可由用戶設(shè)定。這三個(gè)變量的組合幾乎可以涵蓋低壓無功補(bǔ)償控制器中鍵盤和數(shù)碼管的所有可能情況。程序流程圖中。這三個(gè)變量分別簡記為:m_set、c_set、p_set。圖2是其軟件程序流程圖。
[$page] 限于篇幅,本文僅給出模擬I2C總線引腳、部分初始化和鍵盤處理等三部分程序:
在人機(jī)對話通道的設(shè)計(jì)中。如果用戶還要完成更多、更復(fù)雜的功能(如分更多級(jí)單,進(jìn)行更多級(jí)的參數(shù)設(shè)置,顯示更多級(jí)參數(shù),菜單循環(huán)顯示,更多按鍵功能等),只需要再定義幾個(gè)狀態(tài)變量即可按照本文程序設(shè)計(jì)的思想來實(shí)現(xiàn)。簡言之,ZLG7290幾乎涵蓋了所有鍵盤與數(shù)碼管的解決方案,系統(tǒng)設(shè)計(jì)工