1、51單片機的p0口為了實現準3態(tài),采用了oc輸出,也就是集電極懸空輸出,也有叫圖騰柱輸出的。這種電路結構,只有下拉能力,高電平輸出沒有電流,在高電平時表現為高阻態(tài);加上上拉電阻,就會失去高阻態(tài),變成 1、0 兩態(tài)。
2、p0口上拉電阻的選擇,應遵循基本的電路設計原則,不能盲目套用,要看后級情況而定:
例如,后級驅動的是1只npn三極管,這個三極管的放大倍數(β)=100倍,三極管的負載電流(ic)要求100ma,當電源為5v時:
a、三極管的ib=ic/β=1ma;
b、上拉電阻大約=r=5v/ib=5kω;
c、為了使三極管注入ib后就迅速進入導通(開)狀態(tài),r應再小一些,如4k3;
3、由上面計算可見,三極管的負載大小、放大倍數直接影響到前級上拉電阻的選取;上拉電阻選擇的不合理,要么后級驅動無力或根本驅動不了;要么單片機端口功耗過大,尤其是電池供電的設備更應注意!
更要注意的是,上拉電阻絕對不能小于250ω!否則會損壞端口!
4、上述的電路設計應該說是不合理的;我們經常能見到這樣的電路設計:
單片機端口通過 上拉電阻 > npn三極管 > 來控制繼電器,這種設計在上電時繼電器總要先吸合,這時就要在程序啟動后立即將端口清0,使繼電器釋放;但每次上電短暫的吸合還是無法克服。
比較好的用法是采用負邏輯設計,例如端口驅動led燈,應采用 端口 > led > 電阻 > 電源,避免采用 端口 > led > 電阻 > 地 + 上拉電阻;再例如單片機輸出去驅動的三極管,最好采用pnp型!這樣就沒有上拉的麻煩(基極電阻不能少?。辉诤蠹墳閕c時,即或是要上拉,也是象征意義上的,使用5~10k完全可以。
5、除了p0口外,其他口不是特殊設計,沒必要考慮上拉!