當(dāng)前位置:首頁(yè) > 顯示光電 > 顯示光電
[導(dǎo)讀]在自動(dòng)化儀器儀表、工業(yè)測(cè)控裝置等嵌入式計(jì)算機(jī)系統(tǒng)中,圖形液晶顯示模塊(點(diǎn)陣LCD)以顯示靈活、信息量大、可實(shí)現(xiàn)圖形界面等優(yōu)點(diǎn)而被廣泛的用做顯示終端。這些模塊大多提供并行數(shù)據(jù)接口,少量提供串行接口的模塊也要

在自動(dòng)化儀器儀表、工業(yè)測(cè)控裝置等嵌入式計(jì)算機(jī)系統(tǒng)中,圖形液晶顯示模塊(點(diǎn)陣LCD)以顯示靈活、信息量大、可實(shí)現(xiàn)圖形界面等優(yōu)點(diǎn)而被廣泛的用做顯示終端。這些模塊大多提供并行數(shù)據(jù)接口,少量提供串行接口的模塊也要求通信采用特殊協(xié)議,給系統(tǒng)的軟硬件設(shè)計(jì)都帶來(lái)較大不便。在顯示程序上,可移植通用的嵌入式圖形用戶界面GUI軟件,如MiniGUI,OpenGUI等,以簡(jiǎn)化軟件設(shè)計(jì)工作。但是,這些GUI軟件移植繁瑣,有些源代碼不公開,一般需要數(shù)百KB的存儲(chǔ)量,對(duì)于一些只要求實(shí)現(xiàn)簡(jiǎn)單界面的工控應(yīng)用來(lái)說(shuō)過(guò)于龐大,有一些功能(如鼠標(biāo)操作、支持漢字輸入法等)也不十分必要。
針對(duì)上述問題,本文結(jié)合LCD顯示模塊STN6448D-4K設(shè)計(jì)了一種滿足工控要求的模塊化圖形液晶顯示單元。硬件上通過(guò)51單片機(jī)搭建轉(zhuǎn)換電路,實(shí)現(xiàn)模塊并行訪問時(shí)序到串行顯示命令的轉(zhuǎn)換。軟件上結(jié)合串行接口命令和通信協(xié)議,用C語(yǔ)言編寫了具有消息驅(qū)動(dòng)機(jī)制的簡(jiǎn)單通用圖形用戶界面GUI程序,可以方便地移植到各種工控嵌入式系統(tǒng)。
1.標(biāo)準(zhǔn)串口擴(kuò)展的設(shè)計(jì)
液晶顯示模塊STN6448D-4K支持640×480點(diǎn)陣4096偽彩色顯示,用戶接口為8位并行口。圖1為模塊的RS-232硬件擴(kuò)展接口結(jié)構(gòu),在AT89C51單片機(jī)最小系統(tǒng)基礎(chǔ)上,擴(kuò)展了一片MAX232。單片機(jī)通過(guò)總線與模塊STN6448D-4K的控制器相連。單片機(jī)接收并分析串口指令,調(diào)用相應(yīng)函數(shù)完成對(duì)LCD的各種顯示控制。為減少串行通信數(shù)據(jù)量,還擴(kuò)展了一片2MB的Flash存儲(chǔ)器AM29F016D,用于存儲(chǔ)BMP圖像和字符庫(kù)、漢字庫(kù)。通常采用的字庫(kù)有漢字庫(kù)文件Hzk16f.bin(16×16點(diǎn)陣)、Hzk24k.bin(24×24點(diǎn)陣),ASCII碼文件ASC16.bin(16×8點(diǎn)陣)、ASC24.bin(24×12點(diǎn)陣)等,位圖文件可以根據(jù)需要自行制作和增減。所有的字庫(kù)和位圖均通過(guò)RS-232接口從PC機(jī)下載到Flash存儲(chǔ)器中,根據(jù)每個(gè)文件的存儲(chǔ)首地址索引可以完成字符、漢字、位圖的顯示。
500)this.style.width=500;" border="0" />

2.串口指令和通信軟件設(shè)計(jì)
按照STN6448D-4K的編程格式編寫清屏、畫點(diǎn)、畫線、畫矩形、寫字符(ASCII字符、漢字)、加載位圖等基本繪圖函數(shù)的單片機(jī)程序比較簡(jiǎn)單,這里不作說(shuō)明。單片機(jī)在完成初始化、清屏操作后,將就緒狀態(tài)信息傳遞給嵌入式系統(tǒng)的CPU,并等待從RS-232傳來(lái)的繪圖指令。每一個(gè)繪圖指令,都是一個(gè)繪圖命令幀,與一個(gè)繪圖函數(shù)相對(duì)應(yīng)。
單片機(jī)收到一個(gè)完整的繪圖指令后根據(jù)指令碼識(shí)別不同的繪圖操作,調(diào)用相應(yīng)的函數(shù)完成顯示控制。由于各個(gè)函數(shù)的指令長(zhǎng)短不一,單片機(jī)需要判斷出一條指令的結(jié)束;而且單片機(jī)完成LCD操作需要時(shí)間,硬件上又沒有一個(gè)“BUSY”信號(hào)來(lái)指示單片機(jī)暫時(shí)不能接收指令。故程序設(shè)計(jì)上需保證傳輸同步和可靠性。
2.1 顯示命令幀的封裝
每一個(gè)繪圖指令都封裝成一個(gè)繪圖命令幀,封裝時(shí)依據(jù)以下3條規(guī)則:
(1)在每一個(gè)繪圖指令的結(jié)尾加上標(biāo)志字節(jié)END,封裝成一個(gè)繪圖命令幀。一個(gè)完整的繪圖命令幀包括繪圖指令碼、繪圖函數(shù)參數(shù)以及END標(biāo)志。標(biāo)志字節(jié)END的編碼為0x55;
(2)在幀數(shù)據(jù)(指令的有效數(shù)據(jù))中的某一個(gè)字節(jié)如果與END(0x55)相同,則將這個(gè)字節(jié)轉(zhuǎn)換為(0xDE,0xCF)的2字節(jié)序列。其中0xDE稱為轉(zhuǎn)義字符TRANS,0xCF為數(shù)據(jù)與END標(biāo)志相同時(shí)轉(zhuǎn)義后的替換符TRANS_REP。
(3)如果幀數(shù)據(jù)中某個(gè)字節(jié)與轉(zhuǎn)義字符(0xDE)本身相同,則將其更換為(0xDE,0xDE)2字節(jié)序列。
    如果不考慮轉(zhuǎn)義字符,一個(gè)完整的繪圖命令幀格式如下:

500)this.style.width=500;" border="0" />

其中:CMD指令碼,P1-Pn為n個(gè)字節(jié)數(shù)據(jù)。例如畫水平線函數(shù)對(duì)應(yīng)的命令幀中的字符依次為:0xCA, X0_H, X0_L, Y_H, Y_L, X1_H, X1_L, CLR。其中0xCA為指令碼(對(duì)每個(gè)函數(shù)唯一),之后的6個(gè)為坐標(biāo)參數(shù),CLR為顏色。
2.2 接收狀態(tài)機(jī)
單片機(jī)的接收中斷處理采用接收狀態(tài)機(jī)機(jī)制,狀態(tài)轉(zhuǎn)換如圖2所示。
三個(gè)狀態(tài)的含義為:
狀態(tài)0: 準(zhǔn)備接收一幀數(shù)據(jù)
狀態(tài)1: 正在接收一幀數(shù)據(jù),且上一次接收到的字節(jié)不是轉(zhuǎn)義字符
狀態(tài)2: 正在接收一幀數(shù)據(jù),且上一次接收到的字節(jié)是轉(zhuǎn)義字符
接收一個(gè)字節(jié)后,根據(jù)當(dāng)前狀態(tài)和接收到的字符a,進(jìn)行狀態(tài)轉(zhuǎn)換,并舍棄轉(zhuǎn)義字符等多余字節(jié),將有效數(shù)據(jù)放入接收緩沖數(shù)組。當(dāng)接收到有效的結(jié)束符END后,單片機(jī)將置緩沖滿標(biāo)志。單片機(jī)讀到該標(biāo)志,即可分析緩沖區(qū)中的數(shù)據(jù),執(zhí)行相應(yīng)顯示操作,并在操作后,清除緩沖滿標(biāo)志并向嵌入式系統(tǒng)的主CPU發(fā)出可以接收數(shù)據(jù)的應(yīng)答字符(0x55)。
500)this.style.width=500;" border="0" />

3.圖形用戶界面(GUI)程序設(shè)計(jì)
前述設(shè)計(jì)已能滿足簡(jiǎn)單的顯示要求。在此基礎(chǔ)上本文使用C語(yǔ)言編寫了通用的GUI程序,設(shè)計(jì)出類VB的包含窗體和簡(jiǎn)單控件的界面,實(shí)現(xiàn)簡(jiǎn)單的可視化的操作:如按鈕按壓、文本輸入、標(biāo)簽顯示、選擇框選擇、軟件菜單、窗體加載、位圖顯示、控件的Tab聚焦等。程序采用分層和模塊化的思想,其分層結(jié)構(gòu)如圖3所示。這樣,可以減少程序間的耦合,便于程序的完善和升級(jí)。
500)this.style.width=500;" border="0" />

3.1 邏輯設(shè)備層基本繪圖函數(shù)(LD.C)
最底層的硬件設(shè)備層的繪圖函數(shù)(HD.C)是顯示命令幀的發(fā)送,采用液晶屏的絕對(duì)坐標(biāo)(屏左上角為坐標(biāo)零點(diǎn))繪圖,邏輯設(shè)備層的函數(shù)則是基于用戶定義的當(dāng)前“窗口”相對(duì)坐標(biāo)(窗口左上角為坐標(biāo)零點(diǎn))繪圖,窗口的位置任意。這里說(shuō)的“窗口”就是當(dāng)前顯示的可操作范圍,也稱為“窗口上下文”。
繪圖工具函數(shù)是一些內(nèi)聯(lián)函數(shù)和宏定義,創(chuàng)建當(dāng)前的窗口上下文,完成絕對(duì)坐標(biāo)與相對(duì)坐標(biāo)相互轉(zhuǎn)換,進(jìn)行繪圖元素的移動(dòng)、復(fù)制,設(shè)置字間距、行間距等。基于窗口裁減的繪圖函數(shù)調(diào)用各種繪圖工具函數(shù)和硬件設(shè)備層的繪圖函數(shù),實(shí)現(xiàn)了點(diǎn)、線、漢字、字符、平面和3D矩形框的繪制,位圖加載等,并將超出窗口范圍的部分裁減掉(忽略不畫)。
3.2 窗體/控件的設(shè)計(jì)
窗體(Form)和控件全部由結(jié)構(gòu)體來(lái)定義。簡(jiǎn)單控件的共性是均為矩形框(平面的或3D的),所以都可以由公共結(jié)構(gòu)體Gwidget加上各自的個(gè)性化屬性和行為方式派生得到。控件屬性(或狀態(tài))包括:按下/彈起(對(duì)Button控件)、聚焦/失去焦點(diǎn)、允許/禁止接受用戶輸入(區(qū)分Label和Text)等。基于GWidget可以派生Button、Label、Text、SelBox、menu等控件。Gwidget結(jié)構(gòu)體成員包括“窗口”信息、控件ID(唯一標(biāo)識(shí)一個(gè)控件)、控件屬性/狀態(tài)、控件邊界寬度(實(shí)現(xiàn)3D顯示)、默認(rèn)的控件消息響應(yīng)函數(shù)指針(如ButtonOnMsg)。
窗體(Form)既是一個(gè)獨(dú)立的實(shí)體,又是控件的容器,用于管理屬于它的所有控件并傳遞和響應(yīng)消息。其結(jié)構(gòu)體成員主要有:窗口上下文、消息響應(yīng)函數(shù)指針、標(biāo)題字符串指針、所含的控件數(shù)組指針、所含控件數(shù)、當(dāng)前聚焦的控件ID等。
3.3 GUI消息響應(yīng)機(jī)制
針對(duì)具體的應(yīng)用要求,可以設(shè)計(jì)出各種各樣的窗體(界面),每一個(gè)窗體包含多個(gè)控件。有的控件可以接受用戶字符串和數(shù)字輸入(Text控件)。這些窗體通過(guò)軟件菜單組織起來(lái)。菜單為多叉樹結(jié)構(gòu),最下一級(jí)菜單指向一個(gè)窗體或執(zhí)行某個(gè)功能。同一級(jí)菜單包含并管理一個(gè)或多個(gè)菜單項(xiàng)。菜單結(jié)構(gòu)體成員主要有:包含各菜單項(xiàng)的數(shù)組指針、菜單項(xiàng)個(gè)數(shù)、指向上級(jí)菜單的指針(可以為空)等,而菜單項(xiàng)結(jié)構(gòu)體則包含指向下一級(jí)菜單的指針(可以為空)、指向一個(gè)窗體的指針(可以為空)、消息響應(yīng)函數(shù)指針等。主程序和GUI之間的消息傳遞(或函數(shù)調(diào)用)機(jī)制如圖4所示,虛線空心箭頭指示消息的傳遞方向。
500)this.style.width=500;" border="0" />

4.結(jié)束語(yǔ)
本文設(shè)計(jì)的液晶顯示單元具有RS-232接口,不僅在接入嵌入式系統(tǒng)方面提供了方便,也為在系統(tǒng)設(shè)計(jì)時(shí),使用PC機(jī)并行地進(jìn)行顯示軟件設(shè)計(jì)提供了途徑。用C語(yǔ)言編寫的GUI程序可以方便地移植到各種基于嵌入式操作系統(tǒng)的應(yīng)用中,占用空間小,使用簡(jiǎn)單,通用性好,能滿足一些較復(fù)雜界面顯示的要求,其已經(jīng)在筆者開發(fā)的多個(gè)嵌入式系統(tǒng)中得到應(yīng)用。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉