www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀] UCGUI是一種嵌入式應用中的圖形支持系統(tǒng)。它設計用于為任何使用LCD圖形顯示的應用提供高效的獨立于處理器及LCD控制器的圖形用戶接口,它適用單任務或是多任務系統(tǒng)環(huán)境, 并適用于任意LCD控制器和CPU下任何尺寸的真

UCGUI是一種嵌入式應用中的圖形支持系統(tǒng)。它設計用于為任何使用LCD圖形顯示的應用提供高效的獨立于處理器及LCD控制器的圖形用戶接口,它適用單任務或是多任務系統(tǒng)環(huán)境, 并適用于任意LCD控制器和CPU下任何尺寸的真實顯示或虛擬顯示。

它的設計架構是模塊化的,由不同的模塊中的不同層組成,由一個LCD驅動層來包含所有對LCD的具體圖形操作。UCGUI可以在任何的CPU上運行,因為它是100%的標準C代碼編寫的。

類似程序還有國產(chǎn)的一個MINIGUI (http://www.minigui.com/zhcn/),MiniGUI 是一個自由軟件項目。其目標是提供一個快速、穩(wěn)定、跨操作系統(tǒng)的圖形用戶界面(GUI)支持系統(tǒng),尤其是基于 Linux/uClinux、eCos 以及其他傳統(tǒng) RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的實時嵌入式操作系統(tǒng)。有機會嘗試下,支持下國產(chǎn),畢竟國內這樣的公司不多。。

這里移植的UCGUI3.90a版本,雖然已經(jīng)有更新的版本,比如UCGUI3.98、甚至4.04版本。但是目前來說只有這個版本的代碼是最全的,包括了JPEG , MULTILAYER , MEMDEV ,AntiAlias等模塊。一直想嘗試做一個數(shù)碼相冊,JEPG模塊自然少不了,所以移植了這個版本。

UCGUI390a 下載


整個移植過程,讓LCD顯示圖案倒是沒花多少時間,資料也比較多,但是在移植觸摸屏的時候卡了好幾天,然后又是 UCGUI 指針圖標 移動有重影(LCD讀取像素顏色函數(shù)有問題)。。。總之移植是個累人的活

首先需要保證你的LCD驅動和觸摸屏驅動是有效的,如果你的LCD也是ili93xx 控制器 XPT2046控制器的觸摸屏可以參考stm32 驅動 TFT LCDstm32 驅動 觸摸屏兩篇文章

UCGUI的文件數(shù)量很大,主要用到UCGUI390a/Start/Config 和 UCGUI390a/Start/GUI兩個文件夾下文件,不過文件數(shù)量也已經(jīng)很多了 。。。

相關文件介紹如下:

將Config和GUI下所有文件加入工程,MDK中新建工程需要劃分好結構,這是UCGUI官方推薦的結構:

JPEG, MemDev , MultiLayer ,Widget , Wm 這5 個文件夾的內容可以暫時不加入MDK工程。

因為這些文件起到的是擴展功能,在移植階段可以先不添加,等到以后用到其中的功能時再選擇添加。但是建議都添加進去,避免遇到各種無解問題。。

當然前提是在配置時要把相應的功能開關關掉,在下面的步驟中會提到。

ConverMono , ConverColor ,Core ,Font 這四個目錄下的文件是不用修改的。

要修改的文件在LCDDriver ,Config 這兩個目錄下。

LCDDriver 是LCD的驅動接口函數(shù)文件,需要將自己的LCD驅動函數(shù)提供給UCGUI調用。

需要提供3個LCD底層驅動函數(shù):

void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) LCD畫點函數(shù),用指定顏色填充一個像素

unsigned int LCD_L0_GetPixelIndex(int x, int y) LCD讀取定點顏色函數(shù),讀取一個像素點的16位RGB顏色值

void LCD_L0_FillRect(int x0, int y0, int x1, int y1) 矩形填充函數(shù),用指定顏色填充一個矩形 。這個函數(shù)也可以不改 使用UCGUI的函數(shù),用一個一個的像素點填充成一個矩形。也可以在底層驅動根據(jù)像素個數(shù)直接往GRAM 中寫數(shù)據(jù),封裝成函數(shù),供這個函數(shù)調用。速度會快很多。

其他的畫線畫圖形函數(shù),也可以同樣優(yōu)化。

LCDDriver下有三個文件,LCDDummy.c 、 LCDNull.c 和LCDWin.c。 這三個都是UCGUI LCD接口模板文件。功能一樣,只是移植時修改的細節(jié)不一樣。我們可以選用其中一個,稍作修改作為接口文件。以LCDDummy.c為例:

#include"LCD_Private.h"/*privatemoduldefinitions&config*/#include"GUI_Private.h"#include"GUIDebug.h"/*#if(LCD_CONTROLLER==-1)&&(!defined(WIN32)|defined(LCD_SIMCONTROLLER))*///必須注釋,否則不會編譯#include"ili93xx.h"http://包含你的LCD驅動函數(shù)聲明#if(LCD_CONTROLLER==-1)//這句對應Config/LCDConf.h................voidLCD_L0_SetPixelIndex(intx,inty,intPixelIndex){POINT_COLOR=PixelIndex;//我的畫點函數(shù)使用了一個全局變量設定顏色LCD_DrawPoint(x,y);//畫點函數(shù)}................unsignedintLCD_L0_GetPixelIndex(intx,inty){returnLCD_ReadPoint(x,y);//我的讀取像素顏色函數(shù)}................voidLCD_L0_FillRect(intx0,inty0,intx1,inty1){LCD_Fill(x0,y0,x1,y1,LCD_COLORINDEX);//填充矩形函數(shù)/*for(;y0<=y1;y0++){LCD_L0_DrawHLine(x0,y0,x1);}*/}

UCGUI提供了一些LCD控制器的驅動函數(shù),但是這種配置方法,可以適用于任何控制IC。

到這就算完成三分之一了,接下來修改Config文件夾下文件,Config下有三個文件:

GUIConf.h LCDConf.hGUITouchConf.h

還需要加入一個GUI_X.c文件,要不然編譯的時候會有錯誤。直接復制UCGUI390aSampleGUI_XGUI_X.c即可。如果打開了觸摸功能還需要加入一個UCGUI390aSampleGUI_XGUI_X_Touch.c 。

這三個文件是UCGUI的上層配置文件,也就是GUI 一些功能的開關。

GUIConf.h:

#ifndefGUICONF_H#defineGUICONF_H#defineGUI_OS(0)/*操作系統(tǒng)的支持,當用到ucos時需要打開Compilewithmultitaskingsupport*/#defineGUI_SUPPORT_TOUCH(1)/*觸摸屏的支持Supportatouchscreen(req.win-manager)*/#defineGUI_SUPPORT_UNICODE(0)/*用漢字庫時再打開SupportmixedASCII/UNICODEstrings*/#defineGUI_DEFAULT_FONT&GUI_Font6x8/*定義字體大小*/#defineGUI_ALLOC_SIZE12500/*分配的動態(tài)內存空間Sizeofdynamicmemory...ForWMandmemorydevices*//***********************************************************************Configurationofavailablepackages*/#defineGUI_WINSUPPORT1/*窗口功能支持要使用指針圖標必須打開Windowmanagerpackageavailable*/#defineGUI_SUPPORT_MEMDEV1/*內存管理Memorydevicesavailable*/#defineGUI_SUPPORT_AA1/*抗鋸齒功能,打開后可以提高顯示效果Antialiasingavailable*/#endif/*Avoidmultipleinclusion*/

LCDConf.h

#ifndefLCDCONF_H#defineLCDCONF_H#defineLCD_XSIZE(240)/*lcd的水平分辨率X-resolutionofLCD,Logicalcoor.*/#defineLCD_YSIZE(320)/*lcd的垂直分辨率Y-resolutionofLCD,Logicalcoor.*/#defineLCD_BITSPERPIXEL(16)/*16位顏色RGB值顏色深度*/#defineLCD_SWAP_RB(1)/*紅藍反色交換*//*lcd控制器的具體型號**設置為-1時會編譯LCDDriver下LCDDummy.c*設置為-2時會編譯LCDDriver下LCDNull.c**還需要修改LCDDriver下文件的宏定義才可以被編譯*eg.LCDDummy.c:**#if(LCD_CONTROLLER==-1)&&(!defined(WIN32)|defined(LCD_SIMCONTROLLER))*改為*#if(LCD_CONTROLLER==-1)*/#defineLCD_CONTROLLER-1//設置為-1-2,因為UCGUI沒有相應LCD控制IC驅動#defineLCD_INIT_CONTROLLER()LCD_Config();//綁定相關LCD底層驅動的初始化函數(shù)

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

在嵌入式開發(fā)中,STM32的時鐘系統(tǒng)因其靈活性和復雜性成為開發(fā)者關注的焦點。然而,看似簡單的時鐘配置背后,隱藏著諸多易被忽視的陷阱,輕則導致系統(tǒng)不穩(wěn)定,重則引發(fā)硬件損壞。本文從時鐘源選擇、PLL配置、總線時鐘分配等關鍵環(huán)...

關鍵字: STM32 時鐘系統(tǒng)

在嵌入式系統(tǒng)開發(fā)中,STM32系列微控制器的內部溫度傳感器因其低成本、高集成度特性,廣泛應用于設備自檢、環(huán)境監(jiān)測等場景。然而,受芯片工藝差異和電源噪聲影響,其原始數(shù)據(jù)存在±1.5℃的固有誤差。本文從硬件配置、校準算法、軟...

關鍵字: STM32 溫度傳感器

在能源效率與智能化需求雙重驅動下,AC-DC轉換器的數(shù)字控制技術正經(jīng)歷從傳統(tǒng)模擬方案向全數(shù)字架構的深刻變革?;赟TM32微控制器的PFM(脈沖頻率調制)+PWM(脈沖寬度調制)混合調制策略,結合動態(tài)電壓調整(Dynam...

關鍵字: AC-DC STM32

當前智能家居產(chǎn)品需求不斷增長 ,在這一背景下 ,對現(xiàn)有澆花裝置缺陷進行了改進 ,設計出基于STM32單片機的全 自動家用澆花機器人。該設計主要由機械結構和控制系統(tǒng)構成 ,機械結構通過麥克納姆輪底盤與噴灑裝置的結合實現(xiàn)機器...

關鍵字: STM32 麥克納姆輪 安全可靠 通過性強

用c++編程似乎是讓你的Arduino項目起步的障礙嗎?您想要一種更直觀的微控制器編程方式嗎?那你需要了解一下Visuino!這個圖形化編程平臺將復雜電子項目的創(chuàng)建變成了拖動和連接塊的簡單任務。在本文中,我們將帶您完成使...

關鍵字: Visuino Arduino ESP32 STM32

基于STM32與LoRa技術的無線傳感網(wǎng)絡憑借其低功耗、廣覆蓋、抗干擾等特性,成為環(huán)境監(jiān)測、工業(yè)自動化等場景的核心解決方案。然而,如何在復雜電磁環(huán)境中實現(xiàn)高效休眠調度與動態(tài)信道優(yōu)化,成為提升網(wǎng)絡能效與可靠性的關鍵挑戰(zhàn)。本...

關鍵字: STM32 LoRa

在實時控制系統(tǒng)、高速通信協(xié)議處理及高精度數(shù)據(jù)采集等對時間敏感的應用場景中,中斷響應延遲的優(yōu)化直接決定了系統(tǒng)的可靠性與性能上限。STM32系列微控制器憑借其靈活的嵌套向量中斷控制器(NVIC)、多通道直接內存訪問(DMA)...

關鍵字: STM32 DMA

數(shù)字電源技術向高功率密度、高效率與高動態(tài)響應方向加速演進,STM32微控制器憑借其基于DSP庫的算法加速能力與對LLC諧振變換器的精準控制架構,成為優(yōu)化電源動態(tài)性能的核心平臺。相較于傳統(tǒng)模擬控制或通用型數(shù)字控制器,STM...

關鍵字: STM32 數(shù)字電源

STM32微控制器憑借其針對電機控制場景的深度優(yōu)化,成為高精度、高可靠性驅動系統(tǒng)的核心選擇。相較于通用型MCU,STM32在電機控制領域的核心優(yōu)勢集中體現(xiàn)在FOC(磁場定向控制)算法的硬件加速引擎與PWM死區(qū)時間的動態(tài)補...

關鍵字: STM32 電機控制

無線充電技術加速滲透消費電子與汽車電子領域,基于Qi協(xié)議的無線充電發(fā)射端開發(fā)成為智能設備能量補給的核心課題。傳統(tǒng)模擬控制方案存在響應滯后、參數(shù)調整困難等問題,而基于STM32的數(shù)字PID控制結合FOD(Foreign O...

關鍵字: STM32 無線充電
關閉