1. 搖棒的啟動(dòng)
通過(guò)P3.6和P3.7輸出驅(qū)動(dòng)音圈電機(jī)的信號(hào), 由于沒(méi)有設(shè)置檢測(cè)搖棒的傳感器,時(shí)間間隔只能跟據(jù)實(shí)驗(yàn)確定。在調(diào)試中發(fā)現(xiàn),當(dāng)驅(qū)動(dòng)搖棒的信號(hào)轉(zhuǎn)換加速到一定的時(shí)候,從靜止?fàn)顟B(tài)轉(zhuǎn)到正常擺動(dòng)狀態(tài)發(fā)生困難,因此需要由慢到快的驅(qū)動(dòng)過(guò)程。由下面的程序段實(shí)現(xiàn)。
do {
mm--;
DelayMs(120+mm*5); //逐漸縮短延時(shí)間
put1=~put1; put2=~put2; //轉(zhuǎn)換輸出口電平狀態(tài)
}while(mm>0);
2. 秒閃現(xiàn)的實(shí)現(xiàn)
數(shù)字和字符的閃現(xiàn)是通過(guò)變量Ms和數(shù)組w[]實(shí)現(xiàn)的,如需要七位字符中的間的第4位閃現(xiàn),則w[3]=1。這是通過(guò)全局變量Ms在void timer0(void)函數(shù)中每隔一秒改變一次狀態(tài)(0或1),在void timer1(void)函數(shù)中的下列語(yǔ)句中實(shí)現(xiàn)。
if((put1==1)&&(ii<7)&&(Ms*w[ii]==0)) P2=~ASCIIDOC[v[ii]*6+jj]; else P2=0xff;
3. 校正顯示不均勻
調(diào)試中發(fā)現(xiàn),顯示屏上的字符并不是一樣寬的,仔細(xì)分析是由于搖棒在運(yùn)動(dòng)中一直受力,使搖棒產(chǎn)生加速運(yùn)動(dòng),這樣就需要在程序中加一校正因子,逐漸縮短顯示的時(shí)間段。具體是通過(guò)變量tt在函數(shù)void timer1(void)中實(shí)現(xiàn)的。
4. 按鍵去抖程序
按鍵的去抖采用軟件編程實(shí)現(xiàn),其方法是當(dāng)檢測(cè)到按鍵的接口出現(xiàn)低電平后,隔一段時(shí)間再檢測(cè),如還是低電平,則確認(rèn)為有效,否則無(wú)效。具體的程序是通過(guò)函數(shù)unsigned char ChKey(bit Key)實(shí)現(xiàn)。
5. 顯示同步
調(diào)試時(shí)要根據(jù)實(shí)際情況確定Ti的值,保證顯示正常。
6.預(yù)留的部分功能
提供的程序除提供了一個(gè)完整的時(shí)鐘程序外,還預(yù)留了顯示七個(gè)字符功能(見(jiàn)圖12),只是主程序要作一些修改。
?
圖12