高美珍,洪家平
(1.湖北師范學院 物理與電子科學學院,湖北 黃石 435002;2.湖北師范學院 計算機科學與技術學院 ,湖北 黃石 435002)
隨著智能儀器儀表在我國使用的越來越普遍, 智能儀表中要求使用漢字的情況也越來越多,這就涉及到智能儀表上漢字的輸入與顯示問題。由于智能儀表大多數是由8/16位的單片機組成,而這些單片機的I/O端口又非常有限,這就限制了智能儀器儀表系統中大量中文信息的輸入。如果要較好地解決上面的問題,一種途徑是通過設計一個通用PC機鍵盤與智能儀表系統中單片機的接口,通過這樣一個接口,就可以做到在智能儀器儀表中像在PC機一樣,任意輸入或顯示需要的大量漢字信息。
本系統采用通用PC機的PS/2鍵盤與51系列單片機AT89C52連接,使得通過PS/2鍵盤可以實現各種字符、數字的輸入,還可以采用拼音或五筆等輸入法實現漢字的輸入,并能將對應的漢字在LED顯示屏上顯示輸出。由于每一個漢字機內點陣碼約占32字節,這樣的話,常用漢字的點陣碼要占約256K的空間,所以將點陣信息直接存儲在容量小的AT89C52單片機中不太可能,如果使用帶漢字字模的片外存儲芯片,又會使得電路變得復雜。為了更有效地解決這一問題,本文采用帶內置漢字庫的ST7920控制器的液晶模塊12864M,通過ST7920模塊可以大大簡化電路的結構和編程方法,同時也可以提高編程效率和漢字顯示的速度。
通用計算機鍵盤按接口形式可分為PC/AT、 PS/2、 USB和無線接口等幾種類型。以PS/2 接口鍵盤為例,如圖 1是PS/2鍵盤的6 針引腳插頭。引腳及其功能定義見表1所示。

表1 PS/2鍵盤引腳及定義

圖1 PS/2鍵盤引腳排列圖
PS/2通用計算機鍵盤是一種以微控制器8048為主的智能鍵盤。微控制器8048 對鍵盤上的各鍵逐次掃描而得到某個鍵的動作信息,并且將其以掃描碼的形式保存到存儲器中。所以當鍵盤上有鍵按下或釋放按鍵時,鍵盤掃描就會檢測到該鍵的動作從而產生相應的掃描碼。通常掃描碼由一個或多個字節構成。下表2列出了主鍵盤區部分鍵的掃描碼:

表2 主鍵盤區部分按鍵及其對應的掃描碼
按鍵掃描碼存放到內部緩沖存儲器后,鍵盤與PC機通過串行通訊,將掃描碼傳輸給PC 機后即可進行鍵盤識別。
本系統采用的單片機是AT89C52,液晶顯示模塊是采用內置ST7920控制器的12864M, ST7920可以顯示英文、中文字符及圖形,內置有8000多個中文漢字(16×16點陣)、128個字符點陣顯示RAM(GDRAM)的模塊。
如圖2所示是智能儀表的CPU與液晶顯示模塊及PS/2鍵盤接口的硬件連接電路,通常液晶顯示模塊12864M與智能儀表系統中的單片機有并行和串行兩種連接方法,串行接口比較簡單,但是串行接口系統顯示文本的速度比較慢,而并行接口較串行復雜,但是并行接口可以大大提高顯示速度,所以本文所介紹的系統采用并行接口連接方式。
圖2中的液晶顯示模塊為12864M,它是內置有ST7920控制器的液晶顯示模塊,只要傳入所要顯示的英文字符的ASCII碼或漢字的區位編碼,液晶顯示模塊會自動計算其國標碼和機內碼,即可以根據編程命令立即將字符在指定位置顯示出來。
當首次給鍵盤上電時,鍵盤電路產生復位信號,鍵盤開始POST自檢。如果POST自檢無誤,鍵盤即向單片機發送0AAH,然后開始鍵盤掃描。單片機收到0AAH后,允許鍵盤傳送數據,將數據線和時鐘線置為高電平,此時數據線和時鐘線上的電平就由鍵盤控制。
接口時鐘信號由鍵盤提供,鍵盤完成掃描后,將掃描碼存放到內部緩沖存儲器中。在發送掃描碼之前,鍵盤先檢測鍵盤接口數據線和時鐘線上的電平;如果時鐘線為低電平,則表明單片機禁止鍵盤發送數據,鍵盤將掃描碼繼續保存在緩沖存儲器中;只有當數據線和時鐘線上電平均為高時,才允許鍵盤發送數據。此時鍵盤向主機發送數據和時鐘信號。
鍵盤發送數據時,先拉低數據線電平,再發送數據位等信號。每位數據在時鐘脈沖下降沿有效,在時鐘脈沖高電平期間變化。數據發送完畢后,保持數據線和時鐘線為高電平。
當單片機請求發送數據時,單片機將數據線拉低,鍵盤進入接收數據狀態并發送時鐘信號。每位數據均為時鐘脈沖上升沿有效,在時鐘脈沖低電平期間變化。鍵盤接收完數據后,將停止位拉低作為應答信號,表示數據接收完畢。

圖2 單片機與液晶顯示模塊及PS/2鍵盤接口的硬件連接原理圖
漢字輸入與顯示軟件主要分為幾大部分:即系統主程序、中斷服務程序、漢字輸入法程序、漢字顯示程序和鍵盤接口程序等模塊。
近日,云南省在“2018第四屆中國PPP融資論壇”舉辦了PPP項目推介會。云南16州市帶來了76個重點項目,總投資1643億元,涉及交通運輸、市政綜合開發、生態建設和環境保護、農林水以及教育、醫療、衛生、旅游等17個公共服務領域。
如圖3和圖4是系統主程序和中斷服務程序流程圖,圖3和圖4中的“其它主程序”用于智能儀表的其它事件處理,比如數據采集與處理程序、系統報警處理程序等。
系統主程序要求先對系統中的各部分進行初始化,然后置CLOCK、DATA線高電平為數據接收做準備,再對鍵盤進行POST上電自檢,如果AT89C52單片機接收到了OAAH信號,就允許鍵盤傳輸數據,此時即可打開并等待中斷響應,最后處理系統中的“其它主程序”。
如圖4所示是系統中斷服務程序流程圖,因為鍵盤有鍵被按下后,會觸發產生一個中斷信號,此時會直接調用接收鍵盤掃描碼子程序來接收被按下鍵的掃描碼,然后對該掃描碼進行奇偶校驗,奇偶校驗正確的話,就將DATA線拉低,調用鍵盤發送命令子程序重發掃描碼,如果奇偶校驗不正確,系統可以執行“其它主程序”后開中斷,再返回系統主程序。
漢字顯示程序模塊中重要的是對ST7920液晶顯示控制器進行編程控制。ST7920的漢字或文本顯示RAM提供4行(每行8個漢字)的空間,當寫入文本顯示RAM時,可以分別顯示CGROM、HCGROM與CGRAM的字型;ST7920A可以顯示三種字型,分別是半寬的HCGROM字型、CGRAM字型及中文CGROM字型。三種字型的選擇,由在DDRAM中寫入的編碼選擇,各種字型對應寫入命令的方法及詳細編碼范圍如表3.

表3 ST7920顯示的字型種類、命令及編碼范圍

圖3 系統主程序流程圖 圖4 系統中斷服務程序流程圖
下面一段程序就是顯示“歡迎使用ST7920”的代碼(初始化及其它部分代碼省略):
……
MOV A,#80H ;在LCD屏的第一行顯示漢字:歡迎使用ST7920
LCALL WRITE_COM
MOV R4, #8
MOV DPTR,#HZCODE
D: CLR A
MOVC A, @A+DPTR
INC DPTR
LCALL WRITE_DAT
CLR A
MOVC A, @A+DPTR
INC DPTR
LCALL WRITE_DAT
DJNZ R4, D
HZCODE: DB '歡迎使用ST7920'
由于本系統采用了與通用PS/2鍵盤的連接接口和由ST7920控制的液晶顯示模塊,不僅使得智能儀器系統中信息的大量輸入與顯示變得可能和簡捷,也使得智能儀器中鍵盤的數量得到了較大的擴充。本系統不僅可以輸入和顯示漢字,還可以輸入和顯示標點符號,以及其它的字符或符號。這些都為小容量ROM的智能儀器提供了一種漢字輸入與顯示的解決方法。
參考文獻:
[1]劉進軍,高美珍.基于單片機的漢字輸入法的實現[J].國外電子元器件,2006,(12):25~28.
[2]李少卿,周杏鵬.通用計算機鍵盤在智能化儀器中的軟硬件接口技術及應用[J].輕型汽車技術,2002,(9):42~44.
[3]徐卓農,張永忠.單片機系統中的漢字顯示[J].單片機與嵌入式系統應用,2001,(7):31~34.
[4]胡 偉,季曉衡.單片機C程序設計及應用實例[M].北京:北京航空航天出版社,2003.
[5]洪家平.中文圖形顯示控制芯片ST7920的原理與應用[J].國外電子元器件,2005,(1):38~40.