手把手教你在顯示裝置上製作乙個選單

2021-10-14 13:12:53 字數 1448 閱讀 7000

摘要:程式中選單的種類與選單化程式具有明顯的優勢,程式的實現方式通常有兩種:一種是基於命令列方式,即通過輸入指令驅動程式實現相應的功能;二是基於選單方式,即通過選擇不同的選單實現程式的不同功能。前者的最大缺點是必須精確掌握指令,對操作者而言,它不是十分方便;後者,則只要通過選擇不同的選單項,就可以實現不同的功能,因此,它便於操作,成為程式實現的主流方式。

選單(menu)已經被廣泛應用於各種程式中。可以毫不誇張地說,幾乎所有程式都使用選單驅動方式。因而,掌握基於選單的程式開發是十分必要的。程式中使用的選單種類繁多,常見的有:彈出選單、下拉列表、圖示選單、多級選單等,介面形式也五花八門。

本例中我們通過乙個顯示屏和兩個按鍵和led小燈就可以實現,當然顯示裝置可以是tft彩屏也可以是0.96寸oled小屏或者其他的顯示裝置,按鍵也可以用觸控螢幕代替,led燈是對應選單的響應操作,當然也可以用其他的器件代替。因為思路是一樣的,大家可以舉一反三的自行設計。

通過 一 個按鍵控制箭頭上下移動, 即該鍵相當於上下移動游標控制鍵; 通過另外一 個按鍵選中當前選單項, 該鍵相當於回車確認鍵。按鍵1用於實現游標移動功能(箭頭上下移動),按鍵2用於實現選擇確認(回車鍵)功能。

選單的實現方式有多種。就上述選單而言,可以通過以下方法實現。

(1)首先,顯示上述初始畫面。

(2)然後,不停地捕捉按鍵1或按鍵2。如果是按鍵1,則首先清屏,然後將箭頭放在選單的第二項位置,整個選單顯示出來,這樣感覺是游標下移了;如果游標已經位於最後乙個選單項,則移到第乙個選單項。如果是按鍵2,則表示選中游標所在的選單項,則執行對應的功能。選單的切換其實與動畫的原理有點類似。

硬體部分非常簡單,只涉及兩個按鍵、兩個led。按照所使用的實驗板的原理圖,對應的引腳關係為:

(1)key1與引腳pa0相連,key2與引腳pe4相連。

(2)led0與引腳pe6相連,led1與引腳pe5相連。

(3)顯示裝置用自己現有的螢幕作為顯示,tft彩屏和oled都可以。

這裡設定了三個選單,選單顯示函式如下:

void

displaymenu

(u8 t)

}

接著就是檢測按鍵按下以及處理函式

displaymenu(1

);//顯示初始選單1

while(1

)if(flag)

}

最終結果如下:

總結:選單的切換就是不斷地檢測相應的按鍵按下,首先清屏,然後將箭頭放在選單的第二項,或者跳轉到第二個畫面,如果游標處於最後乙個選單項或者處於最後乙個畫面,則移動到第乙個選單項。按下—清屏—顯示,三步即可。

手把手教你製作乙個Windows服務

也許你認為開發windows服務是件非常困難的事件,需要了解非常多的作業系統原理以及精通windows的各種api。其實沒有這麼誇張,windows服務就像乙個框架一樣,至於你往裡面加些什麼完全在與你自己。好吧,現在我們就往裡面加 helloworld 吧。開學習製作windows服務之前我們先大概...

手把手教你寫乙個ORM(二)

昨夜一夜未睡,本來以為下班回家能倒下就打呼嚕的,結果吃了晚飯後反而清醒起來了,於是決定把本打算明天寫的部分提前。半夜三更不睡覺幹嘛?出來假扮王祖賢阿 根據前面的需求,我們發現需要將配置檔案抽象出乙個元件出來,快取需要乙個單獨的元件,為了適應不同的資料庫需要做成乙個外掛程式架構的,為不同資料庫插入不同...

手把手教你在Discord上安裝翻譯外掛程式!

hi,小夥伴們!最近市場的焦點逐步鎖定在了鏈遊以及nft專案上,而大多數nft專案都把discord作為新 社交的主戰場。我們做白名單任務時,很多小夥伴都反映看不懂專案方的英文內容,我們今天就給大家介紹乙個discord上的專有外掛程式,幫大家更好地使用這個賺錢工具。安裝完畢要註冊賬號密碼並登入,然...