首頁>Club>
3
回覆列表
  • 1 # Karsa295

    我這按鍵是機械彈性按鍵,所以具有彈性,按鍵在按下和鬆開的瞬間均伴隨有一連串的抖動,鍵抖動會引起一次按鍵被誤

    讀多次,然後為了保證cpu對鍵的一次閉合僅作一次處理,所以我們必須去除抖動。去除抖動有2種,硬體消抖和軟體消抖。

    其中一軟體消抖最方便。所以我就以軟體消抖為例。

    獨立按鍵的原理圖和led的原理圖如上,8個led的陽極都接了vcc(vcc認為是電源正極,gnd認為是電源負極),所以只需要led的陰極接的p2i(i取值0到7)口輸入低電平(即0v)對應的led就可以發亮了.

    接下來看看獨立按鍵的原理圖,首先K1是和rxd管腳相連的,然後rxd管腳又是和P3^1口連線的,所以可以P3^1口是和k1開關連線的,可以知道當k1按鍵按下時電路就導通了,因為k1右邊接了gnd,所以P3^1這個io口的輸出電平就被拉低變0電平了。(p31io口電平能被拉低是因為P3口是準雙向io口),所以我們可以透過判斷P3^1io口的電平來獲知按鍵的狀態,P3^1==1,則按鍵k1沒有按下,P3^1==0,則按鍵k1按下了。

    接下來展示一個透過獨立鍵盤裡的按鍵k1來控制led1的亮滅的程式

    #include<reg52.h>

    sbit led1=P2^0;//因為led1由p2^0口控制

    sbit k1=P3^1;//P31口的輸出電平由按鍵k1控制

    void delay(int i)

    {

    while(i--);

    }

    void keyproc()

    {

    if(k1==0)

    {

    delay(1000);//延時消抖

    if(k1==0)

    {

    led1=~led1;////led1狀態反轉,亮變滅,滅變亮

    }

    while(!k1) ;

    }

    }

    void main()

    {

    while(1)

    {

    keyproc();

    }

    }

    把這程式碼燒到微控制器後,我們一按k1,led1就會亮,再按一次就會滅,一直這樣下去

  • 2 # 中級科技分子steop

    微控制器的獨立按鍵用於一端接地,另一端與I/O引腳相連。按鍵按下為低電平,未按下為高電平。與矩陣鍵盤相比,使用獨立按鍵可以使微控制器程式設計更加簡單,但是浪費I/O口,畢竟微控制器的I/O口是有限的。同時每個按鍵單獨佔用一個I/O口線,每個按鍵的工作不會影響其他I/O口線的狀態。同時,當只需要幾個按鍵的情況,採用獨立按鍵較為合適。

    在按鍵較少的情況下,使用獨立鍵盤配置靈活。但按鍵較多時,就會浪費I/O口線。同時獨立按鍵可以查詢哪個按鍵被按下。

  • 3 # 科技電小二

    很多的嵌入式或者微控制器系統中,一般都需要向嵌入式或者微控制器系統輸入資訊的外設,以及嵌入式或者微控制器向外輸出資訊的外設

    我們常見的顯示屏,數碼管等就是嵌入式或者微控制器系統輸出外設

    觸控板,獨立按鍵等就是嵌入式或者微控制器系統輸入的一種外設。

    所以,關於微控制器系統中運用獨立按鍵的目的,是為了滿足使用者在微控制器系統已有的功能中,選擇自己需要的功能,或者設定對應的引數。

    一般來說,獨立按鍵是透過物理機械式的接觸,將VCC或者GND短接,達到微控制器的某一個IO電平變化的按鍵方式。

    它與矩陣鍵盤,ADC按鍵等其他的按鍵方式,有電路設計簡單穩定,軟體處理簡單的優點,但這種形式相對於矩陣鍵盤和ADC按鍵的形式,更多佔用IO口

    一般獨立按鍵在硬體上設計時,如下圖所示

    採取上拉式,其中的電阻是限流電阻,保護MCU的IO不會損壞,電容是濾波電容,

    按鍵沒有按下時,MCU埠一直高電平,當按鍵按下時,埠就會變為低電平

    在軟體設計過程中,可以採用外部中斷形式,或者IO埠迴圈掃描的形式進行鍵值的獲取,在按鍵狀態獲取時,需要考慮軟體消抖,同時建議不要使用Delay延時,使用時間計數方式來計算按鍵狀態時間,避免了佔用MCU資源,無法處理其他的任務。

    按鍵的運用在軟體中,按鍵的運用較為靈活,當多個按鍵同時存在時,可以透過組合按鍵操作實現某一個功能,但當只有一個按鍵,專案又需要多個功能實現切換的時候,可以考慮,短按+長按,按鍵按中+按鍵鬆開,單擊+雙擊+多擊,多種形式靈活組合實現各個不同的操作流程。

    比如

    關機狀態,短按進入待機X狀態

    待機X狀態短按,進入狀態B,

    待機X狀態,快速多連擊進入狀態D

    等等這樣的操作形式或者流程,就能利用一個獨立按鍵,實現多個功能程式碼的設計。

    獨立按鍵是微控制器系統中一個很重要的設計,簡單運用很簡單,但深入靈活的組合實現也是需要自己仔細琢磨,將獨立按鍵的用法吃透,在實際的專案開發過程中,會讓您的解決問題可選方案增加很多,工作更加得心應手。

  • 4 # 玩轉嵌入式

    按鍵是最常用的輸入方式,學習微控制器時,按鍵輸入是必學習的內容,在大學課程《51微控制器》有介紹,微控制器的按鍵輸入分為獨立式按鍵和矩陣式按鍵。

    1.什麼是獨立式按鍵

    所謂獨立式按鍵就是指,每個按鍵佔用一個GPIO口,如下圖所示,就是兩個獨立按鍵,佔用了兩個微控制器的GPIO口。

    獨立式按鍵在程式設計時比較簡單、方便,但是嚴重浪費微控制器的GPIO口資源。如果一個微控制器系統中有多個按鍵,則需要考慮矩陣式按鍵或者是擴充套件GPIO口。

    2.獨立式按鍵有什麼用

    按鍵都是用作輸入的,在微控制器系統中自然也被當作輸入,微控制器需要檢測按鍵的輸入情況做相應的邏輯處理。如下圖所示,是微控制器所實現的一個數字時鐘,用到了四個獨立按鍵。

    可以利用這四個按鍵來設定時間、設定日期、設定鬧鐘等,從而實現與微控制器的人機互動。

    3.多按鍵的擴充套件方式

    有些場合會用到比較多的按鍵輸入,如用微控制器設計一個多通道的搶答器、用微控制器實現一個計算器、密碼鎖等,這類情況如果再使用獨立式按鍵需要佔用大量的GPIO口。為了節省GPIO,可以透過矩陣式按鍵或者使用串入並出的移位暫存器來擴充套件。

    上圖是典型的矩陣式按鍵的原理圖,透過8個GPIO即可實現4×4的矩陣鍵盤。矩陣式按鍵可以節省GPIO,但是程式相對複雜。

    除了矩陣式按鍵外,還可以使用晶片來擴充套件,如74HC595等。

  • 中秋節和大豐收的關聯?
  • 腰間盤腰肌勞損患者還能從事什麼工作?