國(guó)內(nèi)外主流嵌入式GUI匯總
早些年的單片機(jī)開(kāi)發(fā)中,因?yàn)閱纹瑱C(jī)的資源和性能的限制,很多都是使用文字菜單界面,這種界面讓人感覺(jué)非常的樸實(shí)無(wú)華,內(nèi)容言簡(jiǎn)意賅,如果使用圖形庫(kù)進(jìn)行開(kāi)發(fā),產(chǎn)品一下子就讓別人覺(jué)得有點(diǎn)高級(jí)感。現(xiàn)在來(lái)說(shuō),單片機(jī)資源和性能更為豐富,很多的嵌入式圖形庫(kù)都可以做出絢麗的界面。
下面僅介紹幾款常用的圖形庫(kù)。
一、 LVGL
LVGL免費(fèi)開(kāi)源的嵌入式圖形庫(kù),可為任何 MCU、MPU 和顯示器創(chuàng)建漂亮的UI界面,現(xiàn)在它可以使用UI 編輯器SquareLine Studio來(lái)簡(jiǎn)化開(kāi)發(fā)。
代碼可以直接到LVGL官方GitHub中提取,同時(shí)也提供了在線文檔、Demo示例程序等,目前版本已經(jīng)更新到了V8.3.4了。
1.1 特性
- 強(qiáng)大的構(gòu)建塊,例如按鈕、圖表、列表、滑塊、圖像等。
- 具有動(dòng)畫(huà)、抗鋸齒、不透明度、平滑滾動(dòng)的高級(jí)圖形
- 各種輸入設(shè)備,如觸摸板、鼠標(biāo)、鍵盤(pán)、編碼器等。
- 使用 UTF-8 編碼的多語(yǔ)言支持
- 多顯示器支持,即同時(shí)使用多個(gè)TFT、單色顯示器
- 具有類(lèi) CSS 樣式的完全可定制的圖形元素
- 獨(dú)立于硬件:與任何微控制器或顯示器一起使用
- 支持操作系統(tǒng)、外部存儲(chǔ)器和 GPU,但不是必需的
- 單幀緩沖操作,即使具有高級(jí)圖形效果
- 用 C 編寫(xiě)以獲得最大兼容性(C++ 兼容)
1.2 硬件要求
- 絕大多數(shù)MCU都能滿(mǎn)足要求。
- 16、32 或 64 位微控制器或處理器
- 推薦 大于16 MHz 時(shí)鐘速度
- 閃存/ROM:> 64 kB 用于非常重要的組件(建議 > 180 kB)
- 內(nèi)存:
- 靜態(tài) RAM 使用:~2 kB,具體取決于使用的功能和對(duì)象類(lèi)型
- 堆棧:> 2kB(建議> 8 kB)
- 動(dòng)態(tài)數(shù)據(jù)(堆):> 4 KB(如果使用多個(gè)對(duì)象,建議> 48 kB)。由lv_conf.h中的LV_MEM_SIZE設(shè)置。
- 顯示緩沖區(qū):> “水平分辨率”像素(推薦>10× “水平分辨率”)
1.3 移植
lvgl移植到嵌入式項(xiàng)目中也比較簡(jiǎn)單,首先下載好源碼、調(diào)好LCD的顯示驅(qū)動(dòng)程序(畫(huà)點(diǎn)函數(shù)那些),畫(huà)圖函數(shù)與lvgl顯示接口銜接上即可,stm32中有提供DMA2D優(yōu)化顯示驅(qū)動(dòng),lvgl也支持觸摸屏觸摸,有相應(yīng)的接口,另外還需要提供時(shí)鐘給lvgl(提供心跳,使其保持響應(yīng))。
1.4 模擬器
LVGL可以使用模擬器在Windows/Linux/MacOS下運(yùn)行,這可以大大加快你的開(kāi)發(fā)進(jìn)程,調(diào)試也很方便,Sim源碼(它有別于嵌入式源碼)可以到GitHub中下載,需要用到SDL庫(kù)。
1.5 配套工具
LVGL還提供了圖形、文字轉(zhuǎn)換工具等.......
二、emwin
emWin是Segger公司針對(duì)嵌入式平臺(tái)開(kāi)發(fā)的穩(wěn)定、高效的圖形軟件庫(kù),適合用于任何圖形LCD的操作應(yīng)用,并可輸出高質(zhì)量的無(wú)鋸齒的文字和圖形。它是不開(kāi)源的,只提供調(diào)用庫(kù)。
SEGGER 公司授權(quán)給 ST、NXP,Energy Micro 等,凡是使用這些芯片廠商生產(chǎn)的處理器的都可以免費(fèi)使用 emWin。ST芯片的emwin叫STemWin,STemWin 針對(duì) ST 的芯片做了優(yōu)化。
emwin官方下載鏈接,有各種工具下載,也提供了各種Demo示例程序。
2.1 可視化工具AppWizard
可視化工具可以大大加快開(kāi)發(fā),可以實(shí)時(shí)的查看制造的UI界面,便于細(xì)微的調(diào)整。
英文版使用教程,中文版的教程有很多,例如安富萊的emwin教程、正點(diǎn)原子的emwin視頻教程,入門(mén)相對(duì)簡(jiǎn)單,熟悉了控件功能、函數(shù)接口后就能得心應(yīng)手設(shè)計(jì)界面了。
2.2 模擬器的使用
目前官網(wǎng)提供的最新sim版本是V6.30,下載之后使用VS打開(kāi),直接在PC上運(yùn)行模擬器示例(有些VS的版本過(guò)高,編譯例程會(huì)報(bào)錯(cuò),配置下鏈接器即可)。
三、 AWTK
AWTK意為T(mén)oolkit AnyWhere,顧名思義就是一個(gè)可以在任何地方開(kāi)發(fā)的工具集,是一個(gè)開(kāi)源 GUI 引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和 PC 打造的通用 GUI 引擎,為用戶(hù)提供一個(gè)功能強(qiáng)大、高效可靠、簡(jiǎn)單易用、可輕松做出炫酷效果的 GUI 引擎。
AWTK本身是用 C 語(yǔ)言開(kāi)發(fā)的,上層界面開(kāi)發(fā)目前支持C/JS;它性能高、內(nèi)存開(kāi)銷(xiāo)小,無(wú)需學(xué)習(xí) AWTK 控件本身的 API,而且有很多的示例代碼直接用。
3.1 AWTK Designer可視化軟件
需要注冊(cè)后才能下載使用,流程參考鏈接。
不再需要手寫(xiě) XML,拖拽方式設(shè)計(jì)界面,所見(jiàn)即所得,快速預(yù)覽,一鍵打包資源。
3.2 例程展示
在AWStudio中,有幾個(gè)例程可供下載編譯,以下展示手表UI;
四 、MiniGUI
MiniGUI是一款國(guó)產(chǎn)GUI,一款面向嵌入式系統(tǒng)的高級(jí)窗口系統(tǒng)和圖形用戶(hù)界面(GUI)支持系統(tǒng),由魏永明先生于1998年底開(kāi)始開(kāi)發(fā)。2002 年,魏永明先生創(chuàng)建北京飛漫軟件技術(shù)有限公司,為MiniGUI 提供商業(yè)技術(shù)支持,同時(shí)也繼續(xù)提供開(kāi)源版本,飛漫軟件是中國(guó)地區(qū)為開(kāi)源社區(qū)貢獻(xiàn)代碼最多的軟件企業(yè)。
MiniGUI 是免費(fèi)軟件,但不是免費(fèi)用于商業(yè)用途
4.1 特點(diǎn)
五、uC/GUI
uC/GUI是Micrium公司開(kāi)發(fā)的通用的嵌入式用戶(hù)圖形界面軟件。它給任何使用圖形LCD的應(yīng)用程序提供獨(dú)立于處理器和LCD控制器之外的有效的圖形用戶(hù)接口。可以應(yīng)用于單一任務(wù)環(huán)境,也可以應(yīng)用于多任務(wù)環(huán)境中。uC/GUI能夠應(yīng)用于任何LCD控制器和CPU的任何尺寸的物理顯示或者模擬顯示中。
uC/GUI的特點(diǎn)如下:
◆ 適用于任何8位/16位/32位CPU,可允許于支持ANSI C的任何編譯器
◆ 適用于任何控制器驅(qū)動(dòng)任何LCD(單色,灰度,或者彩色)
◆ 通過(guò)配置宏,可支持任何接口
◆ 可配置顯示尺寸
◆ 可在LCD的任何一點(diǎn)上顯示字符和畫(huà)位圖
◆ 對(duì)于顯示尺寸和速度提供優(yōu)化進(jìn)程,編譯時(shí)間依賴(lài)于采用的優(yōu)化進(jìn)程
◆ 支持虛擬顯示,虛擬顯示的尺寸比實(shí)際顯示大。
2000年出非常火爆的一個(gè)GUI,輕量級(jí),易于移植,免費(fèi)的,只是現(xiàn)在沒(méi)有人維護(hù)了,使用的人也越來(lái)越少。
六、 柿餅UI
柿餅UI(Persimmon UI)是RT-Thread一款專(zhuān)注于嵌入式領(lǐng)域,由C/C++語(yǔ)言構(gòu)建,為用戶(hù)提供類(lèi)安卓效果的GUI解決方案。為用戶(hù)提供了設(shè)計(jì)器+JavaScript語(yǔ)言的開(kāi)發(fā)模式,用戶(hù)只需拖拽UI控件,寫(xiě)一些簡(jiǎn)單的JS控制邏輯,就可以實(shí)現(xiàn)絢麗、復(fù)雜的UI效果。相對(duì)于傳統(tǒng)純C語(yǔ)言開(kāi)發(fā)模式的GUI,柿餅UI可以極大的提高開(kāi)發(fā)效率,降低代碼調(diào)試難度,加快產(chǎn)品迭代速度。
七、 其它GUI
為什么叫其它GUI呢?因?yàn)槲覍?duì)此沒(méi)有過(guò)多的了解過(guò),只是對(duì)其進(jìn)行歸納總結(jié),用的時(shí)候方便查詢(xún)。
4.1 QT for MCU
QT我們都知道,使用C++開(kāi)發(fā),重在理解信號(hào)與槽,可以發(fā)出出一款在PC上運(yùn)行的軟件,例如串口調(diào)試軟件等。QT for MCU,是一個(gè)可以在嵌入式MCU上跑的QT UI。
QT for MCU開(kāi)發(fā)指導(dǎo)鏈接
4.2 GUIX
Azure RTOS GUIX (GUIX) 是圖形界面框架的一種高性能實(shí)時(shí)實(shí)現(xiàn),專(zhuān)用于基于 ThreadX 的嵌入式應(yīng)用程序,可立即移植到幾乎任何具有 ANSI C 編譯器和 ThreadX 支持的處理器體系結(jié)構(gòu)。入門(mén)指導(dǎo)鏈接
介紹的幾個(gè)GUI里面,最為推薦的是LVGL,即Little VGL,開(kāi)源免費(fèi)又好用。
- 1容聲冰箱故障代碼f8(容聲冰箱故障代碼F8的原因及解決方法)
- 2佳家利保險(xiǎn)柜售后服務(wù)中心(佳家利保險(xiǎn)柜售后服務(wù)中心卓越服務(wù))
- 3全自動(dòng)洗衣機(jī)按鍵圖解(如何正確使用洗衣機(jī))
- 4常州自來(lái)水24小時(shí)服務(wù)熱線(如何聯(lián)系并解決水務(wù)問(wèn)題)
- 5tcl空調(diào)網(wǎng)怎么拆(tcl空調(diào)網(wǎng)拆解攻略)
- 6海爾熱水器故障代碼F9(解讀海爾熱水器故障代碼F9)
- 7星月神防盜門(mén)沒(méi)電打不開(kāi)怎么辦(星月神防盜門(mén)沒(méi)電打不開(kāi)怎么辦)
- 8熱水器10年以上不建議清洗(為什么?有哪些風(fēng)險(xiǎn)?)
- 9三星冰箱冷藏室風(fēng)扇拆裝視頻(如何正確操作)
- 10東控防盜門(mén)24小時(shí)售后客服熱線(東控防盜門(mén)24小時(shí)售后客服熱線,您身邊的安心