找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2380|回復: 4
打印 上一主題 下一主題
收起左側(cè)

大家?guī)蛶兔ρ,看看這個程序配合這個圖為什么不行呀

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:60551 發(fā)表于 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, 下載次數(shù): 11

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:60551 發(fā)表于 2015-12-30 21:33 | 只看該作者
負載是 3 個脈沖電磁閥
回復

使用道具 舉報

板凳
ID:85702 發(fā)表于 2016-1-4 23:15 | 只看該作者
感覺是電磁干擾吧.試試去干擾吧
回復

使用道具 舉報

地板
ID:101873 發(fā)表于 2016-1-5 10:15 | 只看該作者
焊點的問題
回復

使用道具 舉報

5#
ID:101916 發(fā)表于 2016-1-5 13:53 | 只看該作者
延時太短
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表