杜 軍, 張丹瑞, 李彥卿
(上海船舶運(yùn)輸科學(xué)研究所 軍品分 所 ,上海200135)
隨著科學(xué)技術(shù)的不斷發(fā)展及液晶顯示技術(shù)的進(jìn)步,液晶顯示屏(Liquid Cr ystal Display,LCD)作為重要的人機(jī)接口被廣泛地應(yīng)用于各種嵌入式系統(tǒng)中,遍及儀器儀表、智能電表、水表、示波器、分析儀、手持設(shè)備、工業(yè)控制面板、通訊設(shè)備、藍(lán)牙、家用電器、醫(yī)療儀器、消費(fèi)數(shù)碼產(chǎn)品等顯示類產(chǎn)品。同樣,在艦船機(jī)艙自動(dòng)化領(lǐng)域也越來越多地應(yīng)用了LCD顯示模塊,例如主推進(jìn)監(jiān)控系統(tǒng)、電站監(jiān)控系統(tǒng)和油氣監(jiān)控系統(tǒng)均已開始大范圍使用LCD顯示模塊,作為控制、測(cè)量或報(bào)警顯示單元。通過調(diào)查發(fā)現(xiàn),大部分技術(shù)人員在開發(fā)LCD圖形界面時(shí),仍使用原始的開發(fā)方法,即直接用單片機(jī)語言或嵌入式軟件語言對(duì)LCD圖形進(jìn)行編程,程序編譯后運(yùn)行在LCD驅(qū)動(dòng)控制器中,然后在LCD上觀察圖形效果。因?yàn)樵诰幊糖安恢繪CD圖形顯示效果,要達(dá)到滿意的圖形顯示效果,往往要對(duì)程序進(jìn)行多次調(diào)整修改;而對(duì)于LCD動(dòng)態(tài)顯示的文字或數(shù)據(jù),編程前必須知道LCD動(dòng)態(tài)顯示的坐標(biāo),修改也很麻煩;用以上方法編程,LCD圖形顯示界面的編程時(shí)間占全部編程時(shí)間的1/2以上,效率非常低。為了提高LCD圖形編程效率,提出了一種在windows操作系統(tǒng)下通過計(jì)算機(jī)軟件實(shí)現(xiàn)LCD圖形繪制的新方法,并自動(dòng)生成可應(yīng)用于單片機(jī)語言或嵌入式軟件語言的文件,從而快速實(shí)現(xiàn)點(diǎn)陣LCD圖形界面的開發(fā)。
設(shè)計(jì)在windows操作系統(tǒng)下運(yùn)行的計(jì)算機(jī)繪圖及編譯軟件,可用鼠標(biāo)快速繪制LCD圖形仿真界面,效果與真實(shí)LCD顯示一致;編譯后產(chǎn)生特定格式的數(shù)據(jù)文件,包含顯示坐標(biāo)及顯示內(nèi)容等,能直接使用在各單片機(jī)和嵌入式系統(tǒng)語言中[4];單片機(jī)或嵌入式系統(tǒng)不再需要對(duì)LCD具體顯示位置和內(nèi)容編程,只需要對(duì)軟件產(chǎn)生的格式編寫通用的子程序即可。隨著LCD的廣泛應(yīng)用,其規(guī)格也越來越多,按顯示點(diǎn)陣分有兩大類:字符點(diǎn)陣,可用于中西文字符顯示;圖形點(diǎn)陣,可用于點(diǎn)陣圖形顯示,除能顯示中西文字符外,還能顯示各種圖形[1]。我們研究的設(shè)計(jì)方法是專門針對(duì)圖形點(diǎn)陣LCD的,圖形點(diǎn)陣LCD一般有如下規(guī)格(即分辨率):122×32、128×32、132×32、160×32、256×32、96×64、128×64、132×64、192×64、240×64、96×96、128×96、128×128、160×128、240×128、160×160、240×160、320×240等。
使用VC++進(jìn)行軟件設(shè)計(jì),完成以下功能:
1.可針對(duì)所有規(guī)格點(diǎn)陣的LCD,在軟件使用時(shí)應(yīng)可設(shè)置LCD的圖形點(diǎn)陣規(guī)格。
2.在設(shè)置的區(qū)域范圍內(nèi),可進(jìn)行各種畫圖操作,如畫線、畫矩形、畫圓和寫文字等,并可設(shè)置線寬和顏色。
3.在設(shè)置的區(qū)域范圍內(nèi)可進(jìn)行動(dòng)態(tài)數(shù)據(jù)和文字的設(shè)置,由于動(dòng)態(tài)數(shù)據(jù)和文字是根據(jù)不同情況顯示的,畫圖時(shí)不能確定內(nèi)容,所以在顯示動(dòng)態(tài)數(shù)據(jù)和文字的地方用繪制帶標(biāo)號(hào)的矩形表示[3](另外編寫1個(gè)文本文件,包含標(biāo)號(hào)要顯示的具體內(nèi)容,在編譯時(shí)直接調(diào)用)。
4.可對(duì)圖形進(jìn)行編譯,編譯規(guī)則見表1。
表1 圖形編譯規(guī)則
用戶針對(duì)不同的LCD控制器程序要求,可選擇保存為二進(jìn)制文件、單Byte文件和雙Byte文件,文件即可直接應(yīng)用于匯編語言、PL M語言和C語言等。
完成以上過程后,開發(fā)人員可把文件內(nèi)容拷貝入LCD控制程序中[2],然后按圖形類型編寫通用子程序(只需開發(fā)1次)。該編輯軟件的實(shí)質(zhì)為應(yīng)用通用的圖形顯示編輯規(guī)則,扮演編譯器的作用,生成計(jì)算機(jī)可直接執(zhí)行的編碼。在應(yīng)用開發(fā)中,可嵌入到各個(gè)高級(jí)計(jì)算機(jī)語言程序中,顯著節(jié)約了編程時(shí)間,縮短LCD應(yīng)用開發(fā)周期,提高效率。
在某型船的主推進(jìn)監(jiān)控系統(tǒng)中,應(yīng)用了點(diǎn)陣式液晶顯示器DMF50174。該LCD的規(guī)格為320×240,使用80C196 KC系列單片機(jī)驅(qū)動(dòng)LCD控制器。此LCD模塊的在系統(tǒng)中的主要功能是顯示車令、主機(jī)轉(zhuǎn)速、槳角命令和反饋等信息。
具體實(shí)現(xiàn)步驟如下:
1.在windows操作系統(tǒng)下打開自行開發(fā)的LCD畫圖及軟件編譯(可執(zhí)行文件名makelib.exe)。
2.設(shè)置LCD的點(diǎn)陣尺寸。用鼠標(biāo)點(diǎn)擊軟件顯示欄中的工具按鈕“”,然后移動(dòng)鼠標(biāo),使LCD的點(diǎn)陣尺寸為320×240(見圖1)。
3.根據(jù)實(shí)際需要在320×240區(qū)域畫各種圖形及寫文字。用鼠標(biāo)點(diǎn)擊軟件上方顯示欄中的工具按鈕,“”為畫矩形按鈕、“”為畫直線按鈕,“”為畫圓/橢圓按鈕“”為寫文字按鈕(見圖2)。另外,工具按鈕“”可設(shè)置圖形的線寬和顏色(見圖3)。工具按鈕“”可設(shè)置各圖形的X、Y坐標(biāo)或矩形的標(biāo)號(hào)(見圖4)。
圖1 設(shè)置LCD點(diǎn)陣尺寸示意圖
圖2 畫圖及寫文字示意圖
圖3 設(shè)置線寬和顏色對(duì)話框圖
圖4 設(shè)置圖形坐標(biāo)對(duì)話框圖
4.對(duì)完成的圖進(jìn)行編譯,產(chǎn)生單片機(jī)需要的格式文件。點(diǎn)擊軟件上方的Buil d菜單,彈出選擇文件的對(duì)話框,選擇雙Byte文本文件(見圖5)。確認(rèn)后,會(huì)彈出保存文件名對(duì)話框,輸入合適的文件名(見圖6)。產(chǎn)生的文件部分內(nèi)容如下:
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,00024 H,/*直線*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,00000 H,/*直線*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,0003CH,/*直線*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,00054 H,/*直線*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,0006CH,/*直線*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,0009CH,/*直線*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,000CCH,/*直線*/
0002 H,00001 H,00000 H,00008 H,00054 H,00008 H,000D4 H,/*直線*/
0002 H,00001 H,00000 H,0006DH,000E8 H,0006 DH,00038 H,/*直線*/
0002 H,00001 H,00000 H,00008 H,00054 H,00008 H,0008CH,/*直線*/
0002 H,00001 H,00000 H,00008 H,0006CH,00008 H,00054 H,/*直線*/
0003 H,00001 H,00000 H,00008 H,00008 H,00138 H,000E8 H,/*矩形*/
0003 H,00001 H,00000 H,00008 H,00084 H,00138 H,000B4 H,/*矩形*/
0003 H,00001 H,00000 H,0008CH,0006CH,000E4 H,000B4 H,/*矩形*/
圖5 保存文件格式對(duì)話框圖
圖6 保存文件名對(duì)話框圖
5.將上述產(chǎn)生的文件內(nèi)容拷貝到單片機(jī)程序中,并調(diào)用按規(guī)定格式編寫的圖形及文字子程序,編譯單片機(jī)程序并運(yùn)行,就可得圖7的效果。
圖7 圖形界面效果圖
目前此方法已成功應(yīng)用在多個(gè)監(jiān)控系統(tǒng)的LCD圖形設(shè)備中,相比傳統(tǒng)的開發(fā)方法,提高了工作效率,縮短了開發(fā)時(shí)間,使圖形的繪制和修改更為方便和直觀。
[1] 張新強(qiáng).點(diǎn)陣LCD驅(qū)動(dòng)顯控原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2010.
[2] 郭強(qiáng).液晶顯示模塊應(yīng)用與調(diào)試[M].北京:電子工業(yè)出版社,2010.
[3] 連悅.點(diǎn)陣式液晶顯示器DMF50174的應(yīng)用[J].東北煤炭技術(shù),1999(6):39-41.
[4] 劉建,夏勇軍.80C196KC與LCD模塊接口設(shè)計(jì)及其編程實(shí)現(xiàn)[J].微處理器,2004,6(3):61-63.