單片機(jī)四鍵菜單設(shè)計(jì)思想
要求:能正確的顯示時(shí)間
難點(diǎn)分析:
1.能正確的顯示時(shí)間,在單片機(jī)或是計(jì)算中執(zhí)行每一條指令時(shí)都會(huì)對(duì)自己本身用去機(jī)器周期.所以在設(shè)置定時(shí)器不應(yīng)設(shè)置剛剛好1秒的時(shí)間,應(yīng)該比1些秒少,這一秒的時(shí)間內(nèi)包含定時(shí)器的時(shí)間,執(zhí)行其它指令的時(shí)間.
2.能正確的顯示日歷.在這里看一個(gè)比較簡(jiǎn)單的要示,但是我們必需從簡(jiǎn)單里考慮潤(rùn)年,二月天數(shù),還有大小月的問(wèn)題.這些都是不能忽視的.
注:出錯(cuò)通常都是忽視看似簡(jiǎn)單的問(wèn)題.一個(gè)好的程序員不否定掌握有很用的技術(shù),但是好的技術(shù)員本身基礎(chǔ)是相當(dāng)過(guò)關(guān)的.這也是我今后要注意的問(wèn)題之一.
3.本系統(tǒng)中只配置了四個(gè)鍵.也就是說(shuō)我們所有的調(diào)時(shí)間,調(diào)日歷必需也只能通過(guò)這四個(gè)鍵來(lái)完成.這里有一個(gè)菜單的實(shí)現(xiàn)原理.
實(shí)現(xiàn)方法:
基于以上難點(diǎn)分析我設(shè)計(jì)了以下幾種應(yīng)對(duì)方法.
針對(duì)難1:在這正確的顯示時(shí)間里,我們只要簡(jiǎn)單的設(shè)計(jì)程序,每60秒進(jìn)1分鐘,秒清0,也就是在59過(guò)后加1就清0,照推.分鐘,小時(shí)天按常理照推.
針對(duì)難點(diǎn)2:
能語(yǔ)言實(shí)現(xiàn)語(yǔ)句:if((year %4 ==0 && year %100 !=0)||( year % 400==0))
注:本語(yǔ)句據(jù)今天一朋友說(shuō),她看動(dòng)畫(huà)片的時(shí)候看到本算法是不完善的.在2996年以后就不是正確的,我沒(méi)驗(yàn)證過(guò).準(zhǔn)備找時(shí)間驗(yàn)證一下,如果有朋友看到這文章有興趣的話(huà)也驗(yàn)證一下.到時(shí)別忘了通知我一聲.
針對(duì)難點(diǎn)3:
關(guān)于四鍵設(shè)計(jì)的方法:雖然我們看用過(guò)很多四鍵設(shè)計(jì)的實(shí)物,但是在實(shí)際中我們?nèi)绾卧O(shè)計(jì)程序呢?
我采用的方法是:
(1),從鍵碼掃描程序中讀得鍵值.如果為功能鍵,功能選擇計(jì)數(shù)器計(jì)數(shù)一次,如果是確定,也設(shè)計(jì)的叫退出鍵.則返回選擇計(jì)數(shù)器值.其他的兩個(gè)鍵值則忽略不計(jì),如果在沒(méi)有按過(guò)功能鍵,按了退出鍵的,則返回正常執(zhí)行.
(2):返回了功能選擇.則此時(shí)有三個(gè)鍵起作用了,功能選擇鍵屏蔽.中間兩個(gè),一個(gè)加一個(gè)減,每次按鍵對(duì)NUM加減計(jì)數(shù)器執(zhí)行加或減,當(dāng)執(zhí)行了確定鍵里,返回NUM計(jì)數(shù)器的值.
(3).些時(shí)就完了一次菜單的執(zhí)行.接下就是調(diào)整時(shí)間,或是日歷了.
接下來(lái)就是把數(shù)據(jù)(年,月日,小時(shí),分鐘,秒)寫(xiě)入顯示器(我采用的12864帶字庫(kù)的液晶顯示),
在這里注意的就是液晶地址的安排就好了.
評(píng)論