针对你提出的问题, 归纳为:一是图画的不太对;二是怎么写判断语句;三是仿真不准确。 一是图画的不太对。你画的图D1是低电压亮,且为单片机P1^0;D2是高电压亮,且为单片机P2^0; 如果你的本意是这样,那就没有错;如果不是,那就错了。 无论对错都可以进行修改,可以修改为低电压亮或高电压,也可以由一个I/O口控制。 二是怎么写判断语句。大家已回答的很好。 三是仿真不准确。解决了一、二问题仿真就没有问题了。 |
直接写: LED2=~LED1 |
xu223344558 发表于 2020-4-20 16:07 大佬,如果led2换成蜂鸣器,那led1和蜂鸣器的控制方式是否相同呢? 还有控制方式是根据连接的I/O接口决定的吗? |
由于两个LED连接方向相反,所以 if(LED1==0) LED2=~LED1; |
我觉得你应该首先把复位电路时钟电路接好然后需要分清=和==的区别一个表示赋值一个表示判断 |
211212 发表于 2020-4-20 16:00 大佬,麻烦说清楚一点那个vcc,led1什么时候亮没关系都可以的,我刚学,还有无数的知识没有学会 ![]() |
首先芯片启动的三要素 电源 、复位、时钟,你缺少了什么?其次你的LED1和LED2的控制方式不相同,一个是单片机PIN脚低电平电亮,一个是高电平电亮。代码编写的时候注意“==”和“=”的区别。 |
首先你的 vcc接的不对,其次你要的,led1什么时候亮啊,一直亮,还是周期性质的,你把 led2和 led11 |
if(LED1==0) LED2=0; |
if(LED1==0) LED2==0; 后一个应该 LED2=0; |
if(LED1==0) LED2=0; else LED2=1; 这样更好点 |
if(LED1==0) LED2==0 ;改为if(LED1==0) LED2=0;if(LED1==1) LED2=1; |
if(led1==0) { led2=1; } else { led2=0; } |
if(led1==0) |
1577740211 发表于 2020-4-20 17:18 决定器件的控制方式,取决于你的原理图的设计方式和元器件的特性,都是满足元器件的工作条件使它工作在你想要的状态下,比如你将LED灯正极接到VCC上,那么只需要控制LED的负极电压,让正负极形成点位电位差,产生电流那么LED就会亮(工作),而单片机的PIN脚可以通过软件控制输出高低电平,从而控制LED的亮和灭。反之LED2就需要控制正极为高电平就能亮。 |