久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3817|回復: 19
收起左側

如何讓單片機兩個io口控制三個LED顯示呢?

  [復制鏈接]
ID:915590 發表于 2022-9-15 09:29 | 顯示全部樓層 |閱讀模式
Schematic_fan_2022-09-13.png
我的單片機原理圖是這樣的,想用兩個io控制三個LED顯示,但是LED口輸入狀態時,并沒有辦法讓兩個LED同時熄滅,反而同時點亮,實際加大了LED后面電阻也很難熄滅LED
回復

使用道具 舉報

ID:958776 發表于 2022-9-15 11:42 | 顯示全部樓層
這個電路再加幾個電阻不知道行不行得通,電阻位置不合適的話處于00狀態的話應該3個燈都可能亮吧....
25012ba8ab373196cd5ba13012a7d4f.jpg
回復

使用道具 舉報

ID:884147 發表于 2022-9-15 13:08 | 顯示全部樓層
樓主沒有看到51板塊8樓的解決方案嗎?高阻不亮是經過驗證的。
回復

使用道具 舉報

ID:893997 發表于 2022-9-15 13:18 | 顯示全部樓層
可以用邏輯矛盾的方式
回復

使用道具 舉報

ID:31164 發表于 2022-9-15 13:39 | 顯示全部樓層
同時熄滅,同時亮兩個LED并聯不可以嗎
回復

使用道具 舉報

ID:1044839 發表于 2022-9-15 14:07 | 顯示全部樓層
這玩意搞個編碼器可以嗎
回復

使用道具 舉報

ID:924874 發表于 2022-9-15 14:41 | 顯示全部樓層
首先你要搞清楚你想要得到或實現一個怎樣的亮燈結果,再考慮設計電路。
就你貼出來的電路而言D6就獨占了一個IO,D2\D3共享一個IO。對于獨占來說LED亮滅自由控制,而你這個共享就要看你想實現怎樣的一個LED亮滅邏輯了,如IO為三態就可想你現在這個下的LED幾種狀態了
回復

使用道具 舉報

ID:924874 發表于 2022-9-15 14:52 | 顯示全部樓層
你的問題是不是想問:一個IO實現兩個LED的三種狀態[1亮2滅、2亮1滅、1 2都滅]控制?
回復

使用道具 舉報

ID:213173 發表于 2022-9-15 17:37 | 顯示全部樓層
用盡量少的IO口控制盡量多的LED通常采用查理復用方法。計算公式N *(N - 1)= 個LED。這顯然不能滿足樓主“兩個IO口控制三個LED”的要求。解決這個問題有多種方法,沙發提供的方法最簡單,但前提條件是IO口要能設置為推挽模式。
回復

使用道具 舉報

ID:1007932 發表于 2022-9-15 20:18 | 顯示全部樓層
電路結構是可以的,有的充電器跳燈就是這樣的結構,要調節LED輸入電壓大于一個LED小于兩個LED,所以只串電阻沒啥用,還得串二極管,或用穩壓管穩壓芯片之類的。
回復

使用道具 舉報

ID:1034262 發表于 2022-9-16 00:02 | 顯示全部樓層
每個IO可以控制2個LED,2個電阻接VCC、GND,分壓點接兩個LED背靠背,LED另一端接IO。
IO高電平亮LED1,低電平亮LED2,高阻則兩個都不亮,方波驅動則兩個同時亮,PWM驅動還可以獨立調光。

所以,2個IO可以獨立控制4個LED互不干擾。
回復

使用道具 舉報

ID:441351 發表于 2022-9-16 12:02 | 顯示全部樓層
如果你不介意多用兩個三極管的話,可以用兩個三極管通過與邏輯控制一個LED,另外兩個LED用電平本身控制。電路圖如下:
20220916103117.jpg
Q1和Q2是兩個NPN三極管,如果兩個IO同時高電平,LED1和LED2兩側電平相同,不亮,此時Q1和Q2飽和,LED3亮;如果兩個IO中只有一個高電平,那么可以對應地導通LED1或LED2,此時Q1和Q2中也只有一個導通,LED3不亮;如果兩個IO都是低電平,那么三個LED自然都不會亮。這樣一來,我們就可以單獨地控制三個LED的亮滅了,進而可以通過頻閃的原理控制三個LED的8種組合狀態。

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

代碼:
  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. }
復制代碼
代碼一插入進來,TAB縮進全沒了,暈。。。

實現效果:
20220916065556-6bcc1cced7.[gif-2-mp4.com].gif
效果還不錯的,就是要加兩個三極管,不知道你能不能接受。

20220916115910.jpg
證明一下,只用了兩個引腳哦,哈哈~


回復

使用道具 舉報

ID:915590 發表于 2022-9-16 15:06 | 顯示全部樓層
songb11 發表于 2022-9-15 14:52
你的問題是不是想問:一個IO實現兩個LED的三種狀態[1亮2滅、2亮1滅、1 2都滅]控制?

我是想實現,1亮2滅,12亮,12滅
回復

使用道具 舉報

ID:16255 發表于 2022-9-19 11:35 | 顯示全部樓層
用芯片控制,I2C通信,想控制多少個燈都可以,一個或多個燈隨便亮。
1.jpg
回復

使用道具 舉報

ID:161164 發表于 2022-9-19 14:33 | 顯示全部樓層
逍遙111111 發表于 2022-9-15 11:42
這個電路再加幾個電阻不知道行不行得通,電阻位置不合適的話處于00狀態的話應該3個燈都可能亮吧....

妙啊,動態輸出就可以任意控制LED的亮滅
1.jpeg
回復

使用道具 舉報

ID:624769 發表于 2022-9-19 14:59 | 顯示全部樓層
lkc8210 發表于 2022-9-19 14:33
妙啊,動態輸出就可以任意控制LED的亮滅

5V供電, 3個LED都是紅色 LED 的話, 全高阻,3燈都會亮, 雖然亮的比較暗
回復

使用道具 舉報

ID:466997 發表于 2022-9-19 15:24 | 顯示全部樓層
12#樓的同志很有想法,充滿智慧。值得學習
回復

使用道具 舉報

ID:161164 發表于 2022-9-19 15:34 | 顯示全部樓層
188610329 發表于 2022-9-19 14:59
5V供電, 3個LED都是紅色 LED 的話, 全高阻,3燈都會亮, 雖然亮的比較暗

加上電阻就好了
回復

使用道具 舉報

ID:491577 發表于 2022-9-19 17:30 | 顯示全部樓層
3個IO,控制3個LED和一個按鍵。樓主非要用一個IO控制按鍵,2個IO控制3個LED,自討苦吃。IO復用是有講究的,不是隨意,明顯用一個IO控制一個LED和一個按鍵,其他2個IO控制2個LED才是正解。
回復

使用道具 舉報

ID:884147 發表于 2022-9-19 19:31 | 顯示全部樓層
最符合樓主要求的就是充分利用高阻,一個I/O口驅動2個LED,兩個口可以驅動4個LED。在樓主另一個板塊同樣的提問已經有方案了,可是有價值的都沒有回復不知完成的怎么樣了。其實最主要的就是在高阻時要保證2個LED都不亮,2個二極管是為了更可靠保證高阻時不亮,加大電阻是沒用的,前邊已經說了IO口要有高阻和推挽方式,要用壓降大的發光管,壓降不夠加二極管,下圖是經過驗證的。 51hei圖片_20220919190636.jpg

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久无码国产精品一区 | 成人网av | 免费观看黄网站 | 黄色一级大片视频 | 天天操夜夜操 | 国产精品久久久久久久三级 | 国产激情第一页 | 激情五月婷婷综合 | 成人免费淫片aa视频免费 | 国产一区二区三区免费观看在线 | 天天综合久久网 | 国产精品99999999 | 欧美一级毛片久久99精品蜜桃 | 国产欧美日韩综合精品一区二区 | 久久久久www | 日韩视频中文字幕 | 人人人艹 | 男人的天堂亚洲 | 国产在线观看av | 亚洲精品一区二区三区在线 | 日韩欧美第一页 | 蜜桃av一区二区三区 | 欧美日韩精品一区二区三区四区 | 伊人久久综合 | 国产一区二区精 | 欧美操操操 | 91在线第一页 | 日韩av在线不卡 | 日本午夜在线视频 | 久久一区二区免费视频 | 成人国产精品视频 | 日韩av在线一区 | 欧美va大片 | 国产美女在线观看 | 亚洲欧美在线一区 | 久久久久一区 | 欧美成人精品二区三区99精品 | 伊人伊人 | 亚洲国产成人一区二区 | 久久久www成人免费精品 | 国产综合久久久 |