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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51系列單片機IO引腳的驅(qū)動能力與上拉電阻分析

          51系列單片機IO引腳的驅(qū)動能力與上拉電阻分析

          作者: 時間:2011-08-10 來源:網(wǎng)絡(luò) 收藏

          51 的這些特性,是源于引腳的內(nèi)部結(jié)構(gòu),引腳內(nèi)部結(jié)構(gòu)圖這里就不畫了,很多書中都有。
          在芯片的內(nèi)部,引腳和地之間,有個三極管,所以引腳具有下拉的,輸出低電平的時候,允許灌入 10mA 的電流;而引腳和正電源之間,有個幾百K的“內(nèi)部上拉”,所以,引腳在高電平的時候,能夠輸出的拉電流很小。特別是 P0 口,其內(nèi)部根本就沒有上拉,所以 P0 口根本就沒有高電平輸出電流的。

          再看看上面的電路圖:
          圖中的 D1,是接在正電源和引腳之間的,這就屬于灌電流負載,D1 在輸出低電平的時候發(fā)光。這個發(fā)光的電流,可以用控制在 10 mA 之內(nèi)。
          圖中的 D2,是接在引腳和地之間的,這屬于拉電流負載,D2 應(yīng)該在輸出高電平的時候發(fā)光。但是單片機此時幾乎沒有輸出,必須采用外接“上拉電阻”的方法來提供 D2 所需的電流。

          哦,明白了,外接電路如果是“拉電流負載”,要求單片機輸出高電平時發(fā)揮作用,那就必須用“上拉電阻”來協(xié)助,產(chǎn)生負載所需的電流。

          下面做而論道就專門說說上拉電阻存在的問題。

          從上面的圖中可以看到,D2 發(fā)光,是由上拉電阻 R2 提供的電流,D2 導(dǎo)通發(fā)光的電壓約為 2V,那么發(fā)光的電流就是:(5 - 2) / 1K,約為 3mA。

          而當(dāng)單片機輸出低電平(0V),D2 不發(fā)光的時候,R2 這個上拉電阻閑著了嗎? 沒有!它兩端的電壓,比 LED 發(fā)光的時候還高,現(xiàn)在是 5V 了,其中的電流,是 5mA !
          注意到了嗎? LED 不發(fā)光的時候,上拉電阻給出了更大的電流!并且,這個大于正常發(fā)光的電流,全部灌入單片機的引腳了!

          如果在一個 8 位的接口,安裝了 8 個 1K 的上拉電阻,當(dāng)單片機都輸出低電平的時候,就有 40mA 的電流灌入這個 8 位的接口!
          如果四個 8 位接口,都加上 1K 的上拉電阻,最大有可能出現(xiàn) 32 × 5 = 160mA 的電流,都流入到單片機中!
          這個數(shù)值已經(jīng)超過了單片機手冊上給出的上限。如果此時單片機工作不穩(wěn)定,就是理所當(dāng)然的了。
          而且這些電流,都是在負載處于無效的狀態(tài)下出現(xiàn)的,它們都是完全沒有用處的電流,只是產(chǎn)生發(fā)熱、耗電大、電池消耗快...等后果。
          呵呵,特別是現(xiàn)在,都在提倡節(jié)能減排,低碳...。

          那么,把上拉電阻加大些,可以嗎? 
          回答是:不行的,因為需要它為拉電流負載提供電流。對于 LED,如果加大電阻,將使電流過小,發(fā)光暗淡,就失去發(fā)光二極管的作用了。

          對于 D1,是灌電流負載,單片機輸出低電平的時候,R1、D1 通路上會有灌電流;輸出高電平的時候,那就什么電流都沒有,此時就不產(chǎn)生額外的耗電。

          綜上所述,灌電流負載,是合理的;而“拉電流負載”和“上拉電阻”會產(chǎn)生很大的無效電流,這種電路不合理。

          光敏電阻相關(guān)文章:光敏電阻工作原理



          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();