<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術 > 設計應用 > 模擬電路中單端口管腳驅(qū)動雙LED的方法

          模擬電路中單端口管腳驅(qū)動雙LED的方法

          作者: 時間:2008-11-21 來源:網(wǎng)絡 收藏

            

            大多數(shù)現(xiàn)代都提供 I/O 端口,可以在程序執(zhí)行期間改變這些端口的功能。當用作輸出時,這些電路可以吸收或流出相當大的。本設計實例示出了用一個 I/O 驅(qū)動雙、 的三種方法。圖 1 是一個可能的方案,它使用外接反相器 IC1來驅(qū)動一只紅/綠雙向 ,即D1。端口的邏輯高電平輸出使流過綠色(上方),并將反相器輸入電平拉高,于是驅(qū)動反相器輸出端為低電平,從綠色 LED 吸入。端口管腳的邏輯低電平輸出使反相器輸出端為高電平,從而為紅色(下方)LED提供電流,的輸出端從紅色 LED 吸入電流。

            

            要關掉兩只LED 時,可以重新配置的端口管腳,使之從輸出轉(zhuǎn)為輸入或?qū)⒐苣_切換成三態(tài),任何一態(tài)都能阻止微控制器的端口管腳吸入或流出電流。這種電路的主要缺點是不能控制每只LED的亮度,而是由電阻器R5決定兩只LED的正向電流。

            圖2表示了另一種方法,它也有嚴重缺點。D3、D4和電阻器R3、R4構成一個低阻分壓器,為LED D5的一端提供/2V電壓。的值決定了電壓VZ的選擇,電壓較低的能提供更多的LED電流,較高電壓的齊納管限制了LED的最大電流。給定微控制器的輸出可以提供滿擺幅輸出的電壓, 與VZ之差限定了兩只LED的最大正向電流。例如,如果VCC為5V,VZ為3V,則流過任何一只LED的正向電壓就低于2V。一旦設計師選定了齊納二極管的電壓,VCC只能有少許變動,否則, LED的亮度就會出現(xiàn)波動。

            

            使用分立元件時,另有一種廉價的電路能避免其他電路的缺點(圖3)。圖中,當微控制器的輸出端口為高電平時,電流流經(jīng)綠色(上方)LED、R2、D2和FETQ2,端口的高電平接通。當微控制器輸出端口變?yōu)榈碗娖綍r,晶體管Q1導通,通過R2和紅色(下方)LED向端口管腳提供電流。電路可以對稱地工作,因為無論微控制器端口管腳的電平是高還是低,硅二極管D2的都出現(xiàn)。VCC可能在運行中出現(xiàn)變化,但必須保持高于3V。

            

            你可以單獨調(diào)整 LED 的電流,以使兩者亮度均衡,或?qū)ξ⒖刂破麟娫措妷号cLEDVCC之間的差異作出補償。方法是在Q1的射極與D2的陽極之間用兩只串聯(lián)的電阻器代替R2。并將兩支電阻器的中點連接到LED上。

            當微控制器的端口管腳被配制成“有上拉的輸入”時,端口為綠色LED提供少量電流。但是,只要上拉電阻器阻值等于或高于22 kΩ,就不會使關斷狀態(tài)下的LED產(chǎn)生使人誤解的光輸出。當端口管腳的輸入信號浮動時,即VCC為5V,而端口配置成無上拉電阻器的輸入,則電路不產(chǎn)生任何額外的電流,而由R1所決定的靜態(tài)電流平均值小于100mA。

          基爾霍夫電流相關文章:基爾霍夫電流定律




          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();