單片機(jī)按鍵去抖動(dòng)程序設(shè)計(jì)思路_第1頁
單片機(jī)按鍵去抖動(dòng)程序設(shè)計(jì)思路_第2頁
單片機(jī)按鍵去抖動(dòng)程序設(shè)計(jì)思路_第3頁
單片機(jī)按鍵去抖動(dòng)程序設(shè)計(jì)思路_第4頁
單片機(jī)按鍵去抖動(dòng)程序設(shè)計(jì)思路_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、單片機(jī)按鍵去抖動(dòng)程序設(shè)計(jì)思路徐麗紅 王佰營在單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)中,人機(jī)界面部分的友好 程度,很大一部分取決于鍵盤處理程序。在按鍵時(shí)按得快了沒有反應(yīng), 按慢了一連響應(yīng)幾次,總給人緊迫感或遲鈍感,不能使人滿意。用以下思路設(shè)計(jì)的鍵處理程序取得了滿意效果。判斷有沒有鍵值:1若有鍵值:判斷是否為首次按下:A:若首次按下:判斷是否與上次按下的鍵值 相同a.若相同再判斷:是否已經(jīng)按下了300ms?1).若已經(jīng)按下300ms則將此鍵做為連鍵處理。2).若不是連鍵則判斷:是 否按下20ms?1.若確認(rèn)按下 20ms,得到有效鍵值等待彈起2. 若不是按 下20ms直接結(jié)束處理(ret)。b.若不相同則將標(biāo)志清零結(jié)

2、束處理 (ret) oB:若不是首次按下:將鍵值暫存起來,標(biāo) 志置位結(jié)束處理。2.若無鍵值:判斷是否有鍵值已被確認(rèn)A.若有鍵已被確認(rèn):判斷按鍵是否首次抬起a.若首次抬起:判斷抬起延時(shí)時(shí)間(20ms)是否到達(dá)1.若延時(shí)到則將標(biāo)志處理結(jié)束處理。2.若延時(shí)未到直接結(jié)束處 理(ret) ob.若非首次抬起:直接結(jié)束處理(ret) oB.若沒有鍵被確認(rèn):直接結(jié)束處理(ret) o具體程序?qū)崿F(xiàn)流程圖如下:(所有延時(shí)均為非阻塞式 延時(shí))LclI scan_key為調(diào)用鍵掃描程序;簡單的按鍵處理程序見:簡單、友好的按鍵處理程序設(shè) 計(jì)王佰營徐麗紅在嵌入程序設(shè)汁中,鍵處理程序在一定程度上決定著人機(jī)對(duì)話界面的友好程

3、 度。WINDOWS是公認(rèn)的界面友好的典范,我們就借鑒WINDOWS的鍵處理的 思想:1.當(dāng)擊鍵時(shí)WINDOWS立即作出響應(yīng);2.當(dāng)按住鍵不放時(shí),WINDOWS延遲一定時(shí)間來判斷是否為連鍵;其間不作響應(yīng);3當(dāng)認(rèn)為是連鍵時(shí),會(huì)間隔一定時(shí)間重復(fù)作出響應(yīng);(可以打開記事本,敲個(gè)h鍵試驗(yàn):瞬時(shí)敲擊,即可出現(xiàn),再按著鍵不放,無k出現(xiàn),當(dāng)延遲一定時(shí)間k ,就以較快速度出現(xiàn);)在C8051F020和DSP編程中運(yùn)用上述的思想所編的鍵處理程序非常簡捷、高效和友好,以下為該程序的流程圖:bkiiotl=0?YXkey_ok=key_tmpkeyclk =4keydly =50bkiiotl =0bksure =

4、0bcontinue =0開fkey tmp=0? n r Ikey_clk =4bcontinue =0?JLN key dlykey dly -1bksme =1bcontinue =1key_dly =0?keydly =3? Y | N根據(jù)該流程的51系列單片機(jī)程序和DSP程序:1、C8051F020單片機(jī)程序如下:input:output:key.bsureusage: a, bkey_filter:;鍵盤去抖程序lcallscan_keyjzkf_no;a=0?Jbbfirst,kf_lth;first down?movb,amova,k_dlyjnzkf_ret;20ms 到了嗎

5、?mova,b;20ms到cjnea,key_tmp, kf_no;a=k_tmp?movk_dly,#10;a=k_tmpdecdly_kjnbbfast,kf_nofast;是連鍵嗎?kf_isO:mova,dly_k;是連鍵jnzkf_ret;300ms/160ms?movdly.k,#12;fast OK!sjmp kf_ftokkf nofast:mova,dly_k;不是連嗎? kf_ftok:kf_ret:kf_lth:cjnea,#24, kf_isO;延時(shí)了 1 次movkey,key_tmp;first OK!setbbkey_dosetbbfastretmovk_ily,

6、#10;first downmovkey.tmp,amovdly_k,#25clrbfirstclrbfastret2、LF2407型DSP程序如下:;function:judge_key鍵值判斷;input:一;output:;usege:ACCjudge.key:;鍵值判斷l(xiāng)dp# PEDATDIR7lacl PEDATDIRcmpland #00110110bldp# DP.B01sacl key_tmpbend k_down,NEQ ;CATCH KEY?ldp #DP_B01splk#00h,bknot 1k_down:lacl bknot 1bend not_first,lacl key_tmpsacl key_oksplk#04.key_clksplk#50,key_dlysplk#l l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論