從業(yè)近十年!手把手教你單片機程序框架 第79講
開場白:
其實主菜單窗口與子菜單窗口本質(zhì)都是多窗口菜單程序,只不過我在按鍵服務程序里面建立起來了一條主窗口與子窗口的關系鏈。這個關系鏈還是用switch語句搭建起來的,在某個窗口某個局部顯示上,操作某個按鍵就會切換到不同的窗口顯示。
繼續(xù)鞏固上一節(jié)教給大家的兩個知識點:
第一個知識點:我在前面講數(shù)碼管顯示的時候就提出了一個 “一二級菜單顯示理論”:凡是人機界面顯示,不管是數(shù)碼管還是液晶屏,都可以把顯示的內(nèi)容分成不同的窗口來顯示,每個顯示的窗口中又可以分成不同的局部顯示。其中窗口就是一級菜單,用ucWd變量表示。局部就是二級菜單,用ucWdxPart來表示。不同的窗口,會有不同的更新顯示變量ucWdXUpdate來對應,表示整屏全部更新顯示。不同的局部,也會有不同的更新顯示變量ucWdXPartYUpdate來對應,表示局部更新顯示。把每一個窗口的內(nèi)容分為兩種類型,一種類型是那些不用經(jīng)常刷新顯示的內(nèi)容,只有在切換窗口的時候才需要更新的,這種內(nèi)容放在整屏更新顯示的括號里,比如清屏操作等內(nèi)容。另外一種是那些經(jīng)常需要刷新顯示的內(nèi)容,這種內(nèi)容放在局部更新顯示的括號里。
第二個知識點:按鍵如何跟液晶屏顯示有機的結(jié)合起來?只要遵循鴻哥總結(jié)出來的一個規(guī)律“在不同的窗口下,根據(jù)不同的局部變量來操作不同的參數(shù)”,這樣再復雜的人機交互程序都會顯得很簡單清晰。
具體內(nèi)容,請看源代碼講解。
(1)硬件平臺:基于朱兆祺51單片機學習板。加按鍵對應S1鍵,減按鍵對應S5鍵,切換“光標”移動按鍵對應S9鍵,設置參數(shù)按鍵對應S13鍵。
(2)實現(xiàn)功能:
通過按鍵設置6個不同的參數(shù)。
有4個窗口。第1個窗口是主菜單界面,通過光標切換可以進去設置不同參數(shù)的子菜單界面。第2個窗口是設置時間范圍界面。第3個窗口是設置速度范圍界面。第4個窗口是設置頻率范圍界面。每個設置界面顯示2個參數(shù)。每個參數(shù)的范圍是從0到99。
有4個按鍵:
(a) 一個是進入和退出S13按鍵,按一次進入選中的子菜單。再按一次退出子菜單。
(b) 一個是移動光標S9按鍵,依次按下此按鍵,液晶屏上的光標會從上往下移動,表示選中不同的參數(shù)。當移動到每個窗口最下邊那一行時,再按下此按鍵會把光標移動到第一個參數(shù)。
(c) 一個是減數(shù)S5按鍵,在設置參數(shù)模式下,依次按下此按鍵,被選中的參數(shù)會逐漸減小。
(d) 一個是加數(shù)S1按鍵,在設置參數(shù)模式下,依次按下此按鍵,被選中的參數(shù)會逐漸加大。
(3)源代碼講解如下:
總結(jié)陳詞:
我前面幾節(jié)液晶屏程序的字模都是通過外圍工具軟件生成的,其實這款12864液晶模塊本身就是自帶字庫,編程的時候只要在源代碼里直接寫入所需要的漢字或者字符,就可以自動調(diào)用相對應的字庫了。但是細心的網(wǎng)友一定會問,為什么在源代碼上直接寫入某個漢字就可以調(diào)用到這個漢字的字庫?在這個過程中,C51編譯器到底還干了哪些鮮為人知的好事?欲知詳情,請聽下回分解-----液晶屏自帶字庫跟漢字機內(nèi)碼的關系。