5個io怎么控制8個led和8個按鍵,手機APP無線控制

通過3個GPIO就擴展出了24個按鍵輸入檢測 。使用AD按鍵時有個需要注意的地方就是,按鍵盡量選擇好些的 。當然為了抗干擾強,最好等分的數要少,8位的話等分最好不要超過8個按鍵,否則抗干擾不是很好,如果是8個按鍵的話每個按鍵的ADC差值為32,按鍵間的ADC差值越大,越有利于抗干擾 。
如何用最少的IO驅動更多的按鍵?
按鍵是一個比較典型常用的輸入器件,單片機可以檢測按鍵的狀態從而執行相應的命令,所以題目的合適含義應該是,如何用較少的IO口檢測更多的按鍵輸入 。由于單片機的GPIO口是有限的,要實現更多的按鍵檢測只能通過擴展IO來實現,今天給大家分享的就是通過使用74HC165來實現GPIO口的擴展,可以實現更多按鍵的輸入檢測 。
74HC165是并入傳出的移位寄存器,單片74HC165具有8個輸入三個輸出,所以通過單片機的三個GPIO口就可以實現8個按鍵的輸入檢測,更重要的是該芯片可以級聯,通過3個GPIO可以檢測更多的按鍵輸入 。以三片級聯為例,介紹其使用方法,其典型的電路圖如下所示 。通過圖片可以看出,擴展芯片的第1,2,9三個腳接單片機,通過第10腳和下一片的9腳實現級聯 。
【5個io怎么控制8個led和8個按鍵,手機APP無線控制】通過3個GPIO就擴展出了24個按鍵輸入檢測 。其程序如下圖所示 。該芯片與74HC595的作用正好相反,74HC是串入并出,可以用來驅動數碼管等器件 。74HC165的程序與74HC595存在一定的相似之處 。在編寫程序時,要注意查看芯片的時序圖,要在時鐘的邊沿狀態讀取數據 。關于更多細節內容大家可以留言討論 。
單片機用一個IO口采集多個按鍵信號,如何實現?
在設計中如果用到IO口不夠用,我們肯定第一時間想到的就是通過電阻分壓,根據按下不同按鍵,來讓不同阻值的電阻接到分壓電路中,然后ADC模塊做電壓數據讀取分析對應按鍵按下 。下文就和大家分享下單片機設計AD按鍵的內容 。AD按鍵設計硬件部分電路有兩種電路形式,一種的電阻串聯,您一種是電阻并聯,這兩種都是通過電阻分壓的原理實現的,下面通過電路圖一一介紹 。
電阻并聯型AD按鍵上圖有10個按鍵,不同按鍵按下,分到的電壓值不同,電阻值我已經計算好了,有部分誤差,但已經是算成最小誤差值了,以后大家可直接使用 。對應的分壓依次值有0.1Vref、0.2Vref~ 0.9Vref、0.99Vref,共10個檔位 。單片機ADC通過讀取電路中ADCIN處的電壓識別對應按鍵按下 。
上圖電阻并聯型AD按鍵電路有一個缺點就是如果有兩個按鍵同時按下,會有錯誤識別的可能出現,扛干擾差,所以并聯型AD按鍵電路很少使用 。電阻串聯型AD按鍵上圖中有10個按鍵,對應電阻值按照ADCIN處的電壓分別為Vref的x/10(x=1,2,3...9,10)倍算好,使用的電阻值也已經按照最小誤差定的,可直接使用 。
不同按鍵按下,ADCIN處的電壓不同,單片機ADC模塊讀出ADC值,從而識別對應哪個按鍵按下 。上圖中電阻使用串聯的方式接在電路中,這樣也就有一個電阻壞,就會影響到其他按鍵檢測的問題 。如果兩個按鍵按下,只會識別一個靠近圖中ADCIN處的按鍵,這樣不會有像并聯型AD按鍵電路哪有識別有誤的問題存在,但是這里電阻的誤差不好控制,所以我對上面電路做了改進 。
如下圖:這個電路的好處就是這里將串聯的電阻設計成等值的形式,這樣在生產時也不必買更多阻值的電阻了 。具體怎么分壓的相信大家一看就懂 。這里只是巧妙的應用了一個1M的電阻,一個電阻和大于它很多倍(一般理解為10倍以上)的電阻并聯,并聯后的阻值依然可以理解為和這個電阻值相等 。同樣的可以將電阻并聯型AD按鍵電路改成等阻值的,這里就不在做出解答,有興趣的朋友可以發揮下自己的腦力看看怎么設計 。

推薦閱讀