精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

基于GPIO的按鍵板實(shí)現(xiàn)方案

454398 ? 來(lái)源:csdn ? 作者:NutriYang ? 2020-10-18 11:43 ? 次閱讀

介紹簡(jiǎn)單的ADC實(shí)現(xiàn),需要IC提供一個(gè)額外的ADC。但出于IC成本的考慮,無(wú)法提供這個(gè)的ADC時(shí),但提供了多個(gè)額外的GPIO(General Purpose Input Output:雙向的:可以為輸入/輸出,只有兩個(gè)狀態(tài)High/Low),就可以使用本篇的實(shí)現(xiàn)方法了。

基于GPIO的按鍵板

基于GPIO的按鍵板實(shí)現(xiàn),需要提供額外的GPIO口供使用。GPIO口足夠多的話可以一個(gè)按鍵對(duì)應(yīng)一個(gè)GPIO,不夠多的時(shí)候可以使用矩陣掃描方式實(shí)現(xiàn),若可供使用的GPIO連矩陣掃描方式都不滿足,還可以增加二極管來(lái)進(jìn)一步擴(kuò)展成2個(gè)GPIO實(shí)現(xiàn)6個(gè)按鍵,本節(jié)將簡(jiǎn)單介紹這些方法。另外還可以通過(guò)擴(kuò)展GPIO的方法來(lái)實(shí)現(xiàn),將在下一篇幅中專門(mén)介紹。

嵌入式開(kāi)發(fā)中,GPIO是最常用的控制接口,普通GPIO只具有High/Low兩個(gè)狀態(tài),我們可以對(duì)其進(jìn)行Read/Write操作。

1:足夠多的GPIO供使用

則每個(gè)按鍵對(duì)應(yīng)一個(gè)GPIO口,電路設(shè)計(jì)可以保證:無(wú)按鍵動(dòng)作GPIO口為L(zhǎng)ow,有按鍵動(dòng)作GPIO口為High,或者相反。軟件設(shè)計(jì)只需要逐個(gè)掃描每個(gè)GPIO口的狀態(tài),就可以知道某個(gè)按鍵是否有動(dòng)作。

2:有限的GPIO供使用:使用矩陣掃描按鍵方式是最常見(jiàn)的方案。

其原理如下:任意兩個(gè)GPIO之間連接一個(gè)按鍵,比如GPIO_1 & GPIO_2,其默認(rèn)狀態(tài)為L(zhǎng)ow,按鍵按下的話,兩者就連通了,這就意味著,我們可以先給GPIO_1一個(gè)High信號(hào),接著去讀取GOIO_2,如果得到High,則這個(gè)按鍵被按下了,否則就是沒(méi)有按鍵動(dòng)作。

數(shù)學(xué)告訴我們,基于這種方案的N個(gè)GPIO口,最多可以實(shí)現(xiàn)N*(N-1)/2個(gè)按鍵,也就是N的組合數(shù)。如下圖:4個(gè)GPIO(A/B/C/D)實(shí)現(xiàn)6(KEY_1…KEY_6)個(gè)按鍵的原理圖

變成也是比較簡(jiǎn)單了,給個(gè)C代碼如下:

這里通過(guò)適當(dāng)?shù)牧鞒淘O(shè)計(jì),可以使得代碼緊湊有序。在按鍵比較少的情況下,一個(gè)挨著一個(gè)的去讀寫(xiě)的方法也不錯(cuò),但在較多按鍵的時(shí)候,上面代碼的流程設(shè)計(jì)就比較具有優(yōu)勢(shì)了。能夠在1分鐘內(nèi),看明白為什么使用 i*k+k-1 作為返回索引,我相信你的邏輯能力很OK。

3:進(jìn)一步擴(kuò)展---2個(gè)GPIO實(shí)現(xiàn)6個(gè)按鍵

如果在你的設(shè)計(jì)中,GPIO口的數(shù)量很有限,不能滿足矩陣掃描方式的需要,那么你有兩種選擇:1 擴(kuò)展GPIO口,下一篇幅中將專門(mén)討論;2 增加一些二極管來(lái)進(jìn)一步擴(kuò)充矩陣掃描方式的能力。我們這里討論一個(gè)2個(gè)GPIO實(shí)現(xiàn)6個(gè)按鍵的方法,原理圖如下:

這種實(shí)現(xiàn)方法實(shí)際上就是利用了二極管的單向?qū)ㄌ匦?,使得我們可以區(qū)分更多的按鍵,分析如下:

1:Write GPIO_1=1 & GPIO_2=1,接著Read if GPIO_1==0 & GPIO_2==0,則為 KEY_3;

if GPIO_1==0 & GPIO_2==1,則為 KEY_1;

if GPIO_1==1 & GPIO_2==0,則為 KEY_2;

2:Write GPIO_1=0 & GPIO_2=1, 接著Read if GPIO_2==0,則為 KEY_4 or KEY_6;

需要進(jìn)一步判斷:Write GPIO_1=1 & GPIO_2=0 然后Read:if GPIO_1==0 則為 KEY_4;

if GPIO_1==1 則為 KEY_6;

3:反序執(zhí)行步驟2,可以區(qū)分出 KEY4 & KEY5。

明白了原理,軟件編程實(shí)現(xiàn)就比較簡(jiǎn)單了,給出一個(gè)實(shí)現(xiàn)如下:

在這個(gè)編程實(shí)現(xiàn)里,在寫(xiě)操作之后,可能需要適當(dāng)?shù)腄elay以使得其狀態(tài)穩(wěn)定;若是基于總線的嵌入式系統(tǒng),也需要在函數(shù)退出前釋放總線。

3:總結(jié)與討論

基于矩陣掃描方式的按鍵板實(shí)現(xiàn),是很最常用的。在GPIO口比較緊缺的情況下,可以通過(guò)在電路中適當(dāng)增加幾個(gè)二極管來(lái)解決。如果這樣還不能解決,就必須設(shè)法擴(kuò)展GPIO了,稍后討論。

下面給出了一個(gè)很不錯(cuò)的 矩陣掃描+二極管擴(kuò)展 的電路圖,你能為它寫(xiě)一個(gè)驅(qū)動(dòng)嗎?相當(dāng)具有挑戰(zhàn)性哦,試試看吧……

編輯:hfy

聲明:本文內(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)投訴
  • 矩陣
    +關(guān)注

    關(guān)注

    0

    文章

    422

    瀏覽量

    34504
  • 軟件編程
    +關(guān)注

    關(guān)注

    1

    文章

    41

    瀏覽量

    11286
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1196

    瀏覽量

    51934
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32 GPIO的八種工作模式

    GPIO (general purpose input output)是通用輸入輸出端口的簡(jiǎn)稱,簡(jiǎn)單來(lái)說(shuō)就是軟件可控制的引腳,STM32芯片的GPIO引腳與外部設(shè)備連接起來(lái),從而實(shí)現(xiàn)與外部通訊、控制以及數(shù)據(jù)采集的功能。
    的頭像 發(fā)表于 11-06 09:40 ?337次閱讀
    STM32 <b class='flag-5'>GPIO</b>的八種工作模式

    SOC GPIO操作

    sapphire Soc提供了兩個(gè)GPIO組每組有4個(gè)GPIO,定義為GPIO[3:0],其中只有GPIO[1:0]可以支持中斷。中斷在程序中打開(kāi)了
    的頭像 發(fā)表于 11-01 11:06 ?103次閱讀

    基于FPGA實(shí)現(xiàn)按鍵消抖處理

    引言: 按鍵在電子產(chǎn)品中經(jīng)常用到,由于按鍵的機(jī)械特性,按鍵在閉合或松開(kāi)的瞬間伴隨著一連串的抖動(dòng),這樣的抖動(dòng)將直接影響設(shè)計(jì)系統(tǒng)的穩(wěn)定性。因此,必須對(duì)抖動(dòng)進(jìn)行處理。本文介紹如何在FPGA中實(shí)現(xiàn)
    的頭像 發(fā)表于 10-24 14:54 ?172次閱讀
    基于FPGA<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>按鍵</b>消抖處理

    GPIO靜電放電防護(hù)方案

    GPIO靜電放電防護(hù)方案 方案簡(jiǎn)介 GPIO的全稱是General Purpose Input Output (通用輸入/輸出端口),簡(jiǎn)稱為GPIO
    的頭像 發(fā)表于 09-19 17:02 ?281次閱讀
    <b class='flag-5'>GPIO</b>靜電放電防護(hù)<b class='flag-5'>方案</b>

    基于MSP430實(shí)現(xiàn)電視的電容式觸摸按鍵

    電子發(fā)燒友網(wǎng)站提供《基于MSP430實(shí)現(xiàn)電視的電容式觸摸按鍵.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 11:56 ?0次下載
    基于MSP430<b class='flag-5'>實(shí)現(xiàn)</b>電視的電容式觸摸<b class='flag-5'>按鍵</b>

    如何在FPGA中實(shí)現(xiàn)按鍵消抖

    在FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)中實(shí)現(xiàn)按鍵消抖是一個(gè)重要的設(shè)計(jì)環(huán)節(jié),特別是在處理用戶輸入時(shí),由于物理按鍵的機(jī)械特性和電氣特性,按鍵在按下和釋放的瞬間會(huì)產(chǎn)生抖動(dòng)現(xiàn)象,這種抖動(dòng)可能導(dǎo)致系統(tǒng)錯(cuò)
    的頭像 發(fā)表于 08-19 18:15 ?1474次閱讀

    STM32 GPIO八種模式及工作原理詳解

    一. 前言 ??GPIO全稱General Purpose Input Output,是微控制數(shù)字輸入/輸出的基本模塊,可以實(shí)現(xiàn)微控制器與外部環(huán)境的數(shù)字進(jìn)行交換。借助GPIO微控制器可以實(shí)現(xiàn)
    的頭像 發(fā)表于 07-22 09:32 ?5772次閱讀
    STM32 <b class='flag-5'>GPIO</b>八種模式及工作原理詳解

    CC2340R5無(wú)法讀取到按鍵按下的動(dòng)作怎么解決?

    自定的按鍵方案:選取DIO9、DIO10、DIO11來(lái)實(shí)現(xiàn)按鍵 syscfg中各GPIO的配置如下圖所示 BUTTON菜單的配置 希
    發(fā)表于 05-30 07:59

    【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第二講 GPIO-按鍵查詢實(shí)驗(yàn)

    通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: GPIO輸入功能原理; 按鍵查詢輸入檢測(cè)原理;
    的頭像 發(fā)表于 04-30 11:39 ?645次閱讀
    【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第二講 <b class='flag-5'>GPIO</b>-<b class='flag-5'>按鍵</b>查詢實(shí)驗(yàn)

    什么是GPIO?GPIO組成原理

    GPIO全拼叫General Purpose Input Output(通用輸入輸出)簡(jiǎn)稱IO口也叫總線擴(kuò)展器,GPIO口是由引腳,功能寄存器組成,不同的架構(gòu)中的GPIO封裝不同,所使用的引腳數(shù)與寄存器數(shù)不同,具體可以參考芯片手
    發(fā)表于 04-28 12:30 ?6745次閱讀
    什么是<b class='flag-5'>GPIO</b>?<b class='flag-5'>GPIO</b>組成原理

    電視機(jī)經(jīng)典ADC按鍵電路實(shí)現(xiàn)方案

    3根線實(shí)現(xiàn)7個(gè)按鍵,什么原理? 直接上電路原理圖!不同電視廠家的設(shè)計(jì)會(huì)有一點(diǎn)差異,但基本都是這個(gè)原理。
    的頭像 發(fā)表于 04-07 10:25 ?998次閱讀
    電視機(jī)經(jīng)典ADC<b class='flag-5'>按鍵</b>電路<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>方案</b>

    用tc275開(kāi)發(fā)板實(shí)現(xiàn)can通信,一直不工作怎么解決?

    最近我想用 tc275的官方開(kāi)發(fā)板實(shí)現(xiàn)can通信,一直不工作,在我反復(fù)檢查了好幾遍代碼之后,感覺(jué)實(shí)在找不出錯(cuò)誤來(lái),就疑惑這塊shield buddy板子上是否有CAN transceiver 芯片?
    發(fā)表于 02-01 07:08

    STM32怎么實(shí)現(xiàn)按鍵開(kāi)關(guān)機(jī)

    STM32按鍵開(kāi)關(guān)機(jī)需要以下步驟: 1. 硬件連接。 2. 配置GPIO引腳。 3. 編程實(shí)現(xiàn)按鍵檢測(cè)。 4. 編程實(shí)現(xiàn)開(kāi)關(guān)機(jī)控制功能。 詳
    的頭像 發(fā)表于 12-07 15:17 ?2855次閱讀

    單片機(jī)的GPIO如何實(shí)現(xiàn)觸摸按鍵的功能呢?

    單片機(jī)的GPIO如何實(shí)現(xiàn)觸摸按鍵的功能呢? 觸摸按鍵是一種使用觸摸電容技術(shù)實(shí)現(xiàn)按鍵,它通過(guò)利用
    的頭像 發(fā)表于 12-07 11:43 ?3870次閱讀

    如何通過(guò)GPIO驅(qū)動(dòng)配置實(shí)現(xiàn)控制i.MX8芯片引腳電平變化

    本文我們要講的是如何通過(guò) GPIO 驅(qū)動(dòng)配置實(shí)現(xiàn)控制 i.MX8 芯片引腳電平變化。
    的頭像 發(fā)表于 12-04 11:41 ?1039次閱讀
    如何通過(guò)<b class='flag-5'>GPIO</b>驅(qū)動(dòng)配置<b class='flag-5'>實(shí)現(xiàn)</b>控制i.MX8芯片引腳電平變化