一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用單個(gè)ADC端口來(lái)讀取多個(gè)按鈕狀態(tài)的方法

硬件攻城獅 ? 來(lái)源:TsinghuaJoking ? 作者:TsinghuaJoking ? 2023-10-07 15:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

利用單片機(jī)ADC端口,可以讀取多個(gè)按鈕的狀態(tài)。在設(shè)計(jì)過(guò)程中,需要綜合考慮到按扭的個(gè)數(shù)與讀取的可靠性,特別是對(duì)選擇電阻的阻值進(jìn)行優(yōu)化,使得不同分壓數(shù)值之間相差最大。如果按鍵面板需要通過(guò)長(zhǎng)的引線與單片機(jī)電路相連,還需要對(duì)接口電路進(jìn)行保護(hù)以提高電路的EMC特性。

01 讀取按鍵

按鍵是單片機(jī)系統(tǒng)中人機(jī)交互常用到的方法,通常情況下,通過(guò)普通的IO端口可以獲得按鍵開(kāi)關(guān)狀態(tài)。在某些電子系統(tǒng)設(shè)計(jì)中,如果碰到按鈕比較多,但單片機(jī)的IO口不夠使用的時(shí)候,則需要通過(guò)端口擴(kuò)展的方式來(lái)增加讀取按鈕的數(shù)量。比如通過(guò)并串轉(zhuǎn)換芯片,8-3編碼芯片等等。

今天看到 公眾號(hào)電路啊中的一篇推文:電視機(jī)的按鍵功能是用什么電路實(shí)現(xiàn)的?經(jīng)典ADC按鍵電路[1] 介紹了在一款電視機(jī)中,采用單個(gè)ADC端口來(lái)讀取多個(gè)按鈕狀態(tài)的方法。

一、電路原理

1、電路原理圖

按鍵面板中的三個(gè)引線中,其中一個(gè)是電路地線,另外兩個(gè)是信號(hào)線,分別接入主板中MCU的兩路ADC端口。這兩條線在主板上都通過(guò)3.3kΩ的電阻接到電源(3.3V)。在面板上,有多個(gè)按鈕與電阻的串聯(lián)之后連接在信號(hào)線與地線之間。

1da6168a-64d8-11ee-939d-92fbcf53809c.png

▲ 圖1.1.1 工作原理說(shuō)明圖

并聯(lián)在 一起的按鈕所串聯(lián)的電阻不同,所以每個(gè)按鈕按下之后,信號(hào)線的電壓就是上拉電阻與按鍵串聯(lián)電阻對(duì)電源的分壓。由于每個(gè)按鍵串聯(lián)電阻不同,所以對(duì)應(yīng)信號(hào)線電壓也就不同了。經(jīng)過(guò)單片機(jī)ADC讀取電壓值之后,在與事先確定下的每個(gè)按鍵分壓范圍進(jìn)行對(duì)比,從而可以確定是哪一個(gè)按鈕被按下。

【表1-1-1 不同按鍵對(duì)應(yīng)的電壓】

75 ohm 1000 ohm 3300 ohm 6800 ohm
0.07 V 0.77 V 1.65 V 2.22 V
SW1 SW2 SW3 SW4

2、按鍵個(gè)數(shù)

根據(jù)上述原理,一條ADC端口可以讀取按鈕的個(gè)數(shù)是非常多的,它的上限受到以下因素影響:

單片機(jī)ADC分辨率;

分壓信號(hào)的穩(wěn)定性和噪聲范圍;

機(jī)械按鍵接觸電阻;

分壓電阻偏差與穩(wěn)定性等。

為了可靠的通過(guò)ADC讀取的模擬分壓電壓來(lái)確定按鍵,需要合理選擇分壓電阻,使得每個(gè)按鍵所對(duì)應(yīng)的電壓之間的間隔越大越好。在上述實(shí)際設(shè)計(jì)的電路中,每個(gè)ADC端口只讀取了四個(gè)按鈕的狀態(tài),總共采用了兩個(gè)ADC端口讀取了7個(gè)(< 8個(gè))按鍵狀態(tài)。

二、電路改進(jìn)

1、增加接口可靠性

由于按鍵板與電路主板之間通過(guò)三根線連接,為了提高電路工作的可靠性,在按鍵電路接口中增加了R、C、TVS來(lái)消除靜電、電磁干擾對(duì)主控板的影響。

1de39924-64d8-11ee-939d-92fbcf53809c.png

▲ 圖1.2.1 增加有提高EMC接口電路

對(duì)于電路中的RC濾波器件參數(shù)選擇,需要綜合考慮濾除噪聲的頻率范圍以及電路穩(wěn)定時(shí)間。不能夠?yàn)榱私档驮肼曇晃对黾覴C時(shí)間常數(shù),還需要考慮按鍵動(dòng)作時(shí),對(duì)應(yīng)的分壓信號(hào)達(dá)到穩(wěn)定的過(guò)渡時(shí)間的大小。

02 更多按鍵

在前面案例中,每個(gè)ADC只讀取四個(gè)按鍵,下面給出一些可以讀取更多按鍵的方案。

一、八個(gè)按鍵

1、電路原理圖

下面是在推文經(jīng)典ADC按鍵電路[2]中給出的已經(jīng)批量應(yīng)用的八按鍵ADC讀取電路配置方案。

1df9cfe6-64d8-11ee-939d-92fbcf53809c.png

▲ 圖2.1.1 被批量使用的八個(gè)按鍵方案

2、按鍵對(duì)應(yīng)的電壓值

按照電路中的電阻參數(shù),可以計(jì)算出每個(gè)按鍵對(duì)應(yīng)的信號(hào)分壓電壓值:

【表2-1-1 八個(gè)按鍵對(duì)應(yīng)的信號(hào)電壓】

0 ohm 510 ohm 680 ohm 1000 ohm 1200 ohm 2200 ohm 4700 ohm 15000 ohm
0.00 V 0.32 V 0.67 V 1.05 V 1.38 V 1.79 V 2.27 V 2.78 V
SW1 SW2 SW3 SW4 SW5 SW6 SW7 SW8

1e1408ac-64d8-11ee-939d-92fbcf53809c.png

▲ 圖2.1.2 八個(gè)按鍵對(duì)應(yīng)的信號(hào)電壓

3、方案特點(diǎn)

在這個(gè)電路中,后面按鍵對(duì)應(yīng)的電阻值是由前面所有串聯(lián)電阻累加和。

這個(gè)電路的巧妙之處在于,按鍵具有優(yōu)先級(jí)之分。假設(shè)按下了按鍵SW1,那么再按下SW2-SW8中的任何一個(gè)都是不起作用的,即SW1的優(yōu)先級(jí)最高,SW2次之,以此類(lèi)推。

二、組合按鍵

上面電路中不允許使用組合按鍵,即通過(guò)兩個(gè)或者兩個(gè) 以上的按摩同時(shí)按下代表更多的功能。

1、三個(gè)按鍵組合輸入

下面電路中,只使用3按鈕便可以獲得8個(gè)狀態(tài)的輸入。

1e1f6314-64d8-11ee-939d-92fbcf53809c.png

▲ 圖2.2.1 利用電阻組合完成多個(gè)多個(gè)按鈕輸入

需要通過(guò)適當(dāng)選擇的阻值,使得八種不同的按鍵組合,所得到的八個(gè)電壓之間的間隔最大,這樣才能夠保證ADC通過(guò)分壓數(shù)值確定狀態(tài)時(shí)更加可靠。

利用程序?qū)M(jìn)行搜索,搜索范圍(100,10k),搜索步長(zhǎng):50歐姆??梢垣@得一組最優(yōu)電阻取值:

最小的電壓間隔為:0.152V。

下面是八種按鍵組合所得到的電壓,從小到大的電壓值。

['1.19V', '1.37V', '1.53V', '1.68V', '1.83V', '2.05V', '2.43V', '3.30V']

※ 總??結(jié) ※

利用單片機(jī)的ADC端口,可以讀取多個(gè)按鈕的狀態(tài)。在設(shè)計(jì)過(guò)程中,需要綜合考慮到按扭的個(gè)數(shù)與讀取的可靠性,特別是對(duì)選擇電阻的阻值進(jìn)行優(yōu)化,使得不同分壓數(shù)值之間相差最大。

如果按鍵面板需要通過(guò)長(zhǎng)的引線與單片機(jī)電路相連,還需要對(duì)接口電路進(jìn)行保護(hù)以提高電路的EMC特性。


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 串聯(lián)電阻
    +關(guān)注

    關(guān)注

    1

    文章

    234

    瀏覽量

    15236
  • 電阻
    +關(guān)注

    關(guān)注

    87

    文章

    5625

    瀏覽量

    175113
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44989

    瀏覽量

    650361
  • TVS
    TVS
    +關(guān)注

    關(guān)注

    8

    文章

    886

    瀏覽量

    62057
  • adc
    adc
    +關(guān)注

    關(guān)注

    99

    文章

    6705

    瀏覽量

    549184
  • 按鍵電路
    +關(guān)注

    關(guān)注

    1

    文章

    36

    瀏覽量

    22003
  • 分壓電阻
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    11793

原文標(biāo)題:?jiǎn)蝹€(gè)端口讀取多個(gè)按鈕(ADC按鍵電路)

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)問(wèn)有什么更好更簡(jiǎn)便的方法來(lái)測(cè)量ADC的靜態(tài)參數(shù)?

    1000mV的DC量測(cè)試多個(gè)點(diǎn),然后從中分析ADC的線性度參數(shù)。 網(wǎng)上說(shuō)這種測(cè)試方法不能夠完整反映出ADc的性能參數(shù)。而且,后期可能會(huì)改版為AC耦合,就更不能
    發(fā)表于 08-24 11:28

    單個(gè)電源可控制多個(gè)環(huán)路

    放大器的輸出端添加一個(gè)額外的二極管用作參考(圖1,D2)。這有助于將放大器的輸出電壓鉗位到一個(gè)較低值,從而防止飽和并加快響應(yīng)速度。需要添加的單獨(dú)參考以及軟性電路是采用多個(gè)外部放大器的方法又一缺點(diǎn),因?yàn)?/div>
    發(fā)表于 11-30 17:14

    怎么通過(guò)ADC建議如何讀取多個(gè)溫度值?

    大家好,現(xiàn)在我可以通過(guò)ADC讀取兩個(gè)溫度值(即60和90度),我通過(guò)計(jì)算NTC熱敏電阻表中的值來(lái)讀取這個(gè)溫度。但現(xiàn)在我看不到超過(guò)2個(gè)溫度,我已經(jīng)定義了至少5個(gè)溫度,但能讀懂2,就可以通
    發(fā)表于 09-20 15:45

    請(qǐng)問(wèn)有什么更快的方法讀取ADC通道嗎?

    我的ADC運(yùn)行在12MHz,采樣5個(gè)通道,實(shí)際采樣速率為100kHz。我只是注意到,使用ADCJGETRESULT16.()命令讀取單個(gè)信道,以48 MHz的CPU速度獲得一個(gè)叫聲1US。閱讀5個(gè)
    發(fā)表于 10-30 10:06

    怎樣才能跨多個(gè)集線器從LPC5411x枚舉多個(gè)串行端口?

    由于 ES_LPC5411x 中的勘誤表 USB.1,需要 TN00031 中的解決方法才能跨多個(gè) USB 集線器實(shí)現(xiàn)無(wú)晶體 USB。我正在研究從單個(gè)設(shè)備支持多個(gè)串行
    發(fā)表于 05-06 07:03

    如何使用S32K146定期對(duì)單個(gè)ADC通道進(jìn)行采樣?

    ;PDB定時(shí)器在讀取ADC轉(zhuǎn)換后重新啟動(dòng),但使用這種方法,采樣周期略長(zhǎng)于PDB延遲時(shí)間。最好的方法是什么?我在參考手冊(cè)中讀到 PDB 具有“背靠背”模式,但我相信這是為了按順序
    發(fā)表于 05-30 12:30

    單個(gè)PRM驅(qū)動(dòng)多個(gè)VTMs

    單個(gè)PRM驅(qū)動(dòng)多個(gè)VTMs 的有用PDF。
    發(fā)表于 01-06 17:58 ?0次下載

    如何采用一根微控制器的端口引線來(lái)驅(qū)動(dòng)多個(gè)LED

    微控制器的端口引線通??杀患?lì)為高電平或低電平,要么被置于一種“輸入”或高阻抗狀態(tài)。本電路采用這三種狀態(tài)來(lái)實(shí)現(xiàn)用一根
    發(fā)表于 10-04 16:30 ?1131次閱讀
    如何<b class='flag-5'>采用</b>一根微控制器的<b class='flag-5'>端口</b>引線<b class='flag-5'>來(lái)</b>驅(qū)動(dòng)<b class='flag-5'>多個(gè)</b>LED

    如何使用Arduino UNO創(chuàng)建簡(jiǎn)單的Modbus設(shè)備

    您可以按Modbustester中的“讀取按鈕。該命令將讀取我們新的從設(shè)備的存儲(chǔ)器的8個(gè)字節(jié)。在地址400008中,您可以找到按鈕狀態(tài)。
    的頭像 發(fā)表于 11-15 10:05 ?1.7w次閱讀

    【GD32】GD32讀取ADC數(shù)據(jù)

    讀取ADC值4.將ADC值轉(zhuǎn)換成電壓值我這里采用PA5進(jìn)行ADC的channel_5通道1.初始IO引腳/*初始化時(shí)鐘*/rcu_perip
    發(fā)表于 12-02 15:06 ?29次下載
    【GD32】GD32<b class='flag-5'>讀取</b><b class='flag-5'>ADC</b>數(shù)據(jù)

    僅使用兩根電線即可感應(yīng)多個(gè)按鈕

    對(duì)于只需要不到鍵盤(pán)或數(shù)字鍵盤(pán)的應(yīng)用,這個(gè)簡(jiǎn)單的電路使用單個(gè)多通道1-Wire可尋址開(kāi)關(guān)(DS2408)和幾個(gè)外部元件來(lái)監(jiān)視多個(gè)按鈕開(kāi)關(guān)。
    的頭像 發(fā)表于 01-14 12:00 ?2042次閱讀
    僅使用兩根電線即可感應(yīng)<b class='flag-5'>多個(gè)</b><b class='flag-5'>按鈕</b>

    多個(gè)ADC的基準(zhǔn)電壓

    要求您將此路徑中的誤差降至最低。單個(gè)ADC基準(zhǔn)電壓精度差會(huì)降低整個(gè)系統(tǒng)的性能,分布式負(fù)載也是如此,分布式負(fù)載由許多單獨(dú)的阻性和容性負(fù)載組成。有幾種方法可以為此類(lèi)ADC陣列提供基準(zhǔn)電壓:
    的頭像 發(fā)表于 02-25 10:51 ?3246次閱讀
    <b class='flag-5'>多個(gè)</b><b class='flag-5'>ADC</b>的基準(zhǔn)電壓

    用GPIO讀取按鈕狀態(tài)

    樹(shù)莓派的GPIO可以控制發(fā)光二極管,這是GPIO的Output(輸出)能力,它也具有input(讀取)的能力,所以才能叫做I/O(輸入/輸出)端口。今天我們就來(lái)用GPIO的引腳來(lái)讀取
    的頭像 發(fā)表于 07-02 15:06 ?2281次閱讀
    用GPIO<b class='flag-5'>讀取</b><b class='flag-5'>按鈕</b><b class='flag-5'>狀態(tài)</b>

    Windows IoT和Raspberry Pi:讀取按鈕

    電子發(fā)燒友網(wǎng)站提供《Windows IoT和Raspberry Pi:讀取按鈕.zip》資料免費(fèi)下載
    發(fā)表于 07-10 11:13 ?0次下載
    Windows IoT和Raspberry Pi:<b class='flag-5'>讀取</b><b class='flag-5'>按鈕</b>

    通過(guò)SFC 51讀取CPU的指示燈狀態(tài)

    可以通過(guò)SFC 51讀取CPU的指示燈狀態(tài),使用的SSL_ID參數(shù)為16#74(16#19)讀取全部指示燈狀態(tài) 或者16#174(16#119)讀取
    的頭像 發(fā)表于 07-24 16:34 ?2230次閱讀
    通過(guò)SFC 51<b class='flag-5'>讀取</b>CPU的指示燈<b class='flag-5'>狀態(tài)</b>