首頁>Club>
8
回覆列表
  • 1 # RIVO夜視儀

    如圖舉例,這是用最少的IO來採集按鍵資料。使用mcu的adc管腳,按圖連線,不同的按鍵按下去,sw_ad0的電壓值都不一樣,從而可以檢測出具體是哪個按鍵觸發的。

    一.sw1具有優先權。

    二.理論可以擴充套件無數個按鍵,但由於受電壓穩定性和adc採集精度影響,實際能使用的按鍵不會太多。

    三.透過調節電壓和電阻的值,一般採集十來個按鍵沒問題。

    四.圖中已經把常用值和公式列出,僅做參考。

  • 2 # 玩轉嵌入式

    按鍵是一個比較典型常用的輸入器件,微控制器可以檢測按鍵的狀態從而執行相應的命令,所以題目的合適含義應該是,如何用較少的IO口檢測更多的按鍵輸入。

    由於微控制器的GPIO口是有限的,要實現更多的按鍵檢測只能透過擴充套件IO來實現,今天給大家分享的就是透過使用74HC165來實現GPIO口的擴充套件,可以實現更多按鍵的輸入檢測。

    74HC165是併入傳出的移位暫存器,單片74HC165具有8個輸入三個輸出,所以透過微控制器的三個GPIO口就可以實現8個按鍵的輸入檢測,更重要的是該晶片可以級聯,透過3個GPIO可以檢測更多的按鍵輸入。以三片級聯為例,介紹其使用方法,其典型的電路圖如下所示。

    透過圖片可以看出,擴充套件晶片的第1,2,9三個腳接微控制器,透過第10腳和下一片的9腳實現級聯。透過3個GPIO就擴展出了24個按鍵輸入檢測。其程式如下圖所示。

    該晶片與74HC595的作用正好相反,74HC是串入並出,可以用來驅動數碼管等器件。74HC165的程式與74HC595存在一定的相似之處。在編寫程式時,要注意檢視晶片的時序圖,要在時鐘的邊沿狀態讀取資料。

  • 3 # zibuyu

    我說一個做產品常用到的方法。用按鍵掃描驅動晶片。比如類似TM1638。不佔用系統資源,可以掛很多按鍵,還能驅動數碼管。整個系統分工明確,程式簡單。還可以騰出MCU用於其它事件計算處理。

  • 4 # 電子產品設計方案

    題主這個問題很有意思。我們做產品設計中也經常遇到這種困擾,微控制器(MCU)的資源是有限的。我們需要考慮怎麼用最低的成本做出最好的產品來。如果用IO擴充套件的方法當然是可行的,但不是節省成本的方案。

    下面給大家分享一下驅動(讀取)按鍵時怎麼樣去節省IO資源。

    方案1:矩陣掃描按鍵讀取法

    用6個IO(3x3)可以讀取9個按鍵,用8個IO(4x4)可以讀取16個按鍵,用10個IO(5x5)可以讀取25個按鍵,這方案非常適合按鍵多的方案,下面以3x3讀取9個按鍵為例進行講解。

    原理圖如下:按鍵讀取方法:

    設C1,C2,C3這三個IO為輸出,設L1,L2,L3這三個IO為帶上拉電阻的輸入;然後用分時掃描的方法讀取按鍵;把C1設為低電平,C2,C3高為高電平,微控制器讀取L1,L2,L3這三個輸入,看看S1,S2,S3有哪些按鍵被按下,S1按下,L1會讀到低電平,S2按下,L2會讀到低電平,S4按下,L3會讀到低電平;把C2設為低電平,C1,C3高為高電平,微控制器讀取L1,L2,L3這三個輸入,看看S4,S5,S6有哪些按鍵被按下,S4按下,L1會讀到低電平,S5按下,L2會讀到低電平,S6按下,L3會讀到低電平;把C3設為低電平,C1,C2高為高電平,微控制器讀取L1,L2,L3這三個輸入,看看S7,S8,S9有哪些按鍵被按下,S7按下,L1會讀到低電平,S8按下,L2會讀到低電平,S9按下,L3會讀到低電平方案二:ADC輸入讀取按鍵法

    此方法需要微控制器帶有ADC輸入功能,單路ADC可以讀取多個按鍵。一般一路ADC讀四、五個按鍵是絕對沒問題的,下面以一路ADC輸入讀4個按鍵為例

    原理圖如下根據ADC讀取到的電壓值去判斷哪個按鍵被按下。

    無按鍵按下時,ADC讀取到的電壓是5V;S1按下時,ADC讀取到的電壓是3.85VS2按下時,ADC讀取到的電壓是3.13VS3按下時,ADC讀取到的電壓是2.63VS4按下時,ADC讀取到的電壓是2.27V方案三:IO共用法

    此方法適用於電路中需要按鍵又需要驅動LED或者LCD的情況,下面以一個IO同時驅動LED和按鍵進行示例

    原理圖如下:

    分時驅動LED和按鍵,在不掃描按鍵的時候,I/O是設為輸出狀態,是用來驅動LED的。

    掃描按鍵時,把I/O設為輸入狀態,讀取按鍵。

  • 5 # 水牛

    有一個非常棒的方法,就是用AD做按鍵掃描,可以做很多按鍵,電路也很簡單,也不用擴充套件晶片,很好。電路如圖所示

  • 中秋節和大豐收的關聯?
  • 布依族潑水節的來歷的故事?