關於51微控制器IO引腳的驅動能力與上拉電阻

2021-06-09 02:36:00 字數 3008 閱讀 6935

微控制器的引腳,可以用程式來控制,輸出高、低電平,這些可算是微控制器的輸出電壓。

但是,程式控制不了微控制器的輸出電流。 微控制器的輸出電流,很大程度上是取決於引腳上的外接器件。

微控制器輸出低電平時,將允許外部器件,向微控制器引腳內灌入電流,這個電流,稱為「灌電流」,外部電路稱為「灌電流負載」;

微控制器輸出高電平時,則允許外部器件,從微控制器的引腳,拉出電流,這個電流,稱為「拉電流」,外部電路稱為「拉電流負載」。

這些電流一般是多少?最大限度是多少? 這就是常見的微控制器輸出驅動能力的問題。

早期的 51 系列微控制器的帶負載能力,是很小的,僅僅用「能帶動多少個 ttl 輸入端」來說明的。

p1、p2 和 p3口,每個引腳可以都帶動 3 個 ttl 輸入端,只有 p0 口的能力強,它可以帶動 8 個!

分析一下 ttl 的輸入特性,就可以發現,51 微控制器基本上就沒有什麼驅動能力。

它的引腳,甚至不能帶動當時的 led 進行正常發光。

記得是在 at89c51 微控制器流行起來之後,做而論道才發現:微控制器引腳的能力大為增強,可以直接帶動 led 發光了。

看看下圖,圖中的 d1、d2 就可以不經其它驅動器件,直接由微控制器的引腳控制發光顯示。

雖然引腳已經可以直接驅動 led 發光,但是且慢,先別太高興,還是看看 at89c51 微控制器引腳的輸出能力吧。

從 at89c51 微控制器的 pdf 手冊檔案中可以看到,穩態輸出時,「灌電流」的上限為:

maximum iol per port pin: 10 ma;

maximum iol per 8-bit port:port 0: 26 ma,ports 1, 2, 3: 15 ma;

maximum total i for all output pins: 71 ma.

這裡是說:

每個單個的引腳,輸出低電平的時候,允許外部電路,向引腳灌入的最大電流為 10 ma;

每個 8 位的介面(p1、p2 以及 p3),允許向引腳灌入的總電流最大為 15 ma,而 p0 的能力強一些,允許向引腳灌入的最大總電流為 26 ma;

全部的四個介面所允許的灌電流之和,最大為 71 ma。

而當這些引腳「輸出高電平」的時候,微控制器的「拉電流」能力呢? 可以說是太差了,竟然不到 1 ma。

結論就是:微控制器輸出低電平的時候,驅動能力尚可,而輸出高電平的時候,就沒有輸出電流的能力。

這個結論是依照手冊中給出的資料做出來的。

51 微控制器的這些特性,是源於引腳的內部結構,引腳內部結構圖這裡就不畫了,很多書中都有。

在晶元的內部,引腳和地之間,有個三極體,所以引腳具有下拉的能力,輸出低電平的時候,允許灌入 10ma 的電流;而引腳和正電源之間,有個幾百k的「內部上拉電阻」,所以,引腳在高電平的時候,能夠輸出的拉電流很小。特別是 p0 口,其內部根本就沒有上拉電阻,所以 p0 口根本就沒有高電平輸出電流的能力。

再看看上面的電路圖:

圖中的 d1,是接在正電源和引腳之間的,這就屬於灌電流負載,d1 在微控制器輸出低電平的時候發光。這個發光的電流,可以用電阻控制在 10 ma 之內。

圖中的 d2,是接在引腳和地之間的,這屬於拉電流負載,d2 應該在微控制器輸出高電平的時候發光。但是微控制器此時幾乎沒有輸出能力,必須採用外接「上拉電阻」的方法來提供 d2 所需的電流。

哦,明白了,外接電路如果是「拉電流負載」,要求微控制器輸出高電平時發揮作用,那就必須用「上拉電阻」來協助,產生負載所需的電流。

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

從上面的圖中可以看到,d2 發光,是由上拉電阻 r2 提供的電流,d2 導通發光的電壓約為 2v,那麼發光的電流就是:(5 - 2) / 1k,約為 3ma。

而當微控制器輸出低電平(0v),d2 不發光的時候,r2 這個上拉電阻閒著了嗎? 沒有!它兩端的電壓,比 led 發光的時候還高,現在是 5v 了,其中的電流,是 5ma !

注意到了嗎? led 不發光的時候,上拉電阻給出了更大的電流!並且,這個大於正常發光的電流,全部灌入微控制器的引腳了!

如果在乙個 8 位的介面,安裝了 8 個 1k 的上拉電阻,當微控制器都輸出低電平的時候,就有 40ma 的電流灌入這個 8 位的介面!

如果四個 8 位介面,都加上 1k 的上拉電阻,最大有可能出現 32 × 5 = 160ma 的電流,都流入到微控制器中!

這個數值已經超過了微控制器手冊上給出的上限。如果此時微控制器工作不穩定,就是理所當然的了。

而且這些電流,都是在負載處於無效的狀態下出現的,它們都是完全沒有用處的電流,只是產生發熱、耗電大、電池消耗快...等後果。

呵呵,特別是現在,都在提倡節能減排,低碳...。

那麼,把上拉電阻加大些,可以嗎? 

回答是:不行的,因為需要它為拉電流負載提供電流。對於 led,如果加大電阻,將使電流過小,發光暗淡,就失去發光二極體的作用了。

對於 d1,是灌電流負載,微控制器輸出低電平的時候,r1、d1 通路上會有灌電流;輸出高電平的時候,那就什麼電流都沒有,此時就不產生額外的耗電。

綜上所述,灌電流負載,是合理的;而「拉電流負載」和「上拉電阻」會產生很大的無效電流,這種電路不合理。

有些網友對上拉電阻情有獨鍾,有用沒用的,都想在引腳上安裝個上拉電阻,甚至還能說出些理由:穩定性啦、速度啦...。

其實,「上拉電阻」和「拉電流負載」電路,是會對微控制器系統造成不良後果的。

做而論道看過很多關於微控制器引腳以及上拉電阻方面的書籍、參考資料,基本上它們對於使用上拉電阻的弊病都沒有進行仔細的討論。

在此,做而論道鄭重向大家提出建議:設計微控制器的負載電路,應該採用「灌電流負載」的電路形式,以避免無謂的電流消耗。

上拉電阻,僅僅是在 p0 口才考慮加不加的問題:當用 p0 口做為輸入口的時候,需要加上、當用 p0 口輸出高電平驅動 mos 型負載的時候,也需要加上,其它的時候,p0 口也不用加入上拉電阻。

在其它介面(p1、p2 和 p3),都不應該加上拉電阻,特別是輸出低電平有效的時候,外接器件就有上拉的作用。

關於51微控制器IO引腳的驅動能力與上拉電阻

微控制器的引腳,可以用程式來控制,輸出高 低電平,這些可算是微控制器的輸出電壓。但是,程式控制不了微控制器的輸出電流。微控制器的輸出電流,很大程度上是取決於引腳上的外接器件。微控制器輸出低電平時,將允許外部器件,向微控制器引腳內灌入電流,這個電流,稱為 灌電流 外部電路稱為 灌電流負載 微控制器輸出...

51系列微控制器IO引腳的驅動能力與上拉電阻分析

微控制器輸出低電平時,將允許外部器件,向微控制器引腳內灌入電流,這個電流,稱為 灌電流 外部電路稱為 灌電流負載 微控制器輸出高電平時,則允許外部器件,從微控制器的引腳,拉出電流,這個電流,稱為 拉電流 外部電路稱為 拉電流負載 這些電流一般是多少?最大限度是多少?這就是常見的微控制器輸出驅動能力的...

51微控制器的復位引腳 51微控制器引腳功能介紹

40只引腳雙列直插封裝 dip 40只引腳按功能分為3類 1 電源及時鐘引腳 vcc vss xtal1 xtal2。2 控制引腳 psen ea ale reset 即rst 3 i o口引腳 p0 p1 p2 p3,為4個8位i o口的外部引腳。2.2.1 電源及時鐘引腳 1.電源引腳 1 vc...