单片机00:继电器间隔1s的控制

蓝桥杯单片机CT107D板子的上很多的问题,诸如蜂鸣器上电时即一直“叫嚣”着,作为学习过一段时间在来接触蓝桥杯板子的我来说,还是很懵。

现在我主要来分享一下自己在练习蓝桥杯单片机(CT107D板子)上蜂鸣器的间隔1s的控制实验中的错误和解决的方法经验吧!

不知道大家刚接触到蓝桥杯单片机时做单片机是否跟我犯同样的错误

同时,我希望这篇文章可以帮助到大家!

一、刚开始做的错误程序:

 1 void main()
 2 {
 3     while(1)
 4     {
 5         P2=0xa0;
 6         buzzer=0;
 7         relay=1;
 8         Delay1000ms();
 9         relay=0;
10         P2=0x00;
11         
12     }
13     
14     
15 }


结果:L10始终亮着

分析:序号7-->P0^4=1经ULN2003(非门)转换成低电平,将开关吸往m2,m2与GND相连,由原理图得L10亮
            
二、尝试

尝试1

方式:调换relay的值

结果:无现象,L10始终暗着
       
尝试2成功
方式:在relay=0(序号10)后再调用一个延时函数

结果:继电器间隔1s响,L10间隔1s亮暗

分析:序号10处,由于错误代码中为调用延时函数,导致蓝桥杯板子(CT107D)上的继电器的开关还未反应(吸合到m2上)过来,就已经改变了控制锁存器HC573的Y5C的状态

     使得relay对应的P0^4(I/O口)的高低电压还未做出变化,即导致relay始终停留在序号7的高电位下,开关始终处在常闭端,L10始终亮着,继电器未发出间隔响声。


代码:如下

 1 void main()
 2 {
 3     while(1)
 4     {
 5         P2=0xa0;
 6         buzzer=0;
 7         relay=1;
 8         Delay1000ms();
 9         relay=0;
10         delay1000ms();
11         P2=0x00;
12         
13     }
14 }

 

posted @ 2018-08-20 19:14  不脱发的小码农  阅读(281)  评论(0)    收藏  举报