登錄 注冊
購物車0
TOP
Imgs 行業(yè)資訊

0

12864液晶使用教程分享 基于MCU菜單框架設(shè)計方案

2021-02-24 17:44:05

不知道有多少人對LCD菜單有過困擾,但我覺得應(yīng)該有很多人做過。我還記得以前在大學(xué)電子設(shè)計大賽中獲獎的作品,我用的是一個有菜單功能的12864。
以前可能會覺得菜單很高,但并沒有想象的那么復(fù)雜。這篇文章是為分享每個人制作的單色屏幕菜單框架
總結(jié)
github中托管的代碼:
這里說的菜單是128*64之類的小屏幕菜單,比如下面這個,不是彩屏上的GUI菜單框設(shè)計
作為底層驅(qū)動工程師,驅(qū)動完成后,需要編寫硬件測試程序。這個測試程序一般是測試部門/硬件工程師用來測試硬件的,也會為工廠生產(chǎn)線測試準(zhǔn)成品。
剛開始的時候人比較懶,一秒鐘都不想直接走。所有的菜單都是這樣,一層一層的。菜單越來越多的時候就開始糾結(jié),寫維護(hù)不方便,不美觀,浪費程序空間。
作為一個每天看《編程之美》的碼農(nóng),他決定改變變現(xiàn)的形狀。在參觀了百度, 酷狗,之后,我找到了兩個參考:《基于二叉樹的多層的液晶菜單界面設(shè)計》 《基于節(jié)點編號的通用樹狀菜單設(shè)計方法與實現(xiàn).pdf》。按照他們的設(shè)計方法,我粗制濫造出了一個版本,好用,挺好的,但是也糾結(jié)。因為他們使用樹的數(shù)據(jù)結(jié)構(gòu)。對于程序運行來說,非常好,非常高效。但是對我來說,菜單代碼是一次性的,但是菜單內(nèi)容經(jīng)常是變化的。我要用腦子維護(hù)一棵包含幾十上百個菜單的樹并不容易。
想了想,這些菜單怎么了?為什么對我不起作用?得出以下結(jié)論:
如果菜單太寬,可以切換菜單,但是到了最底層,也就是實際的測試功能,就可以不管了。菜單切換類似,實際測試不同。例如,在菜單中,按鍵1進(jìn)入第一個菜單。但是在測試中,按鈕1的功能是不同的。如果菜單要顧及這一點,同樣的動作有太多的功能要統(tǒng)一抽象,那就很難了
模塊化
出發(fā)點和上面說的菜單不一樣。出發(fā)點是如何設(shè)計好菜單數(shù)據(jù)結(jié)構(gòu),讓程序快速高效運行。我想要的是一個易于維護(hù)的菜單結(jié)構(gòu)。菜單代碼有多亂多糾結(jié)都無所謂。而且,就算幾十萬菜單被輪詢,也只有幾百個我們。沒關(guān)系。
改進(jìn)菜單
根據(jù)需求,我重新設(shè)計了一個菜單結(jié)構(gòu)
是的,就這么簡單。每個菜單都是這個結(jié)構(gòu)。用這個結(jié)構(gòu)填充列表。這是我們的菜單。這些都是套路
這個菜單列表有什么特點和要求?1需要一個根節(jié)點和一個端節(jié)點。2子節(jié)點必須跟隨父節(jié)點,類似于下面的結(jié)構(gòu)
第二個一級菜單有三個子菜單,子菜單是二級菜單,其中第一個子菜單下面有兩個子菜單(三級菜單)。
維護(hù)菜單就是維護(hù)這個列表,添加、刪除、修改,非常簡單。菜單程序呢?誰在乎?定義菜單后,通過以下功能運行菜單:
-第一個參數(shù)是在哪個液晶顯示器上顯示菜單,-第二個是菜單列表,-第三個是菜單長度,-第四個是四種字體,-第五個是行距
注意:運行這個菜單需要rtos,因為菜單代碼是while(1),不能卡。維護(hù)系統(tǒng)還需要其他任務(wù),如按鍵掃描。
菜單實現(xiàn)效果
相關(guān)文件:emenu.c,emenu.h,emenu_test.c
當(dāng)前代碼:
1實現(xiàn)雙排菜單,用數(shù)字鍵選擇進(jìn)入下一層。每頁最多顯示8個菜單(4*4鍵盤有1-8個鍵)
2.實現(xiàn)單列菜單。通過上下轉(zhuǎn)動來檢查菜單,并用確定鍵進(jìn)入菜單。3天頂菜單沒有實現(xiàn),有興趣的可以添加。
基于液晶驅(qū)動架構(gòu),這種簡單的菜單適用于各種液晶顯示器。
效果如下。需要就拿去吧。不客氣
顯示效果
128*64
OLED最終描述
以上菜單框來自屋頂鳥工作室,適合初學(xué)者練習(xí)。我來看看這個菜單框架。其實還有很多改進(jìn)。

 

高都電子,為客戶創(chuàng)造價值!

雙面板免費加費,四層板加急打樣,厚銅電路板打樣

Xcm