如图,Q0.0~Q0.2顺序延时10S启动,逆序延时10S关闭,此程序无法运行,请问错在哪里

如图,Q0.0~Q0.2顺序延时10S启动,逆序延时10S关闭,此程序无法运行,请问错在哪里,第1张

首先,你的第一个SM00没用

当T39计时到了,触点T39导通,Q02置位,然后下面的T107开始计时,T107计时到了,T107触点导通,执行Q02复位。可是这时,上面的T39还是导通,而常闭的Q02也是导通的,Q02又被置位了,就导致你的Q02在反复的置位复位。其他的输出也存在这个毛病。

还有就是当网络1中Q00被置位后,网络2中的Q00触点就导通了,T109就开始计时了,也就是T38和T109基本上是同步的,因此当Q01置位时,Q00就已经被复位了。

望采纳。。。。

10S不知道你为什么要这么长延时,如果只是单纯的10S延时别的什么都不做的话那一般的延时函数是这样的(单片机晶振12M情况下,12T周期):

void Delay_MS(unsigned int x)

{

unsigned int a,b;

for(a = x; a > 0; a--)

for(b = 110; b > 0;b--);

}

你只需要用Delay_MS(10000);就可以,但是这么久的延时是很不科学的,这个思路也很不可取。要10S的时间可以用定时器,这样既准确又不会影响主程序的运行。祝成功~

首先,R1取200mΩ、C1取47F实在太夸张。电容的基本单位F是一个很大的单位,一般常用的电容量范围是数皮法(pF)~数千纳法(nF),对于电容器,其容量越大,则意味着其体积越大、价格越贵、稳定性越差;在电源电压一定的情况下,电路中的电阻值越小,其电流就越大,功耗(功率消耗)也越大。在本电路中,R1C1决定单稳延时时间,一般是取较大的阻值、较小的容量(当然是在一定的范围内。对于555,电阻值不宜超过数百千欧,否则电路的工作情况就不稳定了)。

其次,开关的用法不合理。

第三,发光二极管应接有限流电阻。

第四,仿真时C1可以取小一些,只要功能正确就行。在实际电路中再以计算值就行调测。

下图供参考。

#include<reg52h>

unsigned char t;

sbit P1_7=P1^7;

void main()

{

t=0;

P1_7=0;

TMOD=0x01;

TH0=0x3C;

TL0=0xB0;

EA=1;

ET0=1;

TR0=1;

while(1)

{

if(t==200)

{

t=0;

P1_7=1;

}

}

}

void dingshi0() interrupt 1

{

TH0=0x3C;

TL0=0xB0;

t++;

}

以上就是关于如图,Q0.0~Q0.2顺序延时10S启动,逆序延时10S关闭,此程序无法运行,请问错在哪里全部的内容,包括:如图,Q0.0~Q0.2顺序延时10S启动,逆序延时10S关闭,此程序无法运行,请问错在哪里、求触51单片机10S延时、用555定时器设计一个延时10s的电路 要求按下开关没有输出 断开开关输出十秒等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9304837.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存