protues模拟89C51的电路时,为什么在P0口加了上拉电阻后还是拉不高呢?
3个回答
展开全部
因为从P0口到地之间,只有一个D1,LED-RED,所以此时P0口的电压就是LED-RED的压降,所以不可能会被拉高为高电平。
此时你即使让P0口输出为1,也不可能为高电平,否则LED-RED的压降就成为5V了。
所以对于这种情况,P0口的电平对于proteus来说就是不确定状态,既不是低电平,也不是高电平,所以仿真的时候,P0的电平指示应该是灰色的。
但此时LED是可能会被点亮的。
如果P0口输出为0,则P0口此时为低电平。
另外仿真和实际还是有些区别,比如LED的限流电阻,proteus中LED-RED默认是10mA,实际电路中没必要这么大,3mA左右就可以,还可以延长LED寿命。
对于单片机驱动LED最好采用灌电流方式,VCC--限流电阻--LED正端,LED负端--单片机口。
如果你是想要看单片机端口的高低电平变化,可以这么连接,单片机口--限流电阻--LED正端,LED负端--地。此时单片机口的高低电平就和你程序里设置一样了。VCC被限流电阻和LED共同承担了。
但如果不接限流电阻,就相当于你的电路里,把上拉电阻和电源同时去掉。此时如果单片机口输出为1,也就是高电平的时候,此时电压仅仅被施加在LED两端,情况和你现在一样,P0口的电平对于proteus来说就是不确定状态,既不是低电平,也不是高电平。
此时你即使让P0口输出为1,也不可能为高电平,否则LED-RED的压降就成为5V了。
所以对于这种情况,P0口的电平对于proteus来说就是不确定状态,既不是低电平,也不是高电平,所以仿真的时候,P0的电平指示应该是灰色的。
但此时LED是可能会被点亮的。
如果P0口输出为0,则P0口此时为低电平。
另外仿真和实际还是有些区别,比如LED的限流电阻,proteus中LED-RED默认是10mA,实际电路中没必要这么大,3mA左右就可以,还可以延长LED寿命。
对于单片机驱动LED最好采用灌电流方式,VCC--限流电阻--LED正端,LED负端--单片机口。
如果你是想要看单片机端口的高低电平变化,可以这么连接,单片机口--限流电阻--LED正端,LED负端--地。此时单片机口的高低电平就和你程序里设置一样了。VCC被限流电阻和LED共同承担了。
但如果不接限流电阻,就相当于你的电路里,把上拉电阻和电源同时去掉。此时如果单片机口输出为1,也就是高电平的时候,此时电压仅仅被施加在LED两端,情况和你现在一样,P0口的电平对于proteus来说就是不确定状态,既不是低电平,也不是高电平。
展开全部
首先在这之前,你要确定单片机地脚和电源都上对。
确定很简单,就是把LED正极接电源+5V,负极串电阻接单片机IO,置0,灯亮,置1,灯灭。OK,单片机正常。
好了,如果都接对了,电路再改回上拉那么分析下,你上拉10K,典型的都5V单片机,则最大拉电流为0.5MA,有可能电平是有了,但拉电流不够,有些LED至少2MA以上的吧。 这时候把10K改成1K-300欧姆,这时候应该亮了,如果还有问题接着来追加
确定很简单,就是把LED正极接电源+5V,负极串电阻接单片机IO,置0,灯亮,置1,灯灭。OK,单片机正常。
好了,如果都接对了,电路再改回上拉那么分析下,你上拉10K,典型的都5V单片机,则最大拉电流为0.5MA,有可能电平是有了,但拉电流不够,有些LED至少2MA以上的吧。 这时候把10K改成1K-300欧姆,这时候应该亮了,如果还有问题接着来追加
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询