找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5140|回復(fù): 12
收起左側(cè)

單片機(jī)按鍵問題,按下沒有問題,但是松開后有誤

[復(fù)制鏈接]
ID:425084 發(fā)表于 2018-11-12 16:03 | 顯示全部樓層 |閱讀模式
按鍵的掃描,已經(jīng)完成了,但是現(xiàn)在的問題是,按鍵按下1,會(huì)顯示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;
}        

回復(fù)

使用道具 舉報(bào)

ID:142291 發(fā)表于 2018-11-12 22:10 | 顯示全部樓層
要消除抖動(dòng)問題啊
回復(fù)

使用道具 舉報(bào)

ID:406082 發(fā)表于 2018-11-12 22:24 | 顯示全部樓層
可以用按鍵的上升沿或是下降沿,來判斷按鍵的變化。例如:
  LOOP:  JB P1.0 LOOP  ;高電平時(shí),自循環(huán)
             LCALL DIS    :下降沿調(diào)用顯示子程序
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2018-11-13 06:49 | 顯示全部樓層
設(shè)個(gè)標(biāo)志把按下的狀態(tài)記住,根據(jù)標(biāo)志顯示1,直到另一個(gè)按鍵按下再改變標(biāo)志。
回復(fù)

使用道具 舉報(bào)

ID:425525 發(fā)表于 2018-11-13 10:43 來自觸屏版 | 顯示全部樓層
不是應(yīng)該要消抖嗎
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2018-11-13 14:53 | 顯示全部樓層
15774159760 發(fā)表于 2018-11-13 10:43
不是應(yīng)該要消抖嗎

他出現(xiàn)的問題不是消抖能解決的。
回復(fù)

使用道具 舉報(bào)

ID:425084 發(fā)表于 2018-11-13 16:28 | 顯示全部樓層
xuyaqi 發(fā)表于 2018-11-13 06:49
設(shè)個(gè)標(biāo)志把按下的狀態(tài)記住,根據(jù)標(biāo)志顯示1,直到另一個(gè)按鍵按下再改變標(biāo)志。

沒錯(cuò)就是這個(gè)問題,謝謝
回復(fù)

使用道具 舉報(bào)

ID:425084 發(fā)表于 2018-11-13 16:29 | 顯示全部樓層
應(yīng)該不是抖動(dòng)的問題,延遲代碼已經(jīng)消抖動(dòng)了,是按下時(shí)要把按鍵值給保持住
回復(fù)

使用道具 舉報(bào)

ID:425867 發(fā)表于 2018-11-13 18:07 | 顯示全部樓層
可以用按鍵的上升沿或是下降沿,來判斷按鍵的變化。例如:   LOOP:  JB P1.0 LOOP  ;高電平時(shí),自循環(huán)              LCALL DIS    :下降沿調(diào)用顯示子程序
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2018-11-14 08:19 | 顯示全部樓層
本帖最后由 zl2168 于 2018-11-14 22:26 編輯

那是你程序有問題。給你介紹一個(gè)按鍵參考案例:
4種不同方式鍵控信號(hào)燈
按鍵按能否鎖定可分為有鎖按鍵和無鎖按鍵。有鎖按鍵是按下即能鎖定閉合狀態(tài),只有再次按一下才能解除閉合狀態(tài),回歸斷開狀態(tài)。無鎖按鍵不能鎖定閉合狀態(tài),除非按住鍵不予釋放,典型的例子就是電腦鍵盤上的按鍵。
單片機(jī)應(yīng)用系統(tǒng)中,根據(jù)按鍵閉合和釋放狀態(tài),有多種不同的鍵控方式,可編寫不同的程序予以實(shí)現(xiàn)。本例要求按以下4種不同方式分別鍵控VD0~ VD3。
① 無鎖按鍵:S0按下,VD0亮;S0釋放,VD0暗;
② 無鎖按鍵(前沿有效):S1按下,VD1亮;S1釋放,VD1延時(shí)2s后暗。
③ 無鎖按鍵(后沿有效):S2按下,VD2亮;S2釋放,VD2亮,并延時(shí)2s后暗。
④ 模擬有鎖按鍵:S3按第一次,VD3亮,并繼續(xù)保持;按第二次,VD3才暗
Proteus仿真一下,確認(rèn)有效。
實(shí)例5 不同方式鍵控?zé)?rar (31.72 KB, 下載次數(shù): 11)
4種不同方式鍵控信號(hào)燈.jpg
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語(yǔ)句條條有注解。
回復(fù)

使用道具 舉報(bào)

ID:426190 發(fā)表于 2018-11-14 09:59 | 顯示全部樓層
應(yīng)該不是抖動(dòng)的問題,延遲代碼已經(jīng)消抖動(dòng)了
回復(fù)

使用道具 舉報(bào)

ID:426392 發(fā)表于 2018-11-14 15:29 | 顯示全部樓層

應(yīng)該不是抖動(dòng)的問題,延遲代碼已經(jīng)消抖動(dòng)了
回復(fù)

使用道具 舉報(bào)

ID:425084 發(fā)表于 2018-11-15 08:52 | 顯示全部樓層
zl2168 發(fā)表于 2018-11-14 08:19
那是你程序有問題。給你介紹一個(gè)按鍵參考案例:
4種不同方式鍵控信號(hào)燈
按鍵按能否鎖定可分為有鎖按鍵和 ...

多謝大佬
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表