【藍橋杯筆記】獨立按鍵、矩陣鍵盤的使用


按鍵原理圖

 按鍵原理

(1)使用獨立按鍵:

  (使用跳線帽將2、3連接)

  當按鍵S7、S6、S5、S4按下時,分別對應P30、P31、P32、P33引腳的值將變為0。可根據對應引腳的電平來確定相應按鍵是否按下。

(2)使用矩陣鍵盤:

  (使用跳線帽將1、2連接)

  先將行P30~P33其中某一行輸出電平為0,其余行輸出電平為1。掃描列P34、P35、P42、P44,若其中有一列的電平變為0,則對應行列的按鍵按下。

  例如:令P32=0,其余行為1。掃描P34、P35、P42、P44的值,若其中P35=0,則按鍵S13被按下。

使用:

  需要實現三個過程:

  (1)檢測按鍵是否按下

  (2)消抖

    按鍵按下時,相應引腳電平不會直接穩定的由0變為1,而是存在一段前沿抖動。在此過程中容易被誤以為有多次按鍵按下,擾亂程序。因此需要消抖操作。

                 

 

 

     實現:檢測到按鍵第一次按下后,延時一小段時間,使按鍵進入穩定狀態后再檢測。

  (3)防止連續掃描

     實現:直至按鍵抬起后,再結束按鍵掃描。

代碼實現:

(1)獨立按鍵

sbit S7 = P3^0;
sbit S6 = P3^1;
sbit S5 = P3^2;
sbit S4 = P3^3; 

void KEYscan_BTN()
{
    if(S7==0)
    {
        Delay10ms();//消抖 if(S7==0)
        {
            //執行操作
            while(!S7);//防止連續觸發
        }
    }
}

(2)矩陣鍵盤

sbit R1 = P3^0;
sbit R2 = P3^1;
sbit R3 = P3^2;
sbit R4 = P3^3; 

sbit C1 = P4^4;
sbit C2 = P4^2;
sbit C3 = P3^5;
sbit C4 = P3^4;

void KEYscan_KBD()
{
   C1=C2=C3=C4=1;//初始化列
   R2=R3=R4=1; R1
=0;//令某一行輸出為0if(C4==0)//判斷對應的列輸出是否為0 { Delay10ms();//消抖 if(C4==0) { //執行操作while(!C4);//防止多次觸發 } } }

 

總結:

1、使用按鍵先,確定其工作模式(獨立按鍵、矩陣鍵盤),並使用跳線帽進行連接;

2、使用按鍵需要進行消抖和防止多次觸發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM