標(biāo)題: 單片機按鍵問題,按下沒有問題,但是松開后有誤 [打印本頁]
作者: 先來個小目標(biāo) 時間: 2018-11-12 16:03
標(biāo)題: 單片機按鍵問題,按下沒有問題,但是松開后有誤
按鍵的掃描,已經(jīng)完成了,但是現(xiàn)在的問題是,按鍵按下1,會顯示1,但是松開后顯示0.
extern int8u saomiao2X2()
{
int8u temp,key;
int8u col1_temp,col2_temp;
key = 0x0;
//μúò»DD
Row1=0;
Row2=1;
delay(10);
col1_temp=Col1;
col2_temp=Col2;
temp=(col2_temp<<1)|col1_temp;
temp=temp&0x3;
if(temp!=0x3)
{
delay(10);
col1_temp=Col1;
col2_temp=Col2;
temp=(col2_temp<<1)|col1_temp;
temp=temp&0x3;
}
if(temp!=0x3)
{
switch(temp)
{
case 0x02:
key=0;
break;
case 0x01:
key=1;
break;
}
}
//μú¶tDD
Row1=1;
Row2=0;
delay(10);
col1_temp=Col1;
col2_temp=Col2;
temp=(col2_temp<<1)|col1_temp;
temp=temp&0x3;
if(temp!=0x3)
{
delay(10);
col1_temp=Col1;
col2_temp=Col2;
temp=(col2_temp<<1)|col1_temp;
temp=temp&0x3;
}
if(temp!=0x3)
{
switch(temp)
{
case 0x02:
key=2;
break;
case 0x01:
key=3;
break;
}
}
return key;
}
作者: 123321yyy 時間: 2018-11-12 22:10
要消除抖動問題啊
作者: mos03 時間: 2018-11-12 22:24
可以用按鍵的上升沿或是下降沿,來判斷按鍵的變化。例如:
LOOP: JB P1.0 LOOP ;高電平時,自循環(huán)
LCALL DIS :下降沿調(diào)用顯示子程序
作者: xuyaqi 時間: 2018-11-13 06:49
設(shè)個標(biāo)志把按下的狀態(tài)記住,根據(jù)標(biāo)志顯示1,直到另一個按鍵按下再改變標(biāo)志。
作者: 15774159760 時間: 2018-11-13 10:43
不是應(yīng)該要消抖嗎
作者: xuyaqi 時間: 2018-11-13 14:53
他出現(xiàn)的問題不是消抖能解決的。
作者: 先來個小目標(biāo) 時間: 2018-11-13 16:28
沒錯就是這個問題,謝謝
作者: 先來個小目標(biāo) 時間: 2018-11-13 16:29
應(yīng)該不是抖動的問題,延遲代碼已經(jīng)消抖動了,是按下時要把按鍵值給保持住
作者: 2677668536 時間: 2018-11-13 18:07
可以用按鍵的上升沿或是下降沿,來判斷按鍵的變化。例如: LOOP: JB P1.0 LOOP ;高電平時,自循環(huán) LCALL DIS :下降沿調(diào)用顯示子程序
作者: zl2168 時間: 2018-11-14 08:19
本帖最后由 zl2168 于 2018-11-14 22:26 編輯
那是你程序有問題。給你介紹一個按鍵參考案例:
4種不同方式鍵控信號燈
按鍵按能否鎖定可分為有鎖按鍵和無鎖按鍵。有鎖按鍵是按下即能鎖定閉合狀態(tài),只有再次按一下才能解除閉合狀態(tài),回歸斷開狀態(tài)。無鎖按鍵不能鎖定閉合狀態(tài),除非按住鍵不予釋放,典型的例子就是電腦鍵盤上的按鍵。
單片機應(yīng)用系統(tǒng)中,根據(jù)按鍵閉合和釋放狀態(tài),有多種不同的鍵控方式,可編寫不同的程序予以實現(xiàn)。本例要求按以下4種不同方式分別鍵控VD0~ VD3。
① 無鎖按鍵:S0按下,VD0亮;S0釋放,VD0暗;
② 無鎖按鍵(前沿有效):S1按下,VD1亮;S1釋放,VD1延時2s后暗。
③ 無鎖按鍵(后沿有效):S2按下,VD2不亮;S2釋放,VD2亮,并延時2s后暗。
④ 模擬有鎖按鍵:S3按第一次,VD3亮,并繼續(xù)保持;按第二次,VD3才暗。
先Proteus仿真一下,確認(rèn)有效。
4種不同方式鍵控信號燈.jpg (161.52 KB, 下載次數(shù): 55)
下載附件
2018-11-14 22:25 上傳
以上摘自張志良編著《80C51單片機仿真設(shè)計實例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書中電路和程序設(shè)計有詳細說明,程序語句條條有注解。
作者: hanjl 時間: 2018-11-14 09:59
應(yīng)該不是抖動的問題,延遲代碼已經(jīng)消抖動了
作者: applaud 時間: 2018-11-14 15:29
應(yīng)該不是抖動的問題,延遲代碼已經(jīng)消抖動了
作者: 先來個小目標(biāo) 時間: 2018-11-15 08:52
多謝大佬
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |