|
用了4天做了個簡單的電子鐘。MCU:STC89C52RC,自帶字庫的12864液晶顯示,沒用畫圖功能。前三天都在痛苦的折騰二級菜單,從網(wǎng)上找了大量的資料,大部分都說用數(shù)據(jù)結(jié)構(gòu)里的樹來實(shí)現(xiàn)。無奈水平有限,看不懂,也不可能短時間內(nèi)搞明白什么鏈表,樹。終于在昨天下午想出來怎么用簡單的switch case分支實(shí)現(xiàn)。
簡單來說就是先確定你有幾個界面,比如我的開機(jī)后顯示時間,是界面0,按菜單鍵后出來菜單界面,是界面2,3個選項(xiàng),分別對應(yīng)界面3,4,5。然后用個大的switch()case語句。我用cur_level定義界面編號,switch(cur_level){}判斷在不同界面下執(zhí)行不同的函數(shù)。比如我在顯示時間的界面時,cur_level=0;
switch(cur_level){
case 0:
key=0;
key=key_scan();
if(key==1)//按下菜單鍵
{
main_menu();//執(zhí)行菜單顯示函數(shù),只執(zhí)行一次
cur_level=1;//跳到菜單界面
}
break;
case 1:
key=0;
key=key_scan();//在菜單界面掃描按鍵
switch(key){
case 1://1為確定鍵,跳入菜單界面選項(xiàng)一
chang_time();//執(zhí)行修改時間的函數(shù)
cur_level=2;//跳到界面2,主要執(zhí)行修改時間的函數(shù)
break;//12864液晶跳轉(zhuǎn)頁面需要清屏,使用時需注意
//還有其他細(xì)節(jié)東西,需要自己根據(jù)實(shí)際情況進(jìn)行調(diào)節(jié)
... ...
... ...
}
break;
}
//簡單的舉了個例子,不同界面之間就像這樣跳轉(zhuǎn),比什么鏈表的容易理解多了。當(dāng)然如果以后學(xué)會高端的會不屑這樣,但我覺得對新手來說,
能用這種方法解決實(shí)際問題也是很大的收獲。
這算是技術(shù)貼吧,第一次發(fā),寫的不好請見諒。
|
評分
-
查看全部評分
|