作业帮 > 综合 > 作业

谁能帮我用单片机C语言编写开关控制提示灯

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 01:21:08
谁能帮我用单片机C语言编写开关控制提示灯
要求:开关:S1 、S2、S3
LED:L1、L2、L3
蜂鸣器:B1、B2、B3
当S1开关ON,L1、L2、L3闪烁至S1断开,B1、B2、B3鸣3秒
当S2开关ON,L2、L3闪烁至S2断开,B2、B3鸣3秒
当S3开关ON,L3闪烁至S3断开,B3鸣3秒
最好能给我简单电路图,用直流5V控制电路!
L闪烁的同时B鸣
你的问题是在L闪烁的同时B鸣,还是B鸣了L再闪,还是L闪了B再鸣?已经过仿真,你可以改变闪烁频率,但是要保证a乘以闪烁时间等于3秒 #include<reg51.h>#define uchar unsigned char#define uint  unsigned intsbit s1=P1^0;sbit s2=P1^1;sbit s3=P1^2;sbit b1=P1^5;sbit b2=P1^6;sbit b3=P1^7;sbit l1=P3^0;sbit l2=P3^1;sbit l3=P3^2;delay1ms(uint x){uchar n; while(x--)   {for(n=0;n<125;n++);}}main(){ uchar a,b,c,d,e; while(1)      {       if(s1==0)        {         delay1ms(20);        if(s1==0)         {          a=6;b++;          if(b==1){b1=0;b2=0;b3=0;}          while(a--)                {  delay1ms(250);  l1=0;l2=0;l3=0;  if(s1==1){goto loop1;}  delay1ms(250);                 l1=1;l2=1;l3=1; } loop1:b1=1;b2=1;b3=1;P1=0xff;P3=0xff;             }          }      if(s2==0)       {                    delay1ms(20);        if(s2==0)         {           c++;a=6;          if(c==1){b2=0;b3=0;}          while(a--)                {                 delay1ms(250);  l2=0;l3=0;  if(s2==1){goto loop2;}  delay1ms(250);                 l2=1;l3=1;               }loop2:  b2=1;b3=1;P1=0xff;P3=0xff;            }          }     if(s3==0)       {                delay1ms(20);        if(s3==0)         {d++;a=6;          if(d==1){b3=0;}          while(a--)                 {    delay1ms(250);    l3=0;    if(s3==1){goto loop3;}    delay1ms(250);                   l3=1;                 }loop3: b3=1;P1=0xff;P3=0xff;               }             }        if(P1==0xff){a=0;b=0;c=0;d=0;P1=0xff;P3=0xff;}    }}