标题: 大家帮帮忙呀,看看这个程序配合这个图为什么不行呀 [打印本页]

作者: whd1001q    时间: 2015-12-30 21:32
标题: 大家帮帮忙呀,看看这个程序配合这个图为什么不行呀
#include "reg52.h"

sbit relay11=P1^7;
sbit relay12=P1^6;
sbit relay21=P1^5;
sbit relay22=P1^4;
sbit relay31=P1^3;
sbit relay32=P1^2;

sbit relayLED1=P3^5;
sbit relayLED2=P3^4;
sbit relayLED3=P3^3;

bit flag1;
bit flag2;
bit flag3;

sbit key1=P3^1;  
sbit key2=P3^0;  
sbit key3=P3^2;   
void keyscan();
void init();

void delay(unsigned char n)  //约n(ms)延时
{ unsigned char i,j,k;
  for(k=0;k<n;k++)
    {  

      for(j=0;j<10;j++)         // 约1ms延时
       {
         for(i=0;i<30;i++)  //约0.1ms延时  
          {;}
       }
    }
}

void main()
{

   init();
   while(1)
   keyscan();



}

void keyscan()
{
//*****************************************************************
   if(key1==0)
    {       
        delay(100);
                flag1=1;
                if(key1==0)
                {
                        if(flag2==1)
                        {
               
                          relayLED2=0;
                          relay21=0;
                          relay22=1;
                          delay(1000);
                          relay22=0;
                          flag2=0;
                        }
                                if(flag3==1)
                        {
               
                          relayLED3=0;
                          relay31=0;
                          relay32=1;
                          delay(1000);
                          relay32=0;
                          flag3=0;
                        }
                       

                          relayLED1=1;
                          relay11=1;
                          relay12=0;
                          delay(1000);
                          relay11=0;

                       
                       
                        }

                        while(!key1);
        }
//*****************************************************************
   if(key2==0)
    {       
        delay(100);
                flag2=1;
                if(key2==0)
                {
                        if(flag1==1)
                        {
               
                          relayLED1=0;
                          relay11=0;
                          relay12=1;
                          delay(1000);
                          relay12=0;
                          flag1=0;
                        }
                                if(flag3==1)
                        {
               
                          relayLED3=0;
                          relay31=0;
                          relay32=1;
                          delay(1000);
                          relay32=0;
                          flag3=0;
                        }
                       

                          relayLED2=1;
                          relay21=1;
                          relay22=0;
                          delay(1000);
                          relay21=0;

                       
                       
                        }

                        while(!key2);
        }

//*****************************************************************
   if(key3==0)
    {       
        delay(100);
                flag3=1;
                if(key3==0)
                {
                    if(flag1==1)
                        {
               
                          relayLED1=0;
                          relay11=0;
                          relay12=1;
                          delay(1000);
                          relay12=0;
                          flag1=0;
                        }
                        if(flag2==1)
                        {
               
                          relayLED2=0;
                          relay21=0;
                          relay22=1;
                          delay(1000);
                          relay22=0;
                          flag2=0;
                        }

                       

                          relayLED3=1;
                          relay31=1;
                          relay32=0;
                          delay(1000);
                          relay31=0;

                       
                       
                        }

                        while(!key3);
        }




}



void init()
{
P2=0xff;
relay11= 0;
relay12= 0;
relay21= 0;
relay22= 0;
relay31= 0;
relay32= 0;

relayLED1= 0;
relayLED2= 0;
relayLED3= 0;

flag1=0;
flag2=0;
flag3=0;

key1=1;
key2=1;
key3=1;   
}

已做成板子,不接负载没有问题 ,一接负载 按钮就会乱,有时还不管用

2015.1.pdf

503.26 KB, 下载次数: 11


作者: whd1001q    时间: 2015-12-30 21:33
负载是 3 个脉冲电磁阀
作者: 七彩缤纷    时间: 2016-1-4 23:15
感觉是电磁干扰吧.试试去干扰吧
作者: hhhhhh.    时间: 2016-1-5 10:15
焊点的问题
作者: 1309893492    时间: 2016-1-5 13:53
延时太短




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1