0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用到電容充放電原理實現(xiàn)一條IO實現(xiàn)兩個按鍵

0BFC_eet_china ? 來源:未知 ? 作者:李倩 ? 2018-03-26 08:39 ? 次閱讀

年前去到一個朋友那里,提到現(xiàn)在客戶對成本要求非常之高,尤其是玩具行業(yè),已經是一分一厘的去計算產品成本。朋友感慨為了省成本,方案商是絞盡腦汁地去想各種實現(xiàn)方法,說遇到過為了節(jié)省成本,硬是用單片機一條IO實現(xiàn)了兩個按鍵的功能,讓他頗為詫異,好久都沒想明白原理。一條IO實現(xiàn)兩個按鍵,聽上去確實挺新奇,既然別人能夠實現(xiàn),我想我也應該可以做到,看來得找找實現(xiàn)的方法。

我有一個習慣,遇到某些問題的時候,會在睡覺前想解決方法,想著想著就會睡著了,問題的答案有沒有找到則不一定。我知道有用一條IO實現(xiàn)多個按鍵的方法,這樣的方法大多是選用的IO支持ADC功能,用電阻分壓后通過讀電壓判斷鍵值。如果IO不支持ADC功能,也不是不行,可以用電容充放電的方法實現(xiàn)ADC,從而用普通IO間接進行測量。(參見我之前關于鍵盤掃描的文章)這樣用一條IO實現(xiàn)兩個按鍵給我的第一感覺是可能需要利用到電容充放電原理,于是在半夢半醒之中找到了實現(xiàn)的方法。

先看上圖左邊部分,如果MCU_IO1為雙向IO口,假設單片機程序按以下流程處理,看看會得到什么樣的結果?

1.MCU_IO1設定為輸出,輸出高電平一段時間,此時電容C1會充電,最后C1上的電壓接近電源電壓。

2.MCU_IO1設定為輸入,如果J1、J2均不按下,此時MCU_IO1可以理解成一個阻值很大的電阻接地,電容C1上的電荷會通過這個電阻逐漸釋放掉,這樣C1上的電壓會逐漸降低到零。因為C1上的電壓下降需要一個過程,當MCU_IO1設為輸入后馬上讀一下MCU_IO1的狀態(tài),此時會讀到什么結果?顯然是高電平狀態(tài)1。

3.再將MCU_IO1設定為輸出,輸出低電平一段時間,顯然不管電容C1處于什么狀態(tài),只要MCU_IO1輸出低電平時間足夠長,最后C1上的電壓應該接近零。

4.再將MCU_IO1設定為輸入,如果J1、J2同樣不按下,MCU_IO1讀到的是低電平狀態(tài)0。如果J1按下,再來看看這四步,此時電容C1已經被強制接到電源上,MCU_IO1對其的充放電已經不起作用,在步驟2中MCU_IO1讀到的狀態(tài)依然是1,但在步驟4中MCU_IO1讀到的狀態(tài)就不再是0,而是變?yōu)?。如果J2按下,同樣看這四步,此時電容C1被強制接到地,MCU_IO1對其充放電也失去作用,在步驟2中MCU_IO1讀到的狀態(tài)變?yōu)?,但在步驟4中MCU_IO1讀到的狀態(tài)保持為1。到這里我想大家應該已經明白了實現(xiàn)方法,根據(jù)此四步中讀到的MCU_IO1狀態(tài),就可以判斷出J1、J2是否按下。

既然已經找到方法,是不是就萬事大吉了呢?不然,我們還得回過頭去看看此方法是不是足夠可靠。如果J1按下,電容C1直接接到電源上,當MCU_IO1輸出低時,MCU_IO1輸出的低電平直接與電源短路,弄不好就會燒壞MCU_IO1,同理當J2按下時MCU_IO1輸出高也存在同樣的問題。還有比這更嚴重的問題,如果用戶同時按下J1和J2,哈!居然是電源和地直接短路,這樣的后果很可能就是整個產品的電源部分一股青煙了事,就別想產品還能不能工作了。

不用擔心,看一看前面電路圖中的右半部分,在開關J3和J4上分別串聯(lián)了一個220歐的電阻,這個電路不管J3和J4如何按,都不會出現(xiàn)短路的情況,按前面的四個步驟即可判斷出J3和J4有沒有按下,不過如果J3和J4同時按下并不能進行識別判斷。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • IO
    IO
    +關注

    關注

    0

    文章

    448

    瀏覽量

    39156
  • adc
    adc
    +關注

    關注

    98

    文章

    6498

    瀏覽量

    544657

原文標題:用一條IO口實現(xiàn)兩個按鍵功能

文章出處:【微信號:eet-china,微信公眾號:電子工程專輯】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ADC實現(xiàn)IO上掛多個按鍵

    有時候做設計時,我們會遇到外部按鍵比較多,IO口不夠用的情況。這時大部分人會考慮通過其它芯片擴展IO,或者直接換一個IO口足夠的MCU。其實
    發(fā)表于 09-01 13:25 ?2977次閱讀

    示波器如何觀察電容充放電慢過程

    如題,不知道該如何使用示波器觀察電容充放電時候其端電壓的大小變化,使用自動測量的時候,在屏幕上只顯示一條直線,從小到大或者從大到小的上下升降。  不知道該改如何設定示波器
    發(fā)表于 05-05 22:16

    一條IO實現(xiàn)兩個按鍵功能

    功能,也不是不行,可以用電容充放電的方法實現(xiàn)ADC,從而用普通IO間接進行測量。(參見我之前關于鍵盤掃描的文章)這樣用一條
    發(fā)表于 08-29 10:41

    開關電源如何利用電容充放電實現(xiàn)降壓呢

    開關電源中利用電容充放電實現(xiàn)降壓。在這里如果直使開關閉合會發(fā)現(xiàn)輸出電壓為6V,但是如果我們要使這種輸出電壓始終為5V,應該怎么做呢?其實在實際的開關電源電路中,真正用的不是這種手
    發(fā)表于 10-28 07:15

    如何實現(xiàn)兩個按鍵控制系統(tǒng)呢

    ,浪費IO口,占據(jù)大量體積。所以,需要量才而用,買足系統(tǒng)需求的前提下,越精簡越好。本篇將在上按鍵中斷的基礎上,實現(xiàn)兩個
    發(fā)表于 01-19 07:57

    基于充放電原理實現(xiàn)的微電容測量電路

    具有抗分布電容以及簡單實用等特性的充放電電路是目前微電容測量中廣泛采用的種測量電路, 本文對基于充放電原理的微
    發(fā)表于 07-13 12:01 ?135次下載

    電容充放電 (詳解教程)

    電容充放電電容經電阻充電,電容經電阻放電,RC電路的天然惰性時間常數(shù),電容
    發(fā)表于 09-22 09:36 ?698次下載

    基于充放電原理的電容式觸摸按鍵設計

     為降低觸摸按鍵的硬件成本, 設計了種簡易的觸摸按鍵電路,其基本原理是通過檢測RC回路的充放電時間來判斷有無按鍵被按下,當未觸碰
    發(fā)表于 11-24 18:46 ?190次下載
    基于<b class='flag-5'>充放電</b>原理的<b class='flag-5'>電容</b>式觸摸<b class='flag-5'>按鍵</b>設計

    基于充放電原理的檢測電路與電容式觸摸按鍵的設計

    單片機的每兩個1/0引腳構成充放電回路對,并為按鍵充放電,充電時引腳檢測上升沿中斷,
    發(fā)表于 12-07 08:50 ?21次下載
    基于<b class='flag-5'>充放電</b>原理的檢測電路與<b class='flag-5'>電容</b>式觸摸<b class='flag-5'>按鍵</b>的設計

    一條IO實現(xiàn)兩個按鍵功能

    ADC功能,用電阻分壓后通過讀電壓判斷鍵值。如果IO不支持ADC功能,也不是不行,可以用電容充放電的方法實現(xiàn)ADC,從而用普通IO間接進行測
    的頭像 發(fā)表于 10-24 11:24 ?1.3w次閱讀

    單片機用一條IO實現(xiàn)兩個按鍵功能資料下載

    電子發(fā)燒友網為你提供單片機用一條IO實現(xiàn)兩個按鍵功能資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參
    發(fā)表于 04-25 08:44 ?15次下載
    單片機用<b class='flag-5'>一條</b><b class='flag-5'>IO</b>口<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>兩個</b><b class='flag-5'>按鍵</b>功能資料下載

    硬件設計如何實現(xiàn)IO上掛多個按鍵?

    有時候做設計時,我們會遇到外部按鍵比較多,IO口不夠用的情況。這時大部分人會考慮通過其它芯片擴展IO,或者直接換一個IO口足夠的MCU。其實
    發(fā)表于 08-11 09:16 ?1253次閱讀
    硬件設計如何<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>IO</b>上掛多個<b class='flag-5'>按鍵</b>?

    stm32單片機如何實現(xiàn)按鍵切換兩個程序?

    stm32單片機如何實現(xiàn)按鍵切換兩個程序? 作為款功能強大的微控制器,STM32單片機可以
    的頭像 發(fā)表于 09-14 14:22 ?6144次閱讀

    電容如何實現(xiàn)充放電、整流、濾波的功能?

    充放電功能。當電容器連接到電源電壓時,由于電場的作用,正電荷會積累在電容器的極板上,同時
    的頭像 發(fā)表于 02-03 17:50 ?2259次閱讀

    電容濾波是利用什么原理實現(xiàn)

    電容濾波是種常用的濾波方法,它利用電容器的充放電特性來實現(xiàn)對信號的濾波。 、
    的頭像 發(fā)表于 08-28 10:18 ?1416次閱讀