高美珍,洪家平
(1.湖北師范學院 物理與電子科學學院,湖北 黃石 435002;2.湖北師范學院 計算機科學與技術學院 ,湖北 黃石 435002)
隨著智能儀器儀表在我國使用的越來越普遍, 智能儀表中要求使用漢字的情況也越來越多,這就涉及到智能儀表上漢字的輸入與顯示問題。由于智能儀表大多數(shù)是由8/16位的單片機組成,而這些單片機的I/O端口又非常有限,這就限制了智能儀器儀表系統(tǒng)中大量中文信息的輸入。如果要較好地解決上面的問題,一種途徑是通過設計一個通用PC機鍵盤與智能儀表系統(tǒng)中單片機的接口,通過這樣一個接口,就可以做到在智能儀器儀表中像在PC機一樣,任意輸入或顯示需要的大量漢字信息。
本系統(tǒng)采用通用PC機的PS/2鍵盤與51系列單片機AT89C52連接,使得通過PS/2鍵盤可以實現(xiàn)各種字符、數(shù)字的輸入,還可以采用拼音或五筆等輸入法實現(xiàn)漢字的輸入,并能將對應的漢字在LED顯示屏上顯示輸出。由于每一個漢字機內(nèi)點陣碼約占32字節(jié),這樣的話,常用漢字的點陣碼要占約256K的空間,所以將點陣信息直接存儲在容量小的AT89C52單片機中不太可能,如果使用帶漢字字模的片外存儲芯片,又會使得電路變得復雜。為了更有效地解決這一問題,本文采用帶內(nèi)置漢字庫的ST7920控制器的液晶模塊12864M,通過ST7920模塊可以大大簡化電路的結(jié)構(gòu)和編程方法,同時也可以提高編程效率和漢字顯示的速度。
通用計算機鍵盤按接口形式可分為PC/AT、 PS/2、 USB和無線接口等幾種類型。以PS/2 接口鍵盤為例,如圖 1是PS/2鍵盤的6 針引腳插頭。引腳及其功能定義見表1所示。
表1 PS/2鍵盤引腳及定義
圖1 PS/2鍵盤引腳排列圖
PS/2通用計算機鍵盤是一種以微控制器8048為主的智能鍵盤。微控制器8048 對鍵盤上的各鍵逐次掃描而得到某個鍵的動作信息,并且將其以掃描碼的形式保存到存儲器中。所以當鍵盤上有鍵按下或釋放按鍵時,鍵盤掃描就會檢測到該鍵的動作從而產(chǎn)生相應的掃描碼。通常掃描碼由一個或多個字節(jié)構(gòu)成。下表2列出了主鍵盤區(qū)部分鍵的掃描碼:
表2 主鍵盤區(qū)部分按鍵及其對應的掃描碼
按鍵掃描碼存放到內(nèi)部緩沖存儲器后,鍵盤與PC機通過串行通訊,將掃描碼傳輸給PC 機后即可進行鍵盤識別。
本系統(tǒng)采用的單片機是AT89C52,液晶顯示模塊是采用內(nèi)置ST7920控制器的12864M, ST7920可以顯示英文、中文字符及圖形,內(nèi)置有8000多個中文漢字(16×16點陣)、128個字符點陣顯示RAM(GDRAM)的模塊。
如圖2所示是智能儀表的CPU與液晶顯示模塊及PS/2鍵盤接口的硬件連接電路,通常液晶顯示模塊12864M與智能儀表系統(tǒng)中的單片機有并行和串行兩種連接方法,串行接口比較簡單,但是串行接口系統(tǒng)顯示文本的速度比較慢,而并行接口較串行復雜,但是并行接口可以大大提高顯示速度,所以本文所介紹的系統(tǒng)采用并行接口連接方式。
圖2中的液晶顯示模塊為12864M,它是內(nèi)置有ST7920控制器的液晶顯示模塊,只要傳入所要顯示的英文字符的ASCII碼或漢字的區(qū)位編碼,液晶顯示模塊會自動計算其國標碼和機內(nèi)碼,即可以根據(jù)編程命令立即將字符在指定位置顯示出來。
當首次給鍵盤上電時,鍵盤電路產(chǎn)生復位信號,鍵盤開始POST自檢。如果POST自檢無誤,鍵盤即向單片機發(fā)送0AAH,然后開始鍵盤掃描。單片機收到0AAH后,允許鍵盤傳送數(shù)據(jù),將數(shù)據(jù)線和時鐘線置為高電平,此時數(shù)據(jù)線和時鐘線上的電平就由鍵盤控制。
接口時鐘信號由鍵盤提供,鍵盤完成掃描后,將掃描碼存放到內(nèi)部緩沖存儲器中。在發(fā)送掃描碼之前,鍵盤先檢測鍵盤接口數(shù)據(jù)線和時鐘線上的電平;如果時鐘線為低電平,則表明單片機禁止鍵盤發(fā)送數(shù)據(jù),鍵盤將掃描碼繼續(xù)保存在緩沖存儲器中;只有當數(shù)據(jù)線和時鐘線上電平均為高時,才允許鍵盤發(fā)送數(shù)據(jù)。此時鍵盤向主機發(fā)送數(shù)據(jù)和時鐘信號。
鍵盤發(fā)送數(shù)據(jù)時,先拉低數(shù)據(jù)線電平,再發(fā)送數(shù)據(jù)位等信號。每位數(shù)據(jù)在時鐘脈沖下降沿有效,在時鐘脈沖高電平期間變化。數(shù)據(jù)發(fā)送完畢后,保持數(shù)據(jù)線和時鐘線為高電平。
當單片機請求發(fā)送數(shù)據(jù)時,單片機將數(shù)據(jù)線拉低,鍵盤進入接收數(shù)據(jù)狀態(tài)并發(fā)送時鐘信號。每位數(shù)據(jù)均為時鐘脈沖上升沿有效,在時鐘脈沖低電平期間變化。鍵盤接收完數(shù)據(jù)后,將停止位拉低作為應答信號,表示數(shù)據(jù)接收完畢。
圖2 單片機與液晶顯示模塊及PS/2鍵盤接口的硬件連接原理圖
漢字輸入與顯示軟件主要分為幾大部分:即系統(tǒng)主程序、中斷服務程序、漢字輸入法程序、漢字顯示程序和鍵盤接口程序等模塊。
近日,云南省在“2018第四屆中國PPP融資論壇”舉辦了PPP項目推介會。云南16州市帶來了76個重點項目,總投資1643億元,涉及交通運輸、市政綜合開發(fā)、生態(tài)建設和環(huán)境保護、農(nóng)林水以及教育、醫(yī)療、衛(wèi)生、旅游等17個公共服務領域。
如圖3和圖4是系統(tǒng)主程序和中斷服務程序流程圖,圖3和圖4中的“其它主程序”用于智能儀表的其它事件處理,比如數(shù)據(jù)采集與處理程序、系統(tǒng)報警處理程序等。
系統(tǒng)主程序要求先對系統(tǒng)中的各部分進行初始化,然后置CLOCK、DATA線高電平為數(shù)據(jù)接收做準備,再對鍵盤進行POST上電自檢,如果AT89C52單片機接收到了OAAH信號,就允許鍵盤傳輸數(shù)據(jù),此時即可打開并等待中斷響應,最后處理系統(tǒng)中的“其它主程序”。
如圖4所示是系統(tǒng)中斷服務程序流程圖,因為鍵盤有鍵被按下后,會觸發(fā)產(chǎn)生一個中斷信號,此時會直接調(diào)用接收鍵盤掃描碼子程序來接收被按下鍵的掃描碼,然后對該掃描碼進行奇偶校驗,奇偶校驗正確的話,就將DATA線拉低,調(diào)用鍵盤發(fā)送命令子程序重發(fā)掃描碼,如果奇偶校驗不正確,系統(tǒng)可以執(zhí)行“其它主程序”后開中斷,再返回系統(tǒng)主程序。
漢字顯示程序模塊中重要的是對ST7920液晶顯示控制器進行編程控制。ST7920的漢字或文本顯示RAM提供4行(每行8個漢字)的空間,當寫入文本顯示RAM時,可以分別顯示CGROM、HCGROM與CGRAM的字型;ST7920A可以顯示三種字型,分別是半寬的HCGROM字型、CGRAM字型及中文CGROM字型。三種字型的選擇,由在DDRAM中寫入的編碼選擇,各種字型對應寫入命令的方法及詳細編碼范圍如表3.
表3 ST7920顯示的字型種類、命令及編碼范圍
圖3 系統(tǒng)主程序流程圖 圖4 系統(tǒng)中斷服務程序流程圖
下面一段程序就是顯示“歡迎使用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'
由于本系統(tǒng)采用了與通用PS/2鍵盤的連接接口和由ST7920控制的液晶顯示模塊,不僅使得智能儀器系統(tǒng)中信息的大量輸入與顯示變得可能和簡捷,也使得智能儀器中鍵盤的數(shù)量得到了較大的擴充。本系統(tǒng)不僅可以輸入和顯示漢字,還可以輸入和顯示標點符號,以及其它的字符或符號。這些都為小容量ROM的智能儀器提供了一種漢字輸入與顯示的解決方法。
參考文獻:
[1]劉進軍,高美珍.基于單片機的漢字輸入法的實現(xiàn)[J].國外電子元器件,2006,(12):25~28.
[2]李少卿,周杏鵬.通用計算機鍵盤在智能化儀器中的軟硬件接口技術及應用[J].輕型汽車技術,2002,(9):42~44.
[3]徐卓農(nóng),張永忠.單片機系統(tǒng)中的漢字顯示[J].單片機與嵌入式系統(tǒng)應用,2001,(7):31~34.
[4]胡 偉,季曉衡.單片機C程序設計及應用實例[M].北京:北京航空航天出版社,2003.
[5]洪家平.中文圖形顯示控制芯片ST7920的原理與應用[J].國外電子元器件,2005,(1):38~40.