为什么两个点阵只亮一个呢?可能的原因:
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端口就不用外接电源和电阻了。