新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)四鍵菜單設(shè)計(jì)思想

單片機(jī)四鍵菜單設(shè)計(jì)思想

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



評論


技術(shù)專區(qū)

關(guān)閉