單片機按鍵去抖動程序設計思路_第1頁
單片機按鍵去抖動程序設計思路_第2頁
單片機按鍵去抖動程序設計思路_第3頁
單片機按鍵去抖動程序設計思路_第4頁
免費預覽已結束,剩余4頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、則將標志清零結束處理(ret )。B :若不是首次按下:將鍵值暫存起來,標志置位結束處理。2. 若無鍵值:判斷是否有鍵值已被確認A. 若有鍵已被確認:判斷按鍵是否首次抬起a. 若首次抬起:判斷抬起延時時間(20ms )是否到達1.若延時到則將標志處理結束處理。2.若延時未到直接結束處理(ret )。b.若非首次抬起:直接結束處理(ret )。B. 若沒有鍵被確認:直接結束處理(ret )。具體程序實現流程圖如下:( 所有延時均為非阻塞式延時)Lcll scan_key-為調用鍵掃描程序;簡單的按鍵處理程序見:簡單、友好的按鍵處理程序設計簡單、友好的按鍵處理程序設計王佰營徐麗紅在嵌入程序設計中,

3、鍵處理程序在一定程度上決定著人機對話界面的友好程度。 WINDOWS 是公認的界面友好的典范,我們就借鑒WINDOWS 的鍵處理的思想:1. 當擊鍵時 WINDOWS 立即作出響應;2. 當按住鍵不放時, WINDOWS 延遲一定時間來判斷是否為連鍵;其間不作響應;3. 當認為是連鍵時,會間隔一定時間重復作出響應;(可以打開記事本,敲個 h 鍵試驗: 瞬時敲擊,即可出現 h,再按著鍵不放,無 h出現,當延遲一定時間 h,就以較快速度出現 ;)在 C8051F020和 DSP 編程中運用上述的思想所編的鍵處理程序非常簡捷、高效和友好,以下為該程序的流程圖:根據該流程的 51 系列單片機程序和DS

4、P程序:1、C8051F020單片機程序如下:;=; function: key_filter;鍵盤去抖程序 - 徐麗紅; input: a; output: key.bsure; usage: a,b;=key_filter: ;鍵盤去抖程序lcall scan_keyjzkf_no;a=0?jbbfirst,kf_1th;first down?movb, amova, k_dlyjnzkf_ret;20ms到了嗎 ?mova, b;20ms到cjne a, key_tmp,kf_no ;a=k_tmp?movk_dly, #10;a=k_tmpdecdly_kjnbbfast, kf_no

5、fast ;是連鍵嗎 ?kf_is0:mova,dly_k;是連鍵jnzkf_ret;300ms/160ms?movdly_k, #12;fast OK!sjmp kf_ftokkf_nofast:mova,dly_k;不是連鍵cjnea,#24, kf_is0;延時了 1 次嗎?kf_ftok:movkey,key_tmp;first OK!setbbkey_dosetbbfastkf_ret:retkf_1th:movk_dly, #10;first downmovkey_tmp, amovdly_k, #25clrbfirstclrbfastret2、LF2407 型 DSP 程序如下:

6、;-;function:judge_key鍵值判斷;input:-;output:-;usege:ACC;-judge_key:;鍵值判斷ldp#PEDATDIR7laclPEDATDIRcmpland#00110110bldp#DP_B01saclkey_tmpbcndk_down,NEQ;CATCH KEY?ldp#DP_B01splk#00h,bknot1retk_down:lacl bknot1bcndnot_first,NEQ;first?lacl key_tmpsaclkey_oksplk#04,key_clksplk#50,key_dlysplk#11h,bknot1splk#0

7、0h,bksuresplk#00h,bcontinueretnot_first: laclkey_clk;N timesbcndT_over,EQ ;12ms?retT_over:lacl key_ok;12msxorkey_tmpbcndIs_same,EQ ;same key?splk#00h,bknot1retIs_same:splk#4,key_clklacl bcontinuebcndIs_fast,NEQ ;continue?OK_key:splk#11h,bcontinuesplk#11h,bksureretIs_fast: laclkey_dly;key_dly-sub#01hsaclkey_dlybcndtuch_set,EQ ;500/300ms?rettuch_set:splk#25,key_dlybOK_key該

溫馨提示

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

最新文檔

評論

0/150

提交評論