[求助] 帮忙看看 谢谢

sunshie007   2015-11-25 21:53 楼主
#include
sbit LED=P1^5 ;
sbit LED1=P1^4 ;
main()
{
  while(1)
  {
  
  
  LED=0; LED1=0;
  }
}
现象为:第5位,第6位  灯熄灭 其余全亮。
改为LED=1; LED1=1; 就全亮了

我的问题是  其余没赋值的 为什么要亮?

回复评论 (8)

学点亮数码管要分清是共阳共阴,,,,
点赞  2015-11-25 22:05
还要考虑芯片上电后管脚的初始状态
点赞  2015-11-26 01:25
51单片机引脚的电平状态缺省值是高电平,也就是说你不赋值的话默认的就是高电平,根据你的代码LED是一端接单片机的管脚另一端接地或者是通过电阻接地的吧,所以没赋值的就点亮了
点赞  2015-11-26 08:08
给你个思路,以后记住了,不管什么器件接在单片机上,main函数刚开始的时候一定要给它初始化,这才是严谨的。
你的问题其实出在,没有考虑到51单片机上电后,IO的电平。所以刚开始的时候会点亮。因此,在main函数的一开始就可以初始化。
点赞  2015-11-26 09:19
引用: huaiqiao 发表于 2015-11-26 09:19
给你个思路,以后记住了,不管什么器件接在单片机上,main函数刚开始的时候一定要给它初始化,这才是严谨的 ...

#include
sbit LED1=P1^0 ;
sbit LED2=P1^1 ;
init_mcu()
{
  P1=0x00  ;
          ;
}  
void main()
{
init_mcu();
LED1=0;
LED2=0;
                   } LED随便设置什么 都是最后两个灯亮
点赞  2015-11-27 15:12
引用: sunshie007 发表于 2015-11-27 15:12
#include
sbit LED1=P1^0 ;
sbit LED2=P1^1 ;
init_mcu()
{
  P1=0x00  ;
          ;
}  
void main() ...

或者怎么初始化,具体点谢谢 小白。
点赞  2015-11-27 15:16
引用: sunshie007 发表于 2015-11-27 15:12
#include
sbit LED1=P1^0 ;
sbit LED2=P1^1 ;
init_mcu()
{
  P1=0x00  ;
          ;
}  
void main() ...

楼主哥哥啊,你main函数一开始,是init_mcu()(按照你写的程序)它的功能就是将P1口的所有电平配置为低电平;接着LED1=0也就是P1.0;LED2=0也就是P1.1两个IO配置成了低电平啊。
那我就不知道您的LED是低电平点亮还是高电平点亮了。
建议楼主多看看一些基础视频,或者跟着郭天祥的视频线走走。
点赞  2015-11-27 15:36
找到数码管的所有引脚。不管此时几个灯亮。测量每个脚的电压。根本不同灯的情况。看看引脚电平的不同。知道什么样的电平状态,各段的情况。再改程序。
点赞  2015-11-30 19:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复