基於stm32驅動oled屏顯示**選單介面框架搭建
個人總結的一些經驗,寫的不好勿噴。
硬體要求
(1)處理器:stm32f103系列。
(2)oled屏,spi或iic介面都可以。
(3)按鍵,用於控制介面的切換。
乙個基本的選單介面最少有有乙個主界,所以所有先設計乙個主介面。
1.什麼是主介面?
/******** 這裡說的主介面是本次需要設計的主介面 ********/
主介面是電路上電程式啟動完成後螢幕顯示的第乙個介面,就是主介面。
主介面根據自己的愛好來設計,比如:
介面中的圖形和文字可自己設計,這裡我設計的就如上圖所示。
主介面設計好後,那麼根據自己的需求來新增多級介面。
我這裡就設計了**選單介面。
好,那麼對應的介面做好後,就是如何控制介面之間的切換。
/*********************************************
* 建立乙個結構體
* 存放介面標誌位
*/typedef struct
mark;
mark mark_sign;//狀態標誌位
/*********************************************
* 建立乙個列舉
* 存放介面變數
*/enum
;/*******************************************/
switch(mark_sign.inte***ce_mark)
上面這段**用來判斷是**中哪一級介面。
裡面建立了乙個結構體,通過改變結構體裡面的乙個標誌位來控制**介面之間的切換。
那麼就要用到按鍵來改變標誌位的值,這裡我採用了外部中斷來控制。
/*************左搖桿按鍵*****選單 確認按鍵**********************/
if(disable == key_rocker_left)
/************判斷當前介面為選單介面*******************/
else if(menu_inte***ce == mark_sign.inte***ce_mark)
}/************判斷當前介面為任務介面******************/
else if(task_inte***ce == mark_sign.inte***ce_mark)}}
上面這段代功能
/*
* 1,檢測當前按下的按鍵為確認鍵
* 2,檢測當前的介面
* (1)如果是主介面,則進入選單介面
* (2)如果是選單介面,則進入任務介面
* (3)如果是任務介面,則開執行被選中的任務
*/
那麼可以從主介面進入,那怎麼退出呢?
同樣這裡採用外部中斷來控制
/****************右搖桿按鍵****返回按鍵*************************/
if(disable == key_rocker_right)
/************判斷當前介面為任務介面******************/
else if(task_inte***ce == mark_sign.inte***ce_mark)
}
上面這段**的功能
/*
* 1,檢測當前按下的按鍵為返回鍵
* 2,檢測當前的介面
* (1)如果是任務介面,則停止正在執行的任務,返回到選單介面
* (2)如果是選單介面,則返回到主介面
*/
好
通過確認按鍵控制從主介面到選單介面到任務介面的切換。
通過返回按鍵控制從任務介面到選單介面到主介面的切換。
以上就是選單介面的內容,不管你是小白還是正在學習stm32的你,根據這套框架你一樣可以寫出霸氣的選單介面,如果你們還有更好的寫法,歡迎一起討論。
STM32基於SPI的顯示(OLED)
主函式實驗結果 總結本文使用spi 通訊的oled螢幕,晶元使用的是stm32f103zet6。oled模組整體來說比較簡單,就是加字模,調函式的過程。初學者可以好好看看裡面包含的函式,還是很有趣的。oled,即有機發光二極體。oled由於同時具備自發光,不需要光源 對比度高 厚度薄 視角廣 反應速...
stm32多級選單程式設計
定義選單結構體變數 struct menuitem void display struct menuitem menupoint,short selectitem 顯示函式 我自己定義的選單結構體變數 struct menuitem mainmenu 3 struct menuitem setmen...
STM32之串列埠
名稱 stm32之串列埠 說明 對於stm32的串列埠通訊來說,從外部看,和c51差不多。從內部看,啊。我還不了解。從使用上說,也是需要先配置usart,然後通過終端或者輪詢的方式接受或者輸出資料。由於有了韌體庫函式的幫助,stm32的串列埠配置起來比c51還要方便不少。本實驗完成的是輸入輸出重定向...