找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索

如何讓單片機(jī)兩個(gè)io口控制三個(gè)LED顯示呢?

查看數(shù): 3937 | 評(píng)論數(shù): 19 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁(yè)<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2022-9-15 09:29

正文摘要:

我的單片機(jī)原理圖是這樣的,想用兩個(gè)io控制三個(gè)LED顯示,但是LED口輸入狀態(tài)時(shí),并沒有辦法讓兩個(gè)LED同時(shí)熄滅,反而同時(shí)點(diǎn)亮,實(shí)際加大了LED后面電阻也很難熄滅LED

回復(fù)

ID:884147 發(fā)表于 2022-9-19 19:31
最符合樓主要求的就是充分利用高阻,一個(gè)I/O口驅(qū)動(dòng)2個(gè)LED,兩個(gè)口可以驅(qū)動(dòng)4個(gè)LED。在樓主另一個(gè)板塊同樣的提問已經(jīng)有方案了,可是有價(jià)值的都沒有回復(fù)不知完成的怎么樣了。其實(shí)最主要的就是在高阻時(shí)要保證2個(gè)LED都不亮,2個(gè)二極管是為了更可靠保證高阻時(shí)不亮,加大電阻是沒用的,前邊已經(jīng)說了IO口要有高阻和推挽方式,要用壓降大的發(fā)光管,壓降不夠加二極管,下圖是經(jīng)過驗(yàn)證的。

ID:491577 發(fā)表于 2022-9-19 17:30
3個(gè)IO,控制3個(gè)LED和一個(gè)按鍵。樓主非要用一個(gè)IO控制按鍵,2個(gè)IO控制3個(gè)LED,自討苦吃。IO復(fù)用是有講究的,不是隨意,明顯用一個(gè)IO控制一個(gè)LED和一個(gè)按鍵,其他2個(gè)IO控制2個(gè)LED才是正解。
ID:161164 發(fā)表于 2022-9-19 15:34
188610329 發(fā)表于 2022-9-19 14:59
5V供電, 3個(gè)LED都是紅色 LED 的話, 全高阻,3燈都會(huì)亮, 雖然亮的比較暗

加上電阻就好了
ID:466997 發(fā)表于 2022-9-19 15:24
12#樓的同志很有想法,充滿智慧。值得學(xué)習(xí)
ID:624769 發(fā)表于 2022-9-19 14:59
lkc8210 發(fā)表于 2022-9-19 14:33
妙啊,動(dòng)態(tài)輸出就可以任意控制LED的亮滅

5V供電, 3個(gè)LED都是紅色 LED 的話, 全高阻,3燈都會(huì)亮, 雖然亮的比較暗
ID:161164 發(fā)表于 2022-9-19 14:33
逍遙111111 發(fā)表于 2022-9-15 11:42
這個(gè)電路再加幾個(gè)電阻不知道行不行得通,電阻位置不合適的話處于00狀態(tài)的話應(yīng)該3個(gè)燈都可能亮吧....

妙啊,動(dòng)態(tài)輸出就可以任意控制LED的亮滅

1.jpeg (134.75 KB, 下載次數(shù): 119)

1.jpeg
ID:16255 發(fā)表于 2022-9-19 11:35
用芯片控制,I2C通信,想控制多少個(gè)燈都可以,一個(gè)或多個(gè)燈隨便亮。
ID:915590 發(fā)表于 2022-9-16 15:06
songb11 發(fā)表于 2022-9-15 14:52
你的問題是不是想問:一個(gè)IO實(shí)現(xiàn)兩個(gè)LED的三種狀態(tài)[1亮2滅、2亮1滅、1 2都滅]控制?

我是想實(shí)現(xiàn),1亮2滅,12亮,12滅
ID:441351 發(fā)表于 2022-9-16 12:02
如果你不介意多用兩個(gè)三極管的話,可以用兩個(gè)三極管通過與邏輯控制一個(gè)LED,另外兩個(gè)LED用電平本身控制。電路圖如下:

Q1和Q2是兩個(gè)NPN三極管,如果兩個(gè)IO同時(shí)高電平,LED1和LED2兩側(cè)電平相同,不亮,此時(shí)Q1和Q2飽和,LED3亮;如果兩個(gè)IO中只有一個(gè)高電平,那么可以對(duì)應(yīng)地導(dǎo)通LED1或LED2,此時(shí)Q1和Q2中也只有一個(gè)導(dǎo)通,LED3不亮;如果兩個(gè)IO都是低電平,那么三個(gè)LED自然都不會(huì)亮。這樣一來,我們就可以單獨(dú)地控制三個(gè)LED的亮滅了,進(jìn)而可以通過頻閃的原理控制三個(gè)LED的8種組合狀態(tài)。

我簡(jiǎn)單搭了個(gè)小電路,用兩個(gè)IO控制三個(gè)LED的流水燈,實(shí)現(xiàn)8個(gè)LED狀態(tài)的循環(huán)轉(zhuǎn)移(000→001→010→...→111→000→001→...),驗(yàn)證了上面電路的有效性。IO使用了STC8G1K08A-8PIN 的P3.2和P3.3,電阻均為1kΩ,兩個(gè)三極管均使用S8050。代碼以及實(shí)現(xiàn)效果如下:

代碼:
  1. #include "STC8G.h"
  2. #include "intrins.h"

  3. void led(int a, int b, int c)
  4. {
  5.         if(a == 1)
  6.         {
  7.                 P3 = 0xF7;
  8.                 _nop_();
  9.                 P3 = 0xF3;
  10.         }
  11.         else _nop_();
  12.         if(b == 1)
  13.         {
  14.                 P3 = 0xFB;
  15.                 _nop_();
  16.                 P3 = 0xF3;
  17.         }
  18.         else _nop_();
  19.         if(c == 1)
  20.         {
  21.                 P3 = 0xFF;
  22.                 _nop_();
  23.                 P3 = 0xF3;
  24.         }
  25.         else _nop_();
  26. }

  27. void main()
  28. {
  29.         unsigned int m;
  30.         P3M0 = 0x0C;
  31.         P3M1 = 0x00;
  32.         P3 = 0xF3;
  33.         while(1)
  34.         {       
  35.                 for (m=0;m<65535;m++) led(0, 0, 0);
  36.                 for (m=0;m<65535;m++) led(0, 0, 1);
  37.                 for (m=0;m<65535;m++) led(0, 1, 0);
  38.                 for (m=0;m<65535;m++) led(0, 1, 1);
  39.                 for (m=0;m<65535;m++) led(1, 0, 0);
  40.                 for (m=0;m<65535;m++) led(1, 0, 1);
  41.                 for (m=0;m<65535;m++) led(1, 1, 0);
  42.                 for (m=0;m<65535;m++) led(1, 1, 1);
  43.         }
  44. }
復(fù)制代碼
代碼一插入進(jìn)來,TAB縮進(jìn)全沒了,暈。。。

實(shí)現(xiàn)效果:

效果還不錯(cuò)的,就是要加兩個(gè)三極管,不知道你能不能接受。


證明一下,只用了兩個(gè)引腳哦,哈哈~


ID:1034262 發(fā)表于 2022-9-16 00:02
每個(gè)IO可以控制2個(gè)LED,2個(gè)電阻接VCC、GND,分壓點(diǎn)接兩個(gè)LED背靠背,LED另一端接IO。
IO高電平亮LED1,低電平亮LED2,高阻則兩個(gè)都不亮,方波驅(qū)動(dòng)則兩個(gè)同時(shí)亮,PWM驅(qū)動(dòng)還可以獨(dú)立調(diào)光。

所以,2個(gè)IO可以獨(dú)立控制4個(gè)LED互不干擾。
ID:1007932 發(fā)表于 2022-9-15 20:18
電路結(jié)構(gòu)是可以的,有的充電器跳燈就是這樣的結(jié)構(gòu),要調(diào)節(jié)LED輸入電壓大于一個(gè)LED小于兩個(gè)LED,所以只串電阻沒啥用,還得串二極管,或用穩(wěn)壓管穩(wěn)壓芯片之類的。
ID:213173 發(fā)表于 2022-9-15 17:37
用盡量少的IO口控制盡量多的LED通常采用查理復(fù)用方法。計(jì)算公式N *(N - 1)= 個(gè)LED。這顯然不能滿足樓主“兩個(gè)IO口控制三個(gè)LED”的要求。解決這個(gè)問題有多種方法,沙發(fā)提供的方法最簡(jiǎn)單,但前提條件是IO口要能設(shè)置為推挽模式。
ID:924874 發(fā)表于 2022-9-15 14:52
你的問題是不是想問:一個(gè)IO實(shí)現(xiàn)兩個(gè)LED的三種狀態(tài)[1亮2滅、2亮1滅、1 2都滅]控制?
ID:924874 發(fā)表于 2022-9-15 14:41
首先你要搞清楚你想要得到或?qū)崿F(xiàn)一個(gè)怎樣的亮燈結(jié)果,再考慮設(shè)計(jì)電路。
就你貼出來的電路而言D6就獨(dú)占了一個(gè)IO,D2\D3共享一個(gè)IO。對(duì)于獨(dú)占來說LED亮滅自由控制,而你這個(gè)共享就要看你想實(shí)現(xiàn)怎樣的一個(gè)LED亮滅邏輯了,如IO為三態(tài)就可想你現(xiàn)在這個(gè)下的LED幾種狀態(tài)了
ID:1044839 發(fā)表于 2022-9-15 14:07
這玩意搞個(gè)編碼器可以嗎
ID:31164 發(fā)表于 2022-9-15 13:39
同時(shí)熄滅,同時(shí)亮兩個(gè)LED并聯(lián)不可以嗎
ID:893997 發(fā)表于 2022-9-15 13:18
可以用邏輯矛盾的方式
ID:884147 發(fā)表于 2022-9-15 13:08
樓主沒有看到51板塊8樓的解決方案嗎?高阻不亮是經(jīng)過驗(yàn)證的。
ID:958776 發(fā)表于 2022-9-15 11:42
這個(gè)電路再加幾個(gè)電阻不知道行不行得通,電阻位置不合適的話處于00狀態(tài)的話應(yīng)該3個(gè)燈都可能亮吧....

25012ba8ab373196cd5ba13012a7d4f.jpg (115.4 KB, 下載次數(shù): 124)

25012ba8ab373196cd5ba13012a7d4f.jpg

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表