爲什麼兩個點陣只亮一個呢?可能的原因:
1、主函數寫錯了。
2、74hc595的驅動函數錯了。
3、電路圖畫錯了。
4、proteus的bug。
困擾了我幾天的問題現在解決了,原因是電路圖錯了。我用複用的P0(AD0~AD7)口作爲74hc595的使能端,這是錯誤的,而改用普通的P1口後就行了。這是什麼原因呢?
某人的回答:
由於P0口內部沒有上拉電阻,是開漏的,不管它的驅動能力多大,相當於它是沒有電源的,需要外部 的電路提供,絕大多數情況下P0口是必需加上拉電阻的。
1.一般51單片機的P0口在作爲地址/數據複用時不接上拉電阻。
2.作爲一般的I/O口時用時,由於內部沒有上拉電阻,故要接上上拉電阻!!
3.當p0口用來驅動PNP管子的時候,就不需要上拉電阻,因爲此時的低電平有效;
4.當P0口用來驅動NPN管子的時候,就需要上拉電阻的,因爲此時只有當P0爲1時候,才能夠使後級端導通。
簡單一點說就是它要驅動LCD顯示屏顯示就必須要有電源驅動,否則亮不了,而恰好P0口沒有電源,所以就要外接電源,接上電阻是起到限流的作用;如果接P1、P2、P3端口就不用外接電源和電阻了。