第78節(jié):在多個(gè)窗口里通過(guò)移動(dòng)光標(biāo)來(lái)設(shè)置不同參數(shù)的液晶屏菜單程序
從業(yè)近十年!手把手教你單片機(jī)程序框架 第78講
開(kāi)場(chǎng)白:
上一節(jié)講了1個(gè)窗口下如何設(shè)置參數(shù)的菜單程序,這一節(jié)多增加1個(gè)窗口變成2個(gè)窗口,看看它們兩個(gè)窗口之間是如何通過(guò)按鍵程序進(jìn)行切換的。繼續(xù)鞏固上一節(jié)教給大家的兩個(gè)知識(shí)點(diǎn):
第一個(gè)知識(shí)點(diǎn):我在前面講數(shù)碼管顯示的時(shí)候就提出了一個(gè) “一二級(jí)菜單顯示理論”:凡是人機(jī)界面顯示,不管是數(shù)碼管還是液晶屏,都可以把顯示的內(nèi)容分成不同的窗口來(lái)顯示,每個(gè)顯示的窗口中又可以分成不同的局部顯示。其中窗口就是一級(jí)菜單,用ucWd變量表示。局部就是二級(jí)菜單,用ucPart來(lái)表示。不同的窗口,會(huì)有不同的更新顯示變量ucWdXUpdate來(lái)對(duì)應(yīng),表示整屏全部更新顯示。不同的局部,也會(huì)有不同的更新顯示變量ucWdXPartYUpdate來(lái)對(duì)應(yīng),表示局部更新顯示。把每一個(gè)窗口的內(nèi)容分為兩種類(lèi)型,一種類(lèi)型是那些不用經(jīng)常刷新顯示的內(nèi)容,只有在切換窗口的時(shí)候才需要更新的,這種內(nèi)容放在整屏更新顯示的括號(hào)里,比如清屏操作等內(nèi)容。另外一種是那些經(jīng)常需要刷新顯示的內(nèi)容,這種內(nèi)容放在局部更新顯示的括號(hào)里。
第二個(gè)知識(shí)點(diǎn):按鍵如何跟液晶屏顯示有機(jī)的結(jié)合起來(lái)?只要遵循鴻哥總結(jié)出來(lái)的一個(gè)規(guī)律“在不同的窗口下,根據(jù)不同的局部變量來(lái)操作不同的參數(shù)”,這樣再?gòu)?fù)雜的人機(jī)交互程序都會(huì)顯得很簡(jiǎn)單清晰。
具體內(nèi)容,請(qǐng)看源代碼講解。
(1)硬件平臺(tái):基于朱兆祺51單片機(jī)學(xué)習(xí)板。加按鍵對(duì)應(yīng)S1鍵,減按鍵對(duì)應(yīng)S5鍵,切換“光標(biāo)”移動(dòng)按鍵對(duì)應(yīng)S9鍵,設(shè)置參數(shù)按鍵對(duì)應(yīng)S13鍵。
(2)實(shí)現(xiàn)功能:
通過(guò)按鍵設(shè)置8個(gè)不同的參數(shù)。
有2個(gè)窗口。每個(gè)窗口顯示4個(gè)參數(shù)。每個(gè)參數(shù)的范圍是從0到99。
有4個(gè)按鍵:
(a) 一個(gè)是設(shè)置參數(shù)S13按鍵,按下此按鍵,液晶屏的第1個(gè)窗口第一行會(huì)出現(xiàn)反顯的光標(biāo),表示進(jìn)入設(shè)置參數(shù)模式,再次按下此按鍵,反顯光標(biāo)會(huì)消失,并且強(qiáng)行切換到第1個(gè)窗口,表示退出設(shè)置參數(shù)模式。
(b) 一個(gè)是移動(dòng)光標(biāo)S9按鍵,在進(jìn)入設(shè)置參數(shù)的模式下,依次按下此按鍵,液晶屏上的光標(biāo)會(huì)從上往下移動(dòng),表示選中不同的參數(shù)。當(dāng)移動(dòng)到每個(gè)窗口最下邊那一行時(shí),再按下此按鍵會(huì)進(jìn)行切換窗口的操作。
(c) 一個(gè)是減數(shù)S5按鍵,在設(shè)置參數(shù)模式下,依次按下此按鍵,被選中的參數(shù)會(huì)逐漸減小。
(d) 一個(gè)是加數(shù)S1按鍵,在設(shè)置參數(shù)模式下,依次按下此按鍵,被選中的參數(shù)會(huì)逐漸加大。
(3)源代碼講解如下:
總結(jié)陳詞:
這一節(jié)講了在多個(gè)窗口里設(shè)置不同的參數(shù)。還有一種常見(jiàn)的項(xiàng)目,要求把第1窗口是用來(lái)作為主菜單,主菜單里面有3個(gè)子菜單,可以通過(guò)移動(dòng)光標(biāo)進(jìn)入不同的子菜單窗口進(jìn)行參數(shù)設(shè)置,這類(lèi)項(xiàng)目該如何編程?欲知詳情,請(qǐng)聽(tīng)下回分解-----通過(guò)主菜單移動(dòng)光標(biāo)來(lái)進(jìn)入子菜單窗口的液晶屏程序。