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

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

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

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

怎么做到用3個(gè)IO口控制6個(gè)LED燈的?

GReq_mcu168 ? 來源:電路啊 ? 作者:電路啊 ? 2021-05-13 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

7909e236-b328-11eb-bf61-12bb97331649.png

▲本文要分析的電路

事情是這樣開始的。 買了個(gè)電動(dòng)牙刷,幾十塊錢那種:

收到的實(shí)物長這樣:

牙刷手柄上有1個(gè)按鍵和6個(gè)LED

拆開看看電路板:

可以看出,電路板上用的單片機(jī),只有8個(gè)腳,卻要控制1個(gè)按鍵、6個(gè)LED燈、1個(gè)震動(dòng)的馬達(dá)電機(jī)

初看之下,GPIO應(yīng)該是不夠用的。 單片機(jī)除去電源腳(正極)和GND腳(負(fù)極),只剩最多6個(gè)GPIO腳。 那么是怎么做到夠用的? 原來,經(jīng)過巧妙的電路設(shè)計(jì),這款電動(dòng)牙刷實(shí)現(xiàn)了用3個(gè)GPIO控制6個(gè)LED燈,節(jié)省了GPIO。

這個(gè)巧妙的電路如下:

7909e236-b328-11eb-bf61-12bb97331649.png

6個(gè)LED燈為相同的型號(hào),為方便查看,用紅綠兩種顏色區(qū)分兩種不同的方向。 一、原理分析 這個(gè)電路用到了單片機(jī)GPIO的三種狀態(tài):

高電平

低電平

高阻態(tài)

所謂“高阻態(tài)”,是指GPIO對(duì)外部電路表現(xiàn)出極大的阻抗。因阻抗很大,幾乎不會(huì)吸入電流,也不會(huì)對(duì)外輸出電流。 各個(gè)LED燈單獨(dú)亮起,分為六種情況。 1、當(dāng)只有LED1亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:(帶箭頭的紅線為電流回路)

7c0332da-b328-11eb-bf61-12bb97331649.png

2、當(dāng)只有LED2亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:

7c36faf2-b328-11eb-bf61-12bb97331649.png

3、當(dāng)只有LED3亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:

7c438ae2-b328-11eb-bf61-12bb97331649.png

4、當(dāng)只有LED4亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:

7c5179ea-b328-11eb-bf61-12bb97331649.png

5、當(dāng)只有LED5亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:

7c773efa-b328-11eb-bf61-12bb97331649.png

6、當(dāng)只有LED6亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:

7cb4fc36-b328-11eb-bf61-12bb97331649.png

整理如下:

7ce6930e-b328-11eb-bf61-12bb97331649.png

就是這么簡單! 二、總結(jié)提升 以上其實(shí)是用了一種叫“查理復(fù)用”(Charlieplex)的方法。 為什么叫查理復(fù)用?

很簡單,因?yàn)檫@個(gè)方法來源于美信半導(dǎo)體公司的工程師Charlie Allen。

查理復(fù)用是一種能夠在驅(qū)動(dòng)LED,特別是驅(qū)動(dòng)大量LED時(shí)有效地節(jié)約GPIO的方法。 使用該方法,n個(gè)GPIO可以驅(qū)動(dòng) n*(n-1) 個(gè)LED,所以:

使用2個(gè)GPIO可以驅(qū)動(dòng)2個(gè)LED。

使用3個(gè)GPIO可以驅(qū)動(dòng)6個(gè)LED。

使用4個(gè)GPIO可以驅(qū)動(dòng)12個(gè)LED。

以此類推。

這種方式能夠?qū)崿F(xiàn)的基礎(chǔ)是:

單片機(jī)GPIO的三個(gè)狀態(tài):高電平、低電平、高阻態(tài)。

LED具有單向?qū)щ娦浴?/p>

查理復(fù)用設(shè)計(jì)的方法:

任意兩個(gè)GPIO引腳之間串入兩個(gè)LED,這兩個(gè)LED為并聯(lián),且LED方向相反。

當(dāng)你想要點(diǎn)亮某個(gè)特定的LED時(shí),就將其兩端所連接到的GPIO引腳分別設(shè)定為高電平和低電平,其它剩余的GPIO引腳設(shè)定為高阻態(tài)。

前面電動(dòng)牙刷中6個(gè)LED燈的電路,就是這么設(shè)計(jì)的。

下面從最簡單的開始,一步一步體會(huì)查理復(fù)用的電路設(shè)計(jì)。 1、使用2個(gè)GPIO時(shí)最簡單:

7d1c3040-b328-11eb-bf61-12bb97331649.png

LED1亮起時(shí):

7d4cc8b8-b328-11eb-bf61-12bb97331649.png

LED2亮起時(shí):

7d69915a-b328-11eb-bf61-12bb97331649.png

這里只用到高電平、低電平的狀態(tài),不需要用高阻態(tài)的狀態(tài)。 2、使用3個(gè)GPIO時(shí),前面已經(jīng)分析過:

7909e236-b328-11eb-bf61-12bb97331649.png

可以等效為下圖:

7d9b361a-b328-11eb-bf61-12bb97331649.png

可以看出,確實(shí)是任意兩個(gè)GPIO之間均串入了兩個(gè)并聯(lián)的LED,且LED方向相反。 3、同樣的原理,使用4個(gè)GPIO時(shí):

7da60fc2-b328-11eb-bf61-12bb97331649.png

點(diǎn)亮LED1時(shí):

7db59be0-b328-11eb-bf61-12bb97331649.png

其他LED亮起的情況不再列舉。 查理復(fù)用這樣的電路接法也會(huì)引發(fā)一些問題。 首先,LED亮起時(shí)完全由單片機(jī)的GPIO輸出電流,所以對(duì)于GPIO的電流驅(qū)動(dòng)能力有一定的要求。設(shè)計(jì)電路時(shí)要注意查詢自己使用的MCU的電流驅(qū)動(dòng)能力,下圖是STM32單片機(jī)中對(duì)GPIO電流驅(qū)動(dòng)能力的說明:

7dc47520-b328-11eb-bf61-12bb97331649.png

其次,如果出現(xiàn)了某個(gè)LED開路或短路的情況,電流的流向會(huì)被打亂,LED亮起來的邏輯會(huì)變得錯(cuò)亂。最壞的情況下,電路會(huì)對(duì)GPIO索取大電流,導(dǎo)致單片機(jī)損壞。下圖是假設(shè)LED1短路,那么在點(diǎn)亮LED5時(shí),LED3也會(huì)亮起:

7df06996-b328-11eb-bf61-12bb97331649.png

三、繼續(xù)進(jìn)階

如果要同時(shí)亮起兩個(gè)以上的LED,怎么辦?

交替點(diǎn)亮他們就行,只要交替切換的速度夠快,由于人眼的視覺暫留效應(yīng),看起來就是同時(shí)亮起的。

值得一提的是,如果要同時(shí)亮起的LED較多,比如大規(guī)模的LED點(diǎn)陣,那么還要注意一些新的問題,頗有門道。

本文不再展開,感興趣的讀者可以自行查詢修煉,繼續(xù)進(jìn)階。

編輯:jq

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

    關(guān)注

    242

    文章

    23847

    瀏覽量

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

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650535
  • 電流
    +關(guān)注

    關(guān)注

    40

    文章

    7136

    瀏覽量

    135016
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1280

    瀏覽量

    54112

原文標(biāo)題:用3個(gè)IO口控制6個(gè)LED燈,怎么做到的?

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    KT142C-SOP16 語音芯片:6 段音樂 IO 控制與紐扣電池供電選型方案

    文檔圍繞 6 段音樂需獨(dú)立 IO 控制且由紐扣電池供電的語音芯片選型展開。指出需求關(guān)鍵在于芯片需 SOP16 封裝以滿足 6 個(gè)
    的頭像 發(fā)表于 06-23 09:33 ?198次閱讀
    KT142C-SOP16 語音芯片:<b class='flag-5'>6</b> 段音樂 <b class='flag-5'>IO</b> <b class='flag-5'>控制</b>與紐扣電池供電選型方案

    MCU是否可以使用普通IO和數(shù)據(jù)總線控制cy7c68013a,異步slavefifo模式增加一個(gè)與PC通信的USB?

    cy7c68013a的固件已經(jīng)配置成異步slave模式,是否有MCUIO控制cy7c68013a通過數(shù)據(jù)總線來實(shí)現(xiàn)與PC的USB通信,
    發(fā)表于 05-30 06:32

    拆了才知道的秘密——為啥這款飛利浦LED(10個(gè))動(dòng)不動(dòng)就翹?

    1、為啥這款LED動(dòng)不動(dòng)就不亮了 這個(gè)是知名品牌,做工精致,我一批買10個(gè)。還好,每個(gè)能堅(jiān)持一段時(shí)間。但是,最終,還是全部休息了,這個(gè)是最后一個(gè)。沒扔,留著拆一下。
    的頭像 發(fā)表于 05-08 13:47 ?284次閱讀
    拆了才知道的秘密——為啥這款飛利浦<b class='flag-5'>LED</b><b class='flag-5'>燈</b>(10<b class='flag-5'>個(gè)</b>)動(dòng)不動(dòng)就翹?

    HTR3306 6LED驅(qū)動(dòng)器和GPIO控制器中文手冊(cè)

    ? ? HTR3306是一款6路多功能LED驅(qū)動(dòng)器和GPIO控制器,2.5V~5.5V電源供電。10個(gè)IO端口中的任何一
    發(fā)表于 04-14 17:41 ?1次下載

    安信可Ai-WB2-01S做一個(gè)可用網(wǎng)頁控制的簡易

    以下作品由安信可社區(qū)用戶 KevinLi制作 01簡介 使用2個(gè)不同功率的Led通過GPIO的PWM通道+三極管控制亮度 ●供電:5V或3V ●控制
    的頭像 發(fā)表于 03-26 13:59 ?351次閱讀
    <b class='flag-5'>用</b>安信可Ai-WB2-01S做一<b class='flag-5'>個(gè)</b>可用網(wǎng)頁<b class='flag-5'>控制</b>的簡易<b class='flag-5'>燈</b>

    STM32F030P4F6為什么無法初始化IO輸出高電平?

    你好,我STM32F030P4F6這個(gè)作為主控芯片控制LED亮滅(LED是共陽接法)的時(shí)候發(fā)
    發(fā)表于 03-11 07:15

    Labview寫一個(gè)電子稱的485串程序

    關(guān)鍵詞:Labview + 串口程序 232、485串通訊是最常見的儀器儀表通訊方式之一,本文詳細(xì)介紹,Labview編寫一個(gè)電子秤的485串程序.
    的頭像 發(fā)表于 03-06 09:54 ?728次閱讀
    <b class='flag-5'>用</b>Labview寫一<b class='flag-5'>個(gè)</b>電子稱的485串<b class='flag-5'>口</b>程序

    SN74LVC4245A DIR和/OE兩個(gè)控制信號(hào)的高低電平可以28027的3.3V通用IO引腳控制嗎?

    現(xiàn)在用28027的IO與外圍5V器件進(jìn)行雙向數(shù)據(jù)交換。LVC4245A芯片DIR和/OE兩個(gè)控制信號(hào)的高低電平可以28027的3.3V
    發(fā)表于 12-30 08:34

    HTR3306 6LED驅(qū)動(dòng)器和GPIO控制

    HTR3306是一款6路多功能LED驅(qū)動(dòng)器和GPIO控制器,2.5V~5.5V電源供電。10個(gè)IO端口中的任何一
    的頭像 發(fā)表于 11-20 15:57 ?583次閱讀
    HTR3306  <b class='flag-5'>6</b>路<b class='flag-5'>LED</b>驅(qū)動(dòng)器和GPIO<b class='flag-5'>控制</b>器

    AIC3254要怎么做才能夠做到反饋抑制呢?

    今天我研究了一天了,發(fā)現(xiàn)AEC怎么做都無法做到只用單個(gè)MIC輸入。TI提供的例程,我也仔細(xì)地研究過了,那種例程,只適用于互相通話的情況。也就是說,那些例子都存在著兩個(gè)音源,很明顯,這樣是符合回波
    發(fā)表于 11-08 07:49

    雙開關(guān)控制個(gè)怎么接線

    雙開關(guān)控制個(gè)的接線方法主要有以下幾種,每種方法都有其特定的應(yīng)用場景和接線方式: 一、串聯(lián)接線法 接線步驟 : 將電源線的火線(L)與一個(gè)開關(guān)的一
    的頭像 發(fā)表于 10-09 15:57 ?1.4w次閱讀

    io和串口的區(qū)別 單片機(jī)有多少個(gè)io

    IO和串口的區(qū)別 IO,即輸入輸出端口(Input/Output Port),是單片機(jī)或其他微控制器與外部設(shè)備之間進(jìn)行數(shù)據(jù)交換的接口。它
    的頭像 發(fā)表于 10-06 10:06 ?4227次閱讀

    MCU IO的作用和特點(diǎn)

    MCU(微控制器)的IO(Input/Output Port,輸入輸出端口)是單片機(jī)與外界進(jìn)行信息交互的關(guān)鍵接口。這些IO在微
    的頭像 發(fā)表于 09-30 11:52 ?2859次閱讀

    單片機(jī)io怎么配置成輸出口

    單片機(jī)IO配置成輸出口的過程通常涉及對(duì)單片機(jī)內(nèi)部寄存器的操作。不同型號(hào)的單片機(jī)在寄存器配置和編程方式上可能有所不同,但基本原理是相似的。以下是一個(gè)通用的步驟,用于將單片機(jī)IO
    的頭像 發(fā)表于 09-14 14:33 ?1597次閱讀

    光纖收發(fā)器6個(gè)指示含義是什么

    光纖收發(fā)器是一種將電信號(hào)轉(zhuǎn)換為光信號(hào),或?qū)⒐庑盘?hào)轉(zhuǎn)換為電信號(hào)的設(shè)備,廣泛應(yīng)用于網(wǎng)絡(luò)通信、數(shù)據(jù)傳輸?shù)阮I(lǐng)域。光纖收發(fā)器通常具有多個(gè)指示,用于顯示設(shè)備的工作狀態(tài)和故障信息。以下是對(duì)光纖收發(fā)器6個(gè)指示
    的頭像 發(fā)表于 08-23 09:54 ?4129次閱讀