最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

按鍵去抖動問題

作者:zhangli222 欄目:單片機(jī)
按鍵去抖動問題
按鍵如何去抖動?怎樣延時?有沒有可以參考的程序?請大蝦幫忙。多謝!

2樓: >>參與討論
有意思
定時器
定時器2ms掃描,如果是低電平有按鍵,在T0中斷中讀出IO口為0則Count++;
直到一個值,如50,if(Count == 50)Key = 1;
中間只要有一次為1,則Count = 0;

3樓: >>參與討論
zhangli222
多謝
多謝,我再看一下,希望路過的大蝦多多指教。

4樓: >>參與討論
etual
這個嘛
判斷有健 --->  延時>20ms ----> 判斷是否有健,有的話操作,沒有的話跳出,大概流程是這樣 ,延時是肯定要的,具體時間要求不大,大于 10ms都沒有什么問題,看個人習(xí)慣了 ...... --

最簡單的是死循環(huán),用指令來計(jì)時,(如果你一條指令 1us 的話,則原地循環(huán)  20000 次就OK,時間到),一般是雙重循環(huán)嵌套來做的。

以上就是所謂的教學(xué),基本上所有的教科書都會那樣說,但是,老實(shí)話,具體設(shè)計(jì)的時候這樣是行不通的,20ms是很長的時間啊,單片機(jī)可以做很多很多東西了 .......不可能用死循環(huán)的 .......

5樓: >>參與討論
hotpower
典型的教條主義~~~
 
6樓: >>參與討論
liyong110
很簡單的
分時掃描不就行了!!!!!!!!
連續(xù)2次得到同樣結(jié)果就認(rèn)為有效.不耽誤MCU效率!!!!
還能降低功耗!!!!
例如4*4鍵盤.用標(biāo)志位2個,寄存器(AUTO)3個!就什么都搞定了!!!!

7樓: >>參與討論
maychang
hotpower不厚道
說一句就走。

8樓: >>參與討論
談的元
就如liyong110說
就如liyong110說 ,


檢測到有效時  積儲器加一,無效清零。


檢測積存器大于等于某值開命令。

程序開始
nop
nop
;;;;;;;;;
if(按鍵==有效  AND  積存器Q <M);M一般取個3-5就可以了。
積存器Q==積存器+1
if(按鍵==無效 )
積存器Q==0
;;;;;;;;
;;;;;;;;;
if(積存器Q>=N);;當(dāng)然你的n要小于m
打開命令
if(積存器Q<N)
關(guān)命令



9樓: >>參與討論
dengm
狀態(tài)機(jī)(ms basic)
    KEY_SCAN = 1
    STATUS   =0

SUB_SCAN:
    KEY = READ_KEY(KEY_SCAN)
    IF KEY_SCAN = KEY_MAX THEN KEY_SCAN =0
    KEY_SCAN = KEY_SCAN + 1
    
    ON STATUS GOTO ST_1, ST_2, ST_3
ST_0:
      IF KEY <> 0 THEN
        KEY_CODE = KEY
        KEY_DELAY = (KEY_MAX + 2)
        STATUS = 1
      END IF
      EXIT SUB

ST_1:
     IF KEY = KEY_CODE THEN
        KEY_DELAY = KEY_DELAY + KEY_MAX
        IF KEY_DELAY>(KEY_MAX + 10) THEN
          F_KEY_PRESS = TRUE
          STATUS = 2
        END IF
     ELSE
       KEY_DELAY = KEY_DELAY - 1
       IF KEY_DELAY=0 THEN STATUS =0
     END IF
     EXIT SUB

ST_2:
     KEY_DELAY=KEY_DELAY-1
     IF KEY_DELAY=0 THEN
          STATUS =3
     END IF
     EXIT SUB

ST_3:
       IF NOT F_KEY_PRESS THEN
          KEY_CODE = 0
          STATUS =0
       END IF
     END SUB


* - 本貼最后修改時間:2007-1-15 23:34:33 修改者:dengm

10樓: >>參與討論
有意思
堅(jiān)決不用軟件延時
2ms定時掃描,有鍵,cnt++;直到指定次數(shù)
中間有一次為無鍵,cnt=0;
抗干擾

11樓: >>參與討論
hotpower
倒塌了~~~這個問題確實(shí)不想多說了~~~
在21ic這個問題和狗論可能是我灌水最多的...

現(xiàn)在想"吐"~~~倒塌了~~~

看來哪天要來個"鍵盤論"了~~~

老樹惡搞的<<如何掃描按鍵?>>

12樓: >>參與討論
lininglive
暈暈乎沒有個高手來定論阿。!
暈暈乎沒有個高手來定論阿。!不要總說理論 有沒有實(shí)際經(jīng)驗(yàn)的說一說

13樓: >>參與討論
有意思
暈死
這個問題........


14樓: >>參與討論
程序匠人
按鍵處理相關(guān)文章
讓你一次倒塌個夠吧!



日志標(biāo)題 作者 日期 評論
C語言嵌入式系統(tǒng)編程修煉之道——鍵盤操作篇 cxjr 10-29 0
cxjr 10-19 7
單片機(jī)系統(tǒng)鍵盤的設(shè)計(jì)小結(jié) cxjr 10-12 0
經(jīng)典按鍵防抖動51匯編程序(zt) cxjr 10-12 1
經(jīng)典防抖動鍵C51源程序(zt) cxjr 10-12 0
《匠人手記》21《多種擊鍵類型的處理流程圖》.pdf cxjr 10-8 2
MSP430 按鍵程序范例(附原理圖) cxjr 9-20 0
HT6221/2解碼成標(biāo)準(zhǔn)的鍵值 cxjr 9-7 0
按鍵掃描驅(qū)動程序 cxjr 8-1 -2
一種用N+1個I/O口實(shí)現(xiàn)的N×N矩陣式鍵盤 cxjr 7-28 1
嵌入式人機(jī)界面中的鍵盤及其接口設(shè)計(jì) cxjr 6-25 1
關(guān)于單鍵開關(guān)電路的網(wǎng)游散記 cxjr 6-23 3
MSP430鍵盤程序 cxjr 6-18 0
一種軟件去除鍵抖動的方法 cxjr 6-17 2
按鍵程序設(shè)計(jì),可以處理加速鍵、一鍵多功能等情況(... cxjr 6-9 2
矩陣式鍵盤接口技術(shù)及編程 cxjr 4-26 0
一種另類的鍵盤擴(kuò)展方法 cxjr 3-13 0
基于MSP430F149單片機(jī)的鍵盤顯示系統(tǒng) cxjr 3-12 0
《匠人手記》12《單個按鍵多次擊鍵的檢測方法》.pdf cxjr 2-26 0
《匠人手記》11《按鍵漫談》.pdf cxjr 2-12 0
C語言嵌入式系統(tǒng)編程修煉之五:鍵盤操作! cxjr 1-10 1
平凡單片機(jī)教學(xué)——第二十五講 矩陣式鍵盤接口... cxjr 1-7 0
平凡單片機(jī)教學(xué)——第二十四講 鍵盤接口與編程 cxjr 1-7 0
4×4矩陣式鍵盤識別技術(shù)(3) cxjr 1-6 0
4×4矩陣式鍵盤識別技術(shù)(2) cxjr 1-6 0
4×4矩陣式鍵盤識別技術(shù)(1) cxjr 1-6 1
支持鍵盤雙擊事件的C程序設(shè)計(jì) cxjr 12-9 0
鍵盤接口軟件設(shè)計(jì) cxjr 11-10 0
CH451的LED驅(qū)動及8*8鍵盤驅(qū)動程序 cxjr 11-10 2
按鍵掃描驅(qū)動程序 cxjr 11-10 0
8條口線24按鍵的C51源程序 cxjr 11-10 0
AT89S51單片機(jī)試驗(yàn)及實(shí)踐教程之一鍵多功能按鍵識別... cxjr 11-9 0
cxjr 11-8 0
8個IO接36個按鍵(沒有用二極管)--鍵掃描程序 cxjr 10-22 0
cxjr 7-28 2
20鍵PS2小鍵盤中斷服務(wù)程序 cxjr 10-16 0
cxjr 9-29 0
cxjr 9-29 0
來自網(wǎng)友 xwj 的 按鍵程序設(shè)計(jì)方法 cxjr 9-13 0
ProtelDXP 快捷鍵大全 cxjr 9-6 0


日志標(biāo)題 作者 日期 評論
FREESCALE H08C鍵盤中斷子函數(shù)的頭文件"... cxjr 9-1 1
FREESCALE H08C鍵盤中斷子函數(shù)(c) cxjr 9-1 0
我是一個鍵盤 cxjr 8-23 0
支持鍵盤雙擊事件的C程序設(shè)計(jì) cxjr 8-17 0
一個比較通用的行列鍵盤程序(KEY .H) cxjr 8-17 0
一個比較通用的行列鍵盤程序(KEY.C) cxjr 8-17 2
單片機(jī)驅(qū)動標(biāo)準(zhǔn)PC機(jī)鍵盤的C51程序 cxjr 8-8 0
PC機(jī)鍵盤按鍵通碼與ASCII對照表 cxjr 8-8 0
《多個按鍵的連按處理技巧》大話篇 cxjr 6-1 5
《一個按鍵的多次擊鍵組合判別技巧》大話篇 cxjr 6-1 2


日志標(biāo)題 作者 日期 評論
96個key的零延時采集 cxjr 11-10 0
The PC's KEYBOARD.



點(diǎn)擊查看《按鍵處理相關(guān)文章》

15樓: >>參與討論
hotpower
倒塌了~~~匠人數(shù)數(shù)里面有幾個"倒塌鍵盤"???
哈哈~~~

16樓: >>參與討論
conwh
高家莊的地道各有各的高招
 
17樓: >>參與討論
gezhi
我相信這問題沒有權(quán)威的解決辦法。
這問題應(yīng)該根據(jù)實(shí)際應(yīng)用環(huán)境,選擇多次讀取,或延時確認(rèn)等。

18樓: >>參與討論
bird777
玩泡泡
20鍵以上,hotpower不心痛RAM.我要心痛難過了.1個字節(jié)1條命!
一般如果RAM用量過剩,用用hotpower的偽OS比較爽.
事實(shí)上,當(dāng)RAM需求量大時,只有舍棄非典了.
中斷+dengm給出狀態(tài)機(jī)思路是永遠(yuǎn)正確的指導(dǎo)方針,即使非便攜式系統(tǒng)(不用省電),鍵盤掃描工作也要移到中斷函數(shù)中去管理(不一定要定時中斷,只要帶周期性的就可以).要好好理解,它的高度相當(dāng)于系統(tǒng)函數(shù).





19樓: >>參與討論
yewuyi
給出一段示范代碼

                            keyval=disport&keyall;
                            if(keyval==0){keyvalbuf=0x00;keypresscnt=0x00;}    //無鍵動作
                            else{                                            //有鍵動作
                                if(keyval==keyvalbuf){maincase=keyact;nullkey30s=1500;}                //輸出一次鍵值
                                else{keypresscnt=0x00;keysingle=0;keycontinue=0;keyvalbuf=keyval;}    //做消抖動作
                                }

20樓: >>參與討論
xwj
問之前先搜索,再問這種問題先打PP!
 
21樓: >>參與討論
yewuyi
說明一下:
KEY復(fù)用到disport,有鍵工作為高電平,否則是低電平。

keyval=0表示所有的鍵都沒有按下。

把這一段加入到周期掃描里面去,具體鍵值執(zhí)行則由keyscan()決定,keyact決定執(zhí)行keyscan()
在keyscan()包含在main里面,所有的鍵狀態(tài)在里面解析。


這一段程序最多只支持8鍵定義,具體多少鍵有keyall參數(shù)決定。
鍵意解析、鍵單擊、長擊、復(fù)合鍵、按下有效、彈起有效等全部在keyscan()里面完成。
如果你看懂了這段示范,要支持更多的鍵就很容易了……

明白了嗎?

:::另一點(diǎn)我不同意在計(jì)算類如長擊時間時用減法,俺個人認(rèn)為用加法可以少用很多RAM,并且可以減短代碼。

22樓: >>參與討論
liyong110
啊暈!!!
一個鍵盤居然引來如此多人啊!
大家討論點(diǎn)有價值的東西好不好啊!
大家問問題之前也想一想,這些東西就算沒做過只要用腦袋仔細(xì)想想就OK了!!
希望以后不在出現(xiàn)類似問題哦!!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請問,如果A/D的工作電壓范圍為3.5--6V之間,
232轉(zhuǎn)485的電路,能收不能發(fā),帶電路圖片,請指教
要用非門,但是不知道芯片型號
請問  為什么沒有限流電阻
C51移位問題
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號