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