版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第14章嵌入式界面μC/GUI
-2-本章目標(biāo)了解μC/GUI的特點掌握μC/GUI結(jié)構(gòu)和功能掌握μC/GUI配置的常用設(shè)置掌握μC/GUI常用功能和函數(shù)熟悉μC/GUI層次結(jié)構(gòu)掌握μC/GUI移植方法-3-μC/GUI簡介
μC/GUI是一種用于嵌入式應(yīng)用的圖形支持軟件。它被設(shè)計用于為任何使用一個圖形LCD的應(yīng)用提供一個有效的、不依賴于處理器和LCD控制器的圖形用戶接口。它能工作于單任務(wù)或多任務(wù)的系統(tǒng)環(huán)境下,專用的操作系統(tǒng)或者任何的商業(yè)的實時操作系統(tǒng),當(dāng)然,也包括同一個公司出品的μC/OS系列。μC/GUI適用于與所有的CPU,因為它100%的由ANSI的C語言編寫。-4-μC/GUI簡介
--μC/GUI特點μC/GUI可以使用于任何尺寸的物理和虛擬顯示,任何LCD控制器和CPU,其特點包括如下:一般特點
支持任何8/16/32位的CPU。支持帶控制器(需要驅(qū)動程序)的任何(單色,灰度級或者彩色)LCD。在小屏幕顯示時可以不帶LCD控制器。通過配置宏支持任何接口。顯示大小可配置。字符和位圖可以寫到LCD的任何點上,而不必是偶數(shù)的字節(jié)地址。程序在大小和速度兩方面得到優(yōu)化。允許編譯時跳轉(zhuǎn)(Compiletimeswitches)以獲得不同的優(yōu)化。對于較慢的LCD控制器,LCD能夠緩存到內(nèi)存中,并且最小化訪問次數(shù),以提高顯示效率。支持虛擬顯示,虛擬顯示可以比實際顯示更大。-5-μC/GUI簡介
--μC/GUI特點圖形庫
支持不同顏色深度的位圖。帶有位圖轉(zhuǎn)換器。完全無浮點(floating-point)使用。線/點快速繪制(不使用浮點運算)。圓/多邊形的快速繪制。支持不同的繪圖模式。-6-μC/GUI簡介
--μC/GUI特點字體
支持多種不同像素高度的字體。能夠定義新字體并且簡單鏈接。只有用于應(yīng)用程序的字體才實際上鏈接到執(zhí)行結(jié)果,使得ROM的最少化使用。字體能在x和y方向進(jìn)行縮放。支持字體轉(zhuǎn)化器,主機(jī)系統(tǒng)(比如微軟的Windows)上的任何可用字體都可以轉(zhuǎn)化。字符串/數(shù)值輸出程序。程序能夠以任何字體顯示十進(jìn)制,二進(jìn)制和十六進(jìn)制的數(shù)值。程序能夠以任何字體編輯十進(jìn)制,二進(jìn)制和十六進(jìn)制的數(shù)值。-7-μC/GUI簡介
--μC/GUI特點窗口管理器(WM)
包括剪切在內(nèi)的完全窗口管理。窗口外的客戶區(qū)域無法重寫覆蓋。窗口可以移動和改變大小。支持回調(diào)函數(shù)(Callbackroutines)(可選用法)。占用RAM少(大約每個窗口20字節(jié))??捎肳idgets(窗口對象,或稱為控件)。支持觸摸屏和鼠標(biāo)。-8-μC/GUI簡介
--μC/GUI特點PC端工具
模擬器和觀察器。位圖轉(zhuǎn)化器。字體轉(zhuǎn)化器。-9-μC/GUI簡介
--μC/GUI文件結(jié)構(gòu)以μC/GUI3.90版本為例,其文件結(jié)構(gòu)如圖14-1所示。主要有三個文件夾,分別為Sample、Start和Tool文件夾,其內(nèi)容如下:Sample文件夾:主要為官方提供的各種例程源文件和演示文件。Start文件夾:主要為應(yīng)用程序,配置GUI的源文件以及一些輸出即系統(tǒng)文件夾。Tool文件夾:主要為一些相關(guān)工具軟件。-10-μC/GUI簡介
--μC/GUI文件結(jié)構(gòu)其中,Start文件夾下的GUI文件夾最為重要,這是因為這個文件夾存放有μC/GUI的全部源文件和函數(shù)原型其文件結(jié)構(gòu)如圖14-2所示。-11-μC/GUI簡介
--μC/GUI文件結(jié)構(gòu)其中,各文件夾的含義如表14-1所示。目錄含義是否可選Config配置文件是GUI/AntiAlias抗鋸齒支持否GUI/ConvertMono用于B/W(黑白兩色)及灰度顯示的色彩轉(zhuǎn)換程序否GUI/ConvertColor用于彩色顯示的色彩轉(zhuǎn)換的程序否GUI/CoreμC/GUI內(nèi)核文件否GUI/Font字體文件否GUI/LCDDriverLCD驅(qū)動文件否GUI/Mendev存儲器件支持是GUI/Touch觸摸屏支持是GUI/Widget視窗控件庫是GUI/WM視窗管理器是-12-μC/GUI簡介
--μC/GUI層次結(jié)構(gòu)在μC/GUI中軟件也是分層次設(shè)計的,不同層面的軟件完成不同功能,其層次結(jié)構(gòu)如圖14-3所示。-13-μC/GUI功能
--文本顯示μC/GUI基于模塊化設(shè)計,各個模塊包括了大量的功能實現(xiàn)函數(shù),主要包括豐富的圖形庫、多窗口、多任務(wù)機(jī)制,窗口管理及豐富的窗口控件類,多字符集和多字體支持,多種創(chuàng)建圖形文件支持,鼠標(biāo)、觸摸屏支持等靈活自由配置等等。【示例14-1】文本顯示GUI_DispString("Helloworld!");上述代碼將在當(dāng)前文本坐標(biāo)顯示文本“Helloworld!”。-14-μC/GUI功能
--2-D圖形庫μC/GUI包括有一個完整的2-D圖形庫,提供兩種繪圖模式,NORMAL模式和XOR模式。默認(rèn)為NORMAL模式,即顯示屏的內(nèi)容被繪圖所完全覆蓋。在XOR模式下,當(dāng)繪圖覆蓋在上面時,顯示屏的內(nèi)容反相顯示。-15-μC/GUI功能
--字體μC/GUI提供的普通字體大部分是標(biāo)準(zhǔn)字體。μC/GUI支持ASCII,ISO8859-1及Unicode。當(dāng)前μC/GUI版本提供4種字體:等寬位圖字體。比例位圖字體。帶有2bpp(位/像素)用于建立反混淆信息的比例位圖字體。帶有4bpp(位/像素)用于建立反混淆信息的反混淆字體。字體的選擇在GUIConf.h中定義,可以通過更改宏定義來選擇字體,代碼如下。【示例14-2】選擇字體#defineGUI_DEFAULT_FONT&GUI_Font6x8-16-μC/GUI功能
--顏色μC/GUI支持黑/白,灰度(不同亮度的單色)及彩色顯示屏。改變LCD配置可以適應(yīng)不同的顯示屏。顯示屏的顏色分為邏輯顏色和物理顏色,含義如下:邏輯顏色:在應(yīng)用中處理的顏色。一種邏輯顏色總是定義為一個RGB數(shù)值,這是一個24位的數(shù)值,其中每個基色8位,如:0xBBGGRR。因此,白色應(yīng)該為0xFFFFFF,黑色應(yīng)該為0x000000,大紅為0xFF0000。物理顏色:顯示屏實際顯示的顏色。與邏輯顏色一樣,同樣定義為一個24位的RGB數(shù)值。在實際運行的時候,邏輯顏色映射到物理顏色。-17-μC/GUI功能
--顏色除自定義顏色之外,在μC/GUI中預(yù)先定義了一些標(biāo)準(zhǔn)的顏色定義顏色說明GUI_BLACK黑0x000000GUI_BLUE藍(lán)0xFF0000GUI_GREEN綠0x00FF00GUI_CYAN青0xFFFF00GUI_RED紅0x0000FFGUI_MAGENTA洋紅0x8B008BGUI_BROW褐0x2A2AA5GUI_DARKGRAY深灰0x404040GUI_GRAY灰0x808080GUI_LIGHTGRAY淺灰0xD3D3D3GUI_LIGHTBLUE淡藍(lán)0xFF8080GUI_LIGHTGREEN淡綠0x80FF80GUI_LIGHTCYAN淡青0x80FFFFGUI_LIGHTRED淡紅0x8080FFGUI_LIGHTMAGENTA淡洋紅0xFF80FFGUI_YELLOW黃0x00FFFFGUI_WHITE白0xFFFFFF-18-μC/GUI功能
--存儲設(shè)備通常,如果在繪制兩個圖案時,如果它們有重疊的部分,繪制過程會發(fā)生閃爍現(xiàn)象。在μC/GUI中,提供了一個叫做存儲設(shè)備的功能,來避免這種閃爍。如果使用存儲設(shè)備功能,存儲設(shè)備內(nèi)會對圖案重疊部分進(jìn)行“與”運算。只有在“與”運算執(zhí)行完畢后最終結(jié)果才顯示在屏幕上,具有無閃爍的優(yōu)點。注意,存儲設(shè)備是一個附加(可選)的軟件項目,不隨μC/GUI的基本軟件包一起發(fā)布。存儲設(shè)備的軟件包位于子目錄GUI\Memdev下。-19-μC/GUI功能
--視窗管理器視窗管理器(簡稱為WM)提供了一套函數(shù),可以對許多窗口進(jìn)行創(chuàng)建,移動,調(diào)整大小及其它操作。它也可以提供更低層的支持,通過管理顯示屏上的窗口的層,及給應(yīng)用程序發(fā)送信號來進(jìn)行視窗的管理和操作。μC/GUI的視窗管理器是一個獨立的(可選的)的軟件項目,它沒有包括進(jìn)μC/GUI基本軟件包里。視窗管理器的軟件位于子目錄“GUI\WM”下。-20-μC/GUI功能
--窗口對象控件是具有對象性質(zhì)的窗口,是構(gòu)造用戶接口的元素。建立控件需要使用視窗管理器。μC/GUI所支持的控件如表14-11所示。名稱說明BUTTON可以按下的按鈕。在按鈕上可以顯示文本或位圖。CHECKBOX復(fù)選框,提供多個選項。EDIT單行文本編輯框,提示用戶輸入數(shù)字或文本。FRAMEWIN框架窗口,建立典型的。LISTBOX列表框,當(dāng)被選中的項目會高亮顯示。PROGBAR進(jìn)度條,用于觀察。RADIOBUTTON單選按鈕,可以選擇。同一時間只有一個按鈕被選中。SCROLLBAR滾動條,可以是水平或垂直的。SLIDER滑動條,用于改變數(shù)值。TEXT文本控件,典型應(yīng)用在對話框中。-21-μC/GUI功能
--窗口對象一個控件根據(jù)通過調(diào)用WM的API函數(shù)WM_Exec()來完成繪制。如果在程序中沒有調(diào)用WM_Exec(),就必須調(diào)用WM_Paint()函數(shù)來繪制控件。在多任務(wù)環(huán)境中的μC/GUI,一個后臺任務(wù)通常用于調(diào)用WM_Exec()并更新控件。這樣就不必手工調(diào)用WM_Paint()。當(dāng)一個控件的屬性被改變時,控件的窗口(或者它的一部分)被標(biāo)記為無效,但是它不會立即重繪。因此,這部分代碼運行非常快。重繪在后面的時間通過WM完成,或通過為控件調(diào)用WM_Paint()函數(shù)來強(qiáng)制執(zhí)行。控件本質(zhì)上是一個窗口,所以視窗管理器API函數(shù)都適用于它們。控件的句柄作為hWin參數(shù),控件像其它窗口一樣處理。-22-μC/GUI功能
--窗口對象1.BUTTON:按鈕控件
按鈕控件常作為觸摸屏主要的用戶接口部件使用。按鈕可以顯示文本或者一幅位圖,如圖14-4所示。-23-μC/GUI功能
--窗口對象2.CHECKBOX:復(fù)選框控件
復(fù)選框一般用來多項選擇。如果復(fù)選框被禁止,它會以灰色顯示。-24-μC/GUI功能
--窗口對象3.EDIT:文本編輯框控件文本編輯框通常用作文本輸入主要的用戶接口文本編輯可以用編輯區(qū)輸入二進(jìn)制,十進(jìn)制,或十六進(jìn)制數(shù)值。類似于復(fù)選框,編輯區(qū)如果被禁止的則會以灰色顯示-25-μC/GUI功能
--窗口對象4.FRAMEWIN:框架窗口控件框架窗口給應(yīng)用程序提供了一個PC的應(yīng)用程序—窗口外形。它們由一個環(huán)繞的框架、一個標(biāo)題欄和一個客戶區(qū)組成。-26-μC/GUI功能
--窗口對象5.LISTBOX:列表框控件
列表框用于在一個列表中選擇一個元素。一個列表框可以以一個無邊框的窗口的形式創(chuàng)建?;蛘咦鳛橐粋€框架窗口控件的子窗口。當(dāng)列表框的項目被選中,它們會以高亮顯示-27-μC/GUI功能
--窗口對象6.PROGBAR:進(jìn)度條控件進(jìn)度條通常在可視化應(yīng)用中使用。例如,一個容器的填充容積指示器或一個油壓指示器。與進(jìn)度條相關(guān)的函數(shù)在文件PROGBAR*.c當(dāng)中。-28-μC/GUI功能
--窗口對象7.RADIO:單選按鈕控件單選按鈕類似于復(fù)選框,用于選項的選擇。當(dāng)一個單選按鈕開啟或被選中后,在它上面會顯示一個點。與復(fù)選框不同的是在同一時間,用戶只能選擇一個單選按鈕。當(dāng)一個按鈕被選擇時,控件中其它的按鈕被關(guān)閉,一個單選按鈕控件可以包括幾個按鈕,它們總是垂直排列的。
-29-μC/GUI功能
--窗口對象8.SCROLLBAR:滾動條控件滾動條用于滾動一個列表框,可以以水平或垂直方式創(chuàng)建。-30-μC/GUI功能
--窗口對象9.SLIDER:滑動條控件
滑動條控件通常通過使用一個滑動條來改變數(shù)值。-31-μC/GUI功能
--窗口對象10TEXT:文本控件文本控件常用于顯示一個文本區(qū)域,例如在一個消息框顯示一些文本-32-μC/GUI功能
--對話框?qū)υ捒蚴且环N包含一個或多個控件的窗口。1.模塊化和非模塊化對話框?qū)υ挻翱诜譃槟K化和非模塊化兩種。一個模塊化對話框會阻塞執(zhí)行的線程。2.對話框消息
一個對話框就是一個窗口,它接收的大多數(shù)消息被對話框自動處理了,其它傳給了指定的回調(diào)函數(shù)。有兩種類型的消息被送到對話窗口處理,分別為WM_INIT_DIALOG和WM_NOTIFY_PARENT。3.建立對話框建立對話框需要一個資源表和一個對話框程序。然后進(jìn)行調(diào)用函數(shù)GUI_CreateDialogBox()或GUI_ExecDialogBox()來建立對話框。對話框可以基于阻塞或非阻塞方式建立。
-33-μC/GUI功能
--對話框4.資源表
對話框的資源表,用指定包括在對話框中的控件。資源表是一個GUI_WIDGET_CREATE_INFO類型的數(shù)組,例如,一個資源表的代碼如下?!臼纠?4-3】對話框資源表staticconstGUI_WIDGET_CREATE_INFO_aDialogCreate[]={ {FRAMEWIN_CreateIndirect,”Dialog”,0,10,10,180,230,0,0}, {BUTTON_CreateIndirect,”O(jiān)K”,GUI_ID_OK,100,5,60,20,0,0}, {BUTTON_CreateIndirect,”Cancel”,GUI_ID_CANCEL,100,30,60,20,0,0}, {TEXT_CreateIndirect,“LText”,0,10,55,48,15,0,GUI_TA_LEFT}, {TEXTCreateIndirect,“RText”,0,10,80,48,15,0,GUI_TA_RIGHT}, {EDIT_CreateIndirect,NULL,GUI_ID_EDIT0,60,55,100,15,0,50}, {EDIT_CreateIndirect,NULL,GUI_ID_EDIT1,60,80,100,15,0,50}, {TEXT_CreateIndirect,”Hex”,0,10,100,48,15,0,GUI_TA_RIGHT}, {EDIT_CreateIndirect,NULL,GUI_ID_EDIT2,60,100,100,15,0,6}, {TEXT_CreateIndirect,”Bin”,0,10,120,48,15,0,GUI_TA_RIGHT}, {EDIT_CreateIndirect,NULL,GUI_ID_EDIT3,60,120,100,15,0,0}, {LISTBOX_CreateIndirect,NULL,GUI_ID_LISTBOX0,10,20,48,40,0,0}, {CHECKBOX_CreateIndirect,NULL,GUI_ID_CHECK0,10,5,0,0,0,0}, {CHECKBOX_CreateIndirect,NULL,GUI_ID_CHECK1,30,5,0,0,0,0}, {SLIDER_CreateIndirect,NULL,GUI_ID_SLIDER0,60,140,100,20,0,0}, {SLIDER_CreateIndirect,NULL,GUI_ID_SLIDER1,10,170,150,30,0,0}};
-34-μC/GUI功能
--對話框5.對話框程序建立資源表后,還需要定義一個對話框程序(函數(shù)),以便初始化和響應(yīng)消息處理,代碼如下。【示例14-4】對話框函數(shù)staticvoid_cbCallback(WM_MESSAGE*pMsg){ switch(pMsg->MsgId) { default:WM_DefaultProc(pMsg); }}-35-μC/GUI功能
--對話框使用函數(shù)GUI_ExecDialogBox()可以建立一個對話框,代碼如下?!臼纠?4-5】建立對話框GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0,0,0);-36-μC/GUI功能
--對話框運行上述代碼后,會顯示_aDialogCreate[]資源列表中定義的對話框,如圖14-9所示。-37-μC/GUI功能
--對話框6.消息框
消息框?qū)嶋H上是一種對話框,只不過是它的默認(rèn)屬性被指定了。-38-μC/GUI移植
μC/GUI的移植比較簡單,主要是μC/GUI相關(guān)文件移植、μC/GUI相關(guān)配置、LCD驅(qū)動的移植和兩個函數(shù)的改寫。下述內(nèi)容用于實現(xiàn)任務(wù)描述14.D.1,移植并建立一個μC/GUI開發(fā)模板,并且使用開發(fā)模板顯示字符串“HelloWorld!”。具體步驟如下。-39-μC/GUI移植
1.添加文件打開一個STM32F107的開發(fā)模板,按照μC/GUI的目錄結(jié)構(gòu)添加組,并添加相關(guān)源文件,最終結(jié)構(gòu)如圖14-11所示。-40-μC/GUI移植
1.添加文件其中,TFT為液晶屏的驅(qū)動文件和相關(guān)函數(shù),本例中用的液晶屏控制器型號為il9320,如圖14-12所示。-41-μC/GUI移植
1.添加文件gui_config文件夾下為移植GUI的相關(guān)文件,如圖14-13所示。-42-μC/GUI移植
2.GUI配置
打開GUIConf.h文件,進(jìn)行相關(guān)配置如圖14-14所示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 杭州2025年下半年浙江杭州第一技師學(xué)院招聘工作人員筆試歷年參考題庫附帶答案詳解
- 徐州2025年江蘇徐州市中醫(yī)院招聘非在編醫(yī)務(wù)人員193人筆試歷年參考題庫附帶答案詳解
- 宜春2025年江西宜春市上高縣選調(diào)99名鄉(xiāng)鎮(zhèn)學(xué)校教師和校長到城區(qū)學(xué)校任教筆試歷年參考題庫附帶答案詳解
- 四川2025年四川省旅游學(xué)校招聘工作人員5人筆試歷年參考題庫附帶答案詳解
- 南通2025年江蘇南通海安市部分市屬公立醫(yī)療單位招聘編外工作人員75人筆試歷年參考題庫附帶答案詳解
- 內(nèi)江2025年四川內(nèi)江市部分學(xué)??计附處?0人筆試歷年參考題庫附帶答案詳解
- 2026年財務(wù)會計實務(wù)財務(wù)報表編制模擬題及答案
- 2026年計算機(jī)科學(xué)基礎(chǔ)理論知識測試題庫
- 2026年網(wǎng)絡(luò)安全檢測與修復(fù)技能認(rèn)證題庫
- 2026年企業(yè)信息保護(hù)策略與操作試題指南
- 2026年無錫工藝職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試題庫附答案解析
- 2026年中考語文一輪復(fù)習(xí)課件:記敘文類閱讀技巧及示例
- 2025腫瘤靶向藥物皮膚不良反應(yīng)管理專家共識解讀課件
- 腳手架施工安全技術(shù)交底標(biāo)準(zhǔn)模板
- 海姆立克急救課件 (完整版)
- 淘寶主體變更合同范本
- 2025中好建造(安徽)科技有限公司第二次社會招聘13人筆試歷年參考題庫附帶答案詳解
- 《交易心理分析》中文
- 護(hù)理創(chuàng)新實踐與新技術(shù)應(yīng)用
- 2025年海南事業(yè)單位聯(lián)考筆試筆試考題(真題考點)及答案
- 2025中國電信股份有限公司重慶分公司社會成熟人才招聘筆試考試參考題庫及答案解析
評論
0/150
提交評論