51單片機P0口上拉電阻的選擇

作為I/O口輸出的時候時,輸出低電平為0 輸出高電平為高組態(並非5V,相當於懸空狀態,也就是說P0 口不能真正的輸出高電平)。給所接的負載提供電流,因此必須接(一電阻連接到VCC),由電源通過這個上拉電阻給負載提供電流。

P0作輸入時不需要上拉電阻,但要先置1。因為P0口作一般I/O口時上拉場效應管一直截止,所以如果不置1,下拉場效應管會導通,永遠只能讀到0。因此在輸入前置1,使下拉場效應管截止,端口會處於高阻浮空狀態,才可以正確讀入數據。

51單片機P0口上拉電阻的選擇

由於P0口內部沒有上拉電阻,是開漏的,不管它的驅動能力多大,相當於它是沒有電源的,需要外部的電路提供,絕大多數情況下P0口是必需加上拉電阻的。

1.一般的P0口在作為地址/數據複用時不接上拉電阻。

2.作為一般的I/O口時用時,由於內部沒有上拉電阻,故要接上上拉電阻!!

3.當p0口用來驅動PNP管子的時候,就不需要上拉電阻,因為此時的低電平有效;

4.當P0口用來驅動NPN管子的時候,就需要上拉電阻的,因為此時只有當P0為1時候,才能夠使後級端導通。 簡單一點說就是它要驅動LCD顯示屏顯示就必須要有電源驅動,否則亮不了,而恰好P0口沒有電源,所以就要外接電源,接上電阻是起到限流的作用;如果接P1、P2、P3端口就不用外接電源和電阻了。

51單片機P0口上拉電阻的選擇

P0口是開漏的,不管它的驅動能力多大,相當於它是沒有電源的,需要外部的電路提供,絕大多數情況下P0口是必需加上拉電阻的;5、51單片機的P0口用作數據和地址總線時不必加上拉電阻。

有些IC的驅動能力並不強,如果P0口作為輸入而加了不必要的上拉,有可能驅動IC無法將其拉回到低電平,從而使輸入失敗!

如果是驅動led,那麼用1K左右的就行了。如果希望亮度大一些,電阻可減小,最小不要小於200歐姆,否則電流太大;如果希望亮度小一些,電阻可增大,增加到多少呢,主要看亮度情況,以亮度合適為準,一般來說超過3K以上時,亮度就很弱了,但是對於超高亮度的LED,有時候電阻為10K時覺得亮度還能夠用。通常就用1k的。對於驅動光耦合器,如果是高電位有效,即耦合器輸入端接端口和地之間,那麼和LED的情況是一樣的;如果是低電位有效,即耦合器輸入端接端口和VCC之間,那麼除了要串接一個1——4.7k之間的電阻以外,同時上拉電阻的阻值就可以用的特別大,用100k——500K之間的都行,當然用10K的也可以,但是考慮到省電問題,沒有必要用那麼小的。

51單片機P0口上拉電阻的選擇

對於驅動晶體管,又分為PNP和NPN管兩種情況:對於NPN,毫無疑問NPN管是高電平有效的,因此上拉電阻的阻值用2K——20K之間的,具體的大小還要看晶體管的集電極接的是什麼負載,對於LED類負載,由於發管電流很小,因此上拉電阻的阻值可以用20k的,但是對於管子的集電極為繼電器負載時,由於集電極電流大,因此上拉電阻的阻值最好不要大於4.7K,有時候甚至用2K的。對於PNP管,毫無疑問PNP管是低電平有效的,因此上拉電阻的阻值用100K以上的就行了,且管子的基極必須串接一個1——10K的電阻,阻值的大小要看管子集電極的負載是什麼,對於LED類負載,由於發光電流很小,因此基極串接的電阻的阻值可以用20k的,但是對於管子的集電極為繼電器負載時,由於集電極電流大,因此基極電阻的阻值最好不要大於4.7K。

51單片機P0口上拉電阻的選擇

對於驅動TTL集成電路,上拉電阻的阻值要用1——10K之間的,有時候電阻太大的話是拉不起來的,因此用的阻值較小。但是對於CMOS集成電路,上拉電阻的阻值就可以用的很大,一般不小於20K,我通常用100K的,實際上對於CMOS電路,上拉電阻的阻值用1M的也是可以的,但是要注意上拉電阻的阻值太大的時候,容易產生干擾,尤其是線路板的線條很長的時候,這種干擾更嚴重,這種情況下上拉電阻不宜過大,一般要小於100K,有時候甚至小於10K。

根據以上分析,上拉電阻的阻值的選取是有很多講究的,不能亂用。


分享到:


相關文章: