國內外主流嵌入式GUI匯總
早些年的單片機開發中,因為單片機的資源和性能的限制,很多都是使用文字菜單界面,這種界面讓人感覺非常的樸實無華,內容言簡意賅,如果使用圖形庫進行開發,產品一下子就讓別人覺得有點高級感。現在來說,單片機資源和性能更為豐富,很多的嵌入式圖形庫都可以做出絢麗的界面。
下面僅介紹幾款常用的圖形庫。
一、 LVGL
LVGL免費開源的嵌入式圖形庫,可為任何 MCU、MPU 和顯示器創建漂亮的UI界面,現在它可以使用UI 編輯器SquareLine Studio來簡化開發。
代碼可以直接到LVGL官方GitHub中提取,同時也提供了在線文檔、Demo示例程序等,目前版本已經更新到了V8.3.4了。
1.1 特性
- 強大的構建塊,例如按鈕、圖表、列表、滑塊、圖像等。
- 具有動畫、抗鋸齒、不透明度、平滑滾動的高級圖形
- 各種輸入設備,如觸摸板、鼠標、鍵盤、編碼器等。
- 使用 UTF8 編碼的多語言支持
- 多顯示器支持,即同時使用多個TFT、單色顯示器
- 具有類 CSS 樣式的完全可定制的圖形元素
- 獨立于硬件:與任何微控制器或顯示器一起使用
- 支持操作系統、外部存儲器和 GPU,但不是必需的
- 單幀緩沖操作,即使具有高級圖形效果
- 用 C 編寫以獲得最大兼容性(C++ 兼容)
1.2 硬件要求
- 絕大多數MCU都能滿足要求。
- 16、32 或 64 位微控制器或處理器
- 推薦 大于16 MHz 時鐘速度
- 閃存/ROM:> 64 kB 用于非常重要的組件(建議 > 180 kB)
- 內存:
- 靜態 RAM 使用:~2 kB,具體取決于使用的功能和對象類型
- 堆棧:> 2kB(建議> 8 kB)
- 動態數據(堆):> 4 KB(如果使用多個對象,建議> 48 kB)。由lv_conf.h中的LV_MEM_SIZE設置。
- 顯示緩沖區:> “水平分辨率”像素(推薦>10× “水平分辨率”)
1.3 移植
lvgl移植到嵌入式項目中也比較簡單,首先下載好源碼、調好LCD的顯示驅動程序(畫點函數那些),畫圖函數與lvgl顯示接口銜接上即可,stm32中有提供DMA2D優化顯示驅動,lvgl也支持觸摸屏觸摸,有相應的接口,另外還需要提供時鐘給lvgl(提供心跳,使其保持響應)。
1.4 模擬器
LVGL可以使用模擬器在Windows/Linux/MacOS下運行,這可以大大加快你的開發進程,調試也很方便,Sim源碼(它有別于嵌入式源碼)可以到GitHub中下載,需要用到SDL庫。
1.5 配套工具
LVGL還提供了圖形、文字轉換工具等.......
二、emwin
emWin是Segger公司針對嵌入式平臺開發的穩定、高效的圖形軟件庫,適合用于任何圖形LCD的操作應用,并可輸出高質量的無鋸齒的文字和圖形。它是不開源的,只提供調用庫。
SEGGER 公司授權給 ST、NXP,Energy Micro 等,凡是使用這些芯片廠商生產的處理器的都可以免費使用 emWin。ST芯片的emwin叫STemWin,STemWin 針對 ST 的芯片做了優化。
emwin官方下載鏈接,有各種工具下載,也提供了各種Demo示例程序。
2.1 可視化工具AppWizard
可視化工具可以大大加快開發,可以實時的查看制造的UI界面,便于細微的調整。
英文版使用教程,中文版的教程有很多,例如安富萊的emwin教程、正點原子的emwin視頻教程,入門相對簡單,熟悉了控件功能、函數接口后就能得心應手設計界面了。
2.2 模擬器的使用
目前官網提供的最新sim版本是V6.30,下載之后使用VS打開,直接在PC上運行模擬器示例(有些VS的版本過高,編譯例程會報錯,配置下鏈接器即可)。
三、 AWTK
AWTK意為Toolkit AnyWhere,顧名思義就是一個可以在任何地方開發的工具集,是一個開源 GUI 引擎,旨在為嵌入式系統、WEB、各種小程序、手機和 PC 打造的通用 GUI 引擎,為用戶提供一個功能強大、高效可靠、簡單易用、可輕松做出炫酷效果的 GUI 引擎。
AWTK本身是用 C 語言開發的,上層界面開發目前支持C/JS;它性能高、內存開銷小,無需學習 AWTK 控件本身的 API,而且有很多的示例代碼直接用。
3.1 AWTK Designer可視化軟件
需要注冊后才能下載使用,流程參考鏈接。
不再需要手寫 XML,拖拽方式設計界面,所見即所得,快速預覽,一鍵打包資源。
3.2 例程展示
在AWStudio中,有幾個例程可供下載編譯,以下展示手表UI;
四 、MiniGUI
MiniGUI是一款國產GUI,一款面向嵌入式系統的高級窗口系統和圖形用戶界面(GUI)支持系統,由魏永明先生于1998年底開始開發。2002 年,魏永明先生創建北京飛漫軟件技術有限公司,為MiniGUI 提供商業技術支持,同時也繼續提供開源版本,飛漫軟件是中國地區為開源社區貢獻代碼最多的軟件企業。
MiniGUI 是免費軟件,但不是免費用于商業用途
4.1 特點
五、uC/GUI
uC/GUI是Micrium公司開發的通用的嵌入式用戶圖形界面軟件。它給任何使用圖形LCD的應用程序提供獨立于處理器和LCD控制器之外的有效的圖形用戶接口。可以應用于單一任務環境,也可以應用于多任務環境中。uC/GUI能夠應用于任何LCD控制器和CPU的任何尺寸的物理顯示或者模擬顯示中。
uC/GUI的特點如下:
◆ 適用于任何8位/16位/32位CPU,可允許于支持ANSI C的任何編譯器
◆ 適用于任何控制器驅動任何LCD(單色,灰度,或者彩色)
◆ 通過配置宏,可支持任何接口
◆ 可配置顯示尺寸
◆ 可在LCD的任何一點上顯示字符和畫位圖
◆ 對于顯示尺寸和速度提供優化進程,編譯時間依賴于采用的優化進程
◆ 支持虛擬顯示,虛擬顯示的尺寸比實際顯示大。
2000年出非常火爆的一個GUI,輕量級,易于移植,免費的,只是現在沒有人維護了,使用的人也越來越少。
六、 柿餅UI
柿餅UI(Persimmon UI)是RTThread一款專注于嵌入式領域,由C/C++語言構建,為用戶提供類安卓效果的GUI解決方案。為用戶提供了設計器+JavaScript語言的開發模式,用戶只需拖拽UI控件,寫一些簡單的JS控制邏輯,就可以實現絢麗、復雜的UI效果。相對于傳統純C語言開發模式的GUI,柿餅UI可以極大的提高開發效率,降低代碼調試難度,加快產品迭代速度。
七、 其它GUI
為什么叫其它GUI呢?因為我對此沒有過多的了解過,只是對其進行歸納總結,用的時候方便查詢。
4.1 QT for MCU
QT我們都知道,使用C++開發,重在理解信號與槽,可以發出出一款在PC上運行的軟件,例如串口調試軟件等。QT for MCU,是一個可以在嵌入式MCU上跑的QT UI。
QT for MCU開發指導鏈接
4.2 GUIX
Azure RTOS GUIX (GUIX) 是圖形界面框架的一種高性能實時實現,專用于基于 ThreadX 的嵌入式應用程序,可立即移植到幾乎任何具有 ANSI C 編譯器和 ThreadX 支持的處理器體系結構。入門指導鏈接
介紹的幾個GUI里面,最為推薦的是LVGL,即Little VGL,開源免費又好用。
- lg洗衣機24小時服務電話06-28
-
臺風“蝴蝶”已加強為強熱帶風暴級 向海南島南部沿海靠近
2025-06-12
-
“李小龍”61.2萬拍下尾號0000000手機號
2025-06-12
-
《哪吒2》曲目制作人唐漢霄回應揭榜歌手:有點緊張,想探索“歌紅人不紅”
2025-06-12
-
空調故障代碼23(空調故障代碼23解析)
2025-06-07
-
海爾洗衣機故障代碼f3(海爾洗衣機故障代碼f3解讀)
2025-06-07


