找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2620|回复: 2
打印 上一主题 下一主题
收起左侧

基于51单片机的定时插座程序+电路设计

[复制链接]
跳转到指定楼层
楼主

程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P3^7;
sbit lcdrw=P3^6;
sbit lcden=P3^5;
sbit inf=P3^3;
sbit SCLK=P0^7;
sbit  IO=P0^6;
sbit RST=P0^5;
sbit beep=P0^4;
sbit P0_2=P0^2;
sbit P0_1=P0^1;
sbit P0_0=P0^0;
sbit s1=P2^0;
sbit s2=P2^1;
sbit s3=P2^2;
sbit s4=P2^3;
uchar code table1[]="  : :     :    ";
uchar code table2[]="  : :     :    ";
uchar code table3[]="   Welcome to  ";
uchar code table4[]=" Timing Sockets";
uchar code table5[]="20  - -     ";
uchar code table6[]="  : :       ";
uchar code table7[]="MON";
uchar code table8[]="TUE" ;
uchar code table9[]="WED" ;
uchar code table10[]="THR";
uchar code table11[]="FRI";
uchar code table12[]="SAT";
uchar code table13[]="SUN";
uchar code table14[]="Set theCalendar";
uchar code table15[]="Set theMode";
uchar code table16[]="Set theTiming  ";
uchar code table17[]="ModeChoice";
uchar code table18[]="1  2 3  4  5 6";
uint buf_key_code=0;
uint count_T=0,buf_CT=0;
uchar key=255;
uchar key_bit_count=0;
uchar common_code_count=0;
uchar inf_status=0;
uchar dd[7];
uchar aa[7]={0,0,11,17,4,6,11};
uchar ee[3]={11,0,0};
uchar ff[3]={11,1,0};
uchar kk[2]={11,2};
uchar hh[2]={11,3};
uchar gg[6];
bitflag,flag2,flag3,flag4,flag5,flag6,flag7,flag8,flag9,flag10,flag11,flag12,flag13,flag14;     
char miao,fen,shi,ri,yue,zhou,nian;
uchar sw,gw;
uchar s1num,s2num;
void display(void);
void delay(uint i)
{
              uintj;
              for(;i>0;i--)
                for(j=100;j>0;j--);
}
void write_com(uchar com)  //lcd写指令
{
              lcdrs=0;
              lcden=0;
              P1=com;
              delay(5);
              lcden=1;
              delay(5);
              lcden=0;
}
void write_data(uchar dat)  //lcd写数据
{
              lcdrs=1;
              lcden=0;
              P1=dat;
              delay(5);
              lcden=1;
              delay(5);
              lcden=0;
}                                                                    
void init()                                                                 //lcd初始化
{  uchar num;
              lcdrw=0;
   write_com(0x38);
              write_com(0x0c);
              write_com(0x06);
              write_com(0x01);
              write_com(0x80);
              write_com(0x01);
              write_com(0x80);
              for(num=0;num<16;num++)
                            {
                                          write_data(table3[num]);
                                          delay(5);
                            }
              write_com(0xc0);
       for(num=0;num<16;num++)
                            {
                                          write_data(table4[num]);
                                          delay(5);
                             }
                  delay(5);

       write_com(0x01);
              write_com(0x80);
       for(num=0;num<8;num++)
                            {
                                          write_data(table5[num]);
                                          delay(1);
                            }
              write_com(0xc0);
              for(num=0;num<8;num++)
                            {
                                          write_data(table6[num]);
                                          delay(1);
                            }

}
/*********DS1302程序*********/
void delay1(uint num)
  {
   while( --num );
   }
void DS1302_wbyte(uchar inbyte)//ds1302写数据
{
  uchar i;
  for(i=8;i>0;i--)
    {
      SCLK=0;   
      if(inbyte&0x01)
      IO=1;
      else
      IO=0;
      SCLK=1;  
      delay1(1);
      inbyte=inbyte>>1;
    }
}
uchar DS1302_rbyte()         //ds1302读数据
{
  uchar i,temp=0;
  IO=1;         
  for(i=7;i>0;i--)
    {
       SCLK=0;
       if(IO==1)
          temp=temp|0x80;
       else
          temp=temp&0x7f;
       SCLK=1;      
       temp=temp>>1;
    }
   return (temp);
}
//----------ds1302的某个地址写入数据-------------
void Write_DS1302(uchar cmd,uchar indata)
{
RST=1;
DS1302_wbyte(cmd);
DS1302_wbyte(indata);
  RST=0;
SCLK=0;
}
//----------ds1302某地址的的数据-----------------
uchar Read_DS1302(uchar addr)
{
uchar backdata;
RST=1;
DS1302_wbyte(addr);
backdata=DS1302_rbyte();//先写地址,然后读数据
RST=0;
SCLK=0;
return (backdata);
}
//------------设置初始时间-------------------
void Set_DS1302(uchar addr,uchar *p,ucharn)//写入n个数据
{uchar bb;
Write_DS1302(0x8e,0x00);//写控制字,允许写操作
for(;n>0;n--)
  {sw=(*p)/10;
    gw=(*p)%10;
    bb=(sw<<4)|gw;
    Write_DS1302(addr,bb);
     p++;
     addr=addr+2;
    }
Write_DS1302(0x8e,0x80);//写保护,不允许写
}
//----------- 读取当前时间-------------------
void Read_nowtime(uchar addr,uchar *p,ucharn)
{
for(;n>0;n--)
{
  *p=Read_DS1302(addr);
  p++;
  addr=addr+2;
                }
}
void init_DS1302()         //ds1302初始化
{
  RST=0;
SCLK=0;
Write_DS1302(0x80,0x00);//写控制字,允许写
Write_DS1302(0x90,0x00);//禁止涡流充电
}
void write_sfm(uchar add,uchar date)   
{
              sw=date/10;
              gw=date%10;
              write_com(0x80+0x40+add);
              write_data(0x30+sw);
              write_data(0x30+gw);
}
void write_nyr(uchar add,uchar date)
{
              sw=date/10;
              gw=date%10;
              write_com(0x80+add);
              write_data(0x30+sw);
              write_data(0x30+gw);
}
void write_zhou()              //星期处理
{ uchar num;
  write_com(0x80+11);
  switch(zhou)
{case 1: for(num=0;num<3;num++)
                            {
                                          write_data(table7[num]);
                                          delay(1);
                            };break;
  case 2: for(num=0;num<3;num++)
                            {
                                          write_data(table8[num]);
                                          delay(1);
                            };break;
  case 3: for(num=0;num<3;num++)
                            {
                                          write_data(table9[num]);
                                          delay(1);
                            };break;
  case 4: for(num=0;num<3;num++)
                            {
                                          write_data(table10[num]);
                                          delay(1);
                            };break;
  case 5: for(num=0;num<3;num++)
                            {
                                          write_data(table11[num]);
                                          delay(1);
                            };break;
  case 6: for(num=0;num<3;num++)
                            {
                                          write_data(table12[num]);
                                          delay(1);
                            };break;
  case 7: for(num=0;num<3;num++)
                            {
                                          write_data(table13[num]);
                                          delay(1);
                            };break;
  default:break;
   }
}
  void lcall()           
{  ucharnum1;
   write_com(0x01);
              write_com(0x80);
   for(num1=0;num1<8;num1++)
                            {
                                          write_data(table5[num1]);
                                          delay(1);
                            }
              write_com(0xc0);
              for(num1=0;num1<8;num1++)
                            {
                                          write_data(table6[num1]);
                                          delay(1);
                            }  
display();
  }
voidlcall5()                                   //写入定时开关时间
{
uchar num2;
write_com(0x01);
write_com(0x80);
       for(num2=0;num2<15;num2++)
                            {
                                          write_data(table1[num2]);
                                          delay(1);}
write_com(0xc0);
       for(num2=0;num2<15;num2++)
                            {
                                          write_data(table2[num2]);
                                          delay(1);}                        
write_nyr(0,ee[0]);
write_nyr(3,ee[1]);
write_nyr(6,ee[2]);
write_nyr(0x09,kk[0]);
write_nyr(0x0c,kk[1]);
  write_sfm(0,ff[0]);
write_sfm(3,ff[1]);
write_sfm(6,ff[2]);
write_sfm(0x09,hh[0]);
write_sfm(0x0c,hh[1]);

  }
void lcall3()
{               
        uchar num3;
       write_com(0x01);
                             write_com(0x80);
                         for(num3=0;num3<11;num3++)
                            {
                                          write_data(table17[num3]);
                                          delay(10);
                            }
                             write_com(0xc0);
                         for(num3=0;num3<16;num3++)
                            {
                                          write_data(table18[num3]);
                                          delay(10);
                            }
  }
/***************按键处理程序*************/
voidkeyscan()
{  
uchar num;  
if(s1==0)      
   {delay(5);
if(s1==0)
    {
                s1num++;
     flag=1;
     write_com(0x01);
     write_com(0x80);
     while(!s1);
     switch (s1num)
      {
                 case 1: for(num=0;num<16;num++)
                                     {write_data(table14[num]);write_com(0x0c);
                                              delay(1);};
                break;
      case 2: write_com(0x0c);s2num=0; flag3=0;
                for(num=0;num<16;num++)
                                   {write_data(table16[num]);write_com(0x0c);
                                      delay(1);}; break;
      case 3: for(num=0;num<12;num++)
                                     {write_data(table15[num]);write_com(0x0c);
                                              delay(1);};
                break;
      case 4: s2num=0;flag6=0;s1num=0;flag=0;flag5=0;write_com(0x0c);              
               for(num=0;num<8;num++)
                                     {
                                       write_data(table5[num]);
                                       delay(1);
                            }
               write_com(0xc0);
                         for(num=0;num<8;num++)
                                      {
                                                 write_data(table6[num]);
                                                 delay(1); }  break;                                                                                 
       default:break;                       
      }
      }
      }
       if(s1num!=0)
        { if(s1num==1)
                   { //1         
                  if(s2==0)               
         {delay(5);
       if(s2==0)
          {s2num++;      
       if(flag3==0)
          {lcall();}
       while(!s2);
       switch(s2num)
        { case 1: flag3=1;write_com(0x80+3);write_com(0x0f);break;
          case 2:  write_com(0x80+6);break;
          case 3:  write_com(0x80+9);break;
          case 4:  write_com(0x80+13);break;
          case 5:  write_com(0xc0+1);break;
          case 6:  write_com(0xc0+4);break;
          case 7:  write_com(0xc0+7);break;
          case 8: flag3=0;s2num=0;write_com(0x0c);Set_DS1302(0x80,aa, 7);break;        
          default:break;
                        }                                 
           }
         }     
   if(s2num!=0)
     {if(s3==0)
                {delay(5);
              if(s3==0)
                {while(!s3);
                 switch(s2num)
         {
                               case 1:nian++;
                  if(nian==100) nian=0;
                 write_nyr(2,nian);write_com(0x82);aa[6]=nian;Set_DS1302(0x80,aa, 7);break;
          case 2:yue++;
                  if(yue==13) yue=0;
                 write_nyr(5,yue);write_com(0x85);aa[4]=yue;Set_DS1302(0x80,aa, 7);break;
          case 3:ri++;
                  if(ri==31) ri=0;
                  write_nyr(8,ri);write_com(0x88);aa[3]=ri;Set_DS1302(0x80,aa,7); break;
          case 4:zhou++;                  
                  if(zhou==8) zhou=1;
                  aa[5]=zhou;
                                                          write_zhou(); write_com(0x80+13);Set_DS1302(0x80,aa,7);break;         
          case 5:shi++;
                  if(shi==24) shi=0;
                 write_sfm(0,shi);write_com(0xc0);aa[2]=shi;Set_DS1302(0x80,aa, 7);break;
          case 6:fen++;
                  if(fen==60) fen=0;
                 write_sfm(3,fen);write_com(0xc3);aa[1]=fen;Set_DS1302(0x80,aa,7);break;           
          case 7:miao++;
                  if(miao==60) miao=0;
                 write_sfm(6,miao);write_com(0xc6);aa[0]=miao;Set_DS1302(0x80,aa,7);break;
                                            default:break;
           }      
         }
       }
   if(s4==0)
                {delay(5);
              if(s4==0)
     {while(!s4);
                 switch(s2num)
         {
                               case 1:nian--;
                  if(nian==-1) nian=99;
                  write_nyr(2,nian);write_com(0x82);aa[6]=nian;Set_DS1302(0x80,aa,7); break;
          case 2:yue--;
                  if(yue==-1) yue=12;
                 write_nyr(5,yue);write_com(0x85);aa[4]=yue; Set_DS1302(0x80,aa,7);break;
          case 3:ri--;
                  if(ri==0) ri=31;
                 write_nyr(8,ri);write_com(0x88);aa[3]=ri;Set_DS1302(0x80,aa, 7); break;
          case 4:zhou--;                  
                  if(zhou==0) zhou=7;
                                                              aa[5]=zhou;
                  write_zhou();write_com(0x80+13);Set_DS1302(0x80,aa,7);break;           
          case 5:shi--;
                  if(shi==-1) shi=23;
                 write_sfm(0,shi);write_com(0xc0);aa[2]=shi;Set_DS1302(0x80,aa, 7);break;
          case 6:fen--;
                  if(fen==-1) fen=59;
                 write_sfm(3,fen);write_com(0xc3);aa[1]=fen;Set_DS1302(0x80,aa,7);break;           
          case 7:miao--;
                  if(miao==-1) miao=59;
                 write_sfm(6,miao);write_com(0xc6);aa[0]=miao;Set_DS1302(0x80,aa,7);break;
          default:break;
          }      
         }
        }
     }//s2num
                }        //1
           if(s1num==2)
                                          {
                                           if(s2==0)
               {delay(5);
            if(s2==0)
               {s2num++;
                                           if(flag6==0)
                                                        lcall5();
                  while(!s2);
        switch(s2num)
        {
                              case 1: flag6=1;write_com(0x81);write_com(0x0f);break;
         case 2:  write_com(0x84);break;
         case 3: flag2=1;write_com(0x87);break;
                              case 4: write_com(0xc1);break;
                              case 5: write_com(0xc4);break;
                              case 6: flag4=1;write_com(0xc7);break;
                              case 7: write_com(0x8a);break;
                              case 8: flag13=1;write_com(0x8d);break;
                              case 9: write_com(0xca);break;
                              case 10: flag14=1;write_com(0xcd);break;
         case 11: flag6=0;s2num=0;write_com(0x0c);break;
         default: break;
                        }
                              }
                            }                           

              if(s2num!=0)
     { if(s3==0)
                {delay(5);
              if(s3==0)
                {while(!s3);
                 switch(s2num)
         {
                               case 1:ee[0]+=1;
                  if(ee[0]==24) ee[0]=0;
                  write_nyr(0,ee[0]);write_com(0x80);break;
          case 2:ee[1]+=1;
                  if(ee[1]==60) ee[1]=0;
                 write_nyr(3,ee[1]);write_com(0x83); break;
          case 3:ee[2]+=1;
                  if(ee[2]==60) ee[2]=0;
                 write_nyr(6,ee[2]);write_com(0x86); break;
                               case 4:ff[0]+=1;      
                                      if(ff[0]==24) ff[0]=0;
                 write_sfm(0,ff[0]);write_com(0xc0); break;
          case 5:ff[1]+=1;
                  if(ff[1]==60) ff[1]=0;
                 write_sfm(3,ff[1]);write_com(0xc3);break;
          case 6:ff[2]+=1;
                  if(ff[2]==60) ff[2]=0;
                 write_sfm(6,ff[2]);write_com(0xc6); break;
                               case 7:kk[0]+=1;
                  if(kk[0]==24) kk[0]=0;
                 write_nyr(0x09,kk[0]);write_com(0x89);break;
                               case 8:kk[1]+=1;
                  if(kk[1]==60) kk[1]=0;
                 write_nyr(0x0c,kk[1]);write_com(0x8c); break;
                               case 9:hh[0]+=1;
                  if(hh[0]==24) hh[0]=0;
                 write_sfm(0x09,hh[0]);write_com(0xc9);break;
                               case 10:hh[1]+=1;
                  if(hh[1]==60) hh[1]=0;
                 write_sfm(0x0c,hh[1]);write_com(0xcc); break;         
                                            default:break;
                                }
                               }
                              }
                                 if(s4==0)
                                           {delay(5);
                                            if(s4==0)
                                          {while(!s4);
               switch(s2num)
         {case 1:ee[0]-=1;
                  if(ee[0]==-1) ee[0]=23;
                 write_nyr(0,ee[0]);write_com(0x80); break;
          case 2:ee[1]-=1;
                  if(ee[1]==-1) ee[1]=59;
                 write_nyr(3,ee[1]);write_com(0x83); break;
          case 3:ee[2]-=1;
                  if(ee[2]==-1) ee[2]=59;
                 write_nyr(6,ee[2]);write_com(0x86); break;
                               case 4:ff[0]-=1;      
                                      if(ff[0]==-1) ff[0]=23;
                  write_sfm(0,ff[0]);write_com(0xc0);break;
          case 5:ff[1]-=1;
                  if(ff[1]==-1) ff[1]=59;
                 write_sfm(3,ff[1]);write_com(0xc3); break;
          case 6:ff[2]-=1;
                  if(ff[2]==-1) ff[2]=59;
                 write_sfm(6,ff[2]);write_com(0xc6); break;
                               case 7:kk[0]-=1;
                  if(kk[0]==-1) kk[0]=23;
                 write_nyr(0x09,kk[0]);write_com(0x89); break;
                               case 8:kk[1]-=1;
                  if(kk[1]==-1) kk[1]=59;
                 write_nyr(0x0c,kk[1]);write_com(0x8c); break;
                               case 9:hh[0]-=1;
                  if(hh[0]==-1) hh[0]=23;
                 write_sfm(0x09,hh[0]);write_com(0xc9); break;
                               case 10:hh[1]-=1;
                  if(hh[1]==-1) hh[1]=59;
                 write_sfm(0x0c,hh[1]);write_com(0xcc); break;  
                                            default:break;                             
                               }
                               }
                               }

                            }//s2num
    }//s1num  
              if(s1num==3)
                                          {
                                           if(s2==0)
               {delay(5);
            if(s2==0)
               {s2num++;
                                           if(flag5==0)
                                                        lcall3();
                  while(!s2);
        switch(s2num)
        {
                              case 1: flag5=1;write_com(0xc0);write_com(0x0f);break;
         case 2:  write_com(0xc3);break;
         case 3:  write_com(0xc6);break;
                              case 4: write_com(0xc9);break;
         case 5:  write_com(0xcc);break;
                              case 6: write_com(0xcf);break;
         case 7: s2num=0;flag5=0;write_com(0x0c);break;
         default: break;
                        }
                              }
                            }

              if(s2num!=0)
     { if(s3==0)
                {delay(5);
              if(s3==0)
                {while(!s3);
                 switch(s2num)
         {
                               case 1:gg[0]=fen+10;flag7=1;P0_1=0;P0_2=0;write_com(0x0c);  break;     

          case 2:gg[1]=fen+20;flag8=1;P0_1=0; P0_2=0;write_com(0x0c);  break;

          case 3:gg[2]=fen+30;flag9=1;P0_1=0; P0_2=0;write_com(0x0c);  break;

                               case 4:gg[3]=fen+40;flag10=1;P0_1=0;P0_2=0;write_com(0x0c); break;     

          case 5:gg[4]=fen+50;flag11=1;P0_1=0; P0_2=0;write_com(0x0c); break;

          case 6:gg[5]=fen+60;flag11=1;P0_1=0; P0_2=0;write_com(0x0c); break;                                       
                               default:break;
                                }
                              }
                  }                                                                     
                }
   }                        
  }        
}


void dingshi(void)                                      //定时处理
{
                            if((shi==ee[0])&&(fen==ee[1])&&(miao==ee[2])&&(flag2==1))
               {   flag2=0;P0_1=0;beep=0;delay(1000);beep=1; P0_2=0;
                             }
          if((shi==ff[0])&&(fen==ff[1])&&(miao==ff[2])&&(flag4==1))
               {   flag4=0;P0_1=1; beep=0;delay(1000);beep=1;P0_2=1;
                             }
                            if((shi==kk[0])&&(fen==kk[1])&&(flag2==0)&&(flag13==1))
               {   flag13=0;P0_1=0;beep=0;delay(1000);beep=1;P0_2=0;
                             }
          if((shi==hh[0])&&(fen==hh[1])&&(flag4==0)&&(flag14==1))
               {   flag14=0;P0_1=1; beep=0;delay(1000);beep=1;P0_2=1;
                             }

                  if((fen==gg[0])&&(flag7==1))
              {   flag7=0;P0_1=1;P0_2=1;beep=0;delay(1000);beep=1;
                             }
                            if((fen==gg[1])&&(flag8==1))
              {   flag8=0;P0_1=1;P0_2=1;beep=0;delay(1000);beep=1;
        }
                            if((fen==gg[2])&&(flag9==1))
              {   flag9=0;P0_1=1;P0_2=1;beep=0;delay(1000);beep=1;
          }
                            if((fen==gg[3])&&(flag10==1))
              {   flag10=0;P0_1=1;P0_2=1;beep=0;delay(1000);beep=1;
                             }
                            if((fen==gg[4])&&(flag11==1))
              {   flag11=0;P0_1=1;P0_2=1;beep=0;delay(1000);beep=1;
        }
                            if((fen==gg[5])&&(flag12==1))
              {    flag12=0;P0_1=1;P0_2=1;beep=0;delay(1000);beep=1;
        }   
}         
void display(void)                      //显示时间
  {   
   Read_nowtime(0x81,dd,7);
   miao=dd[0]-(dd[0]>>4)*6;
   fen=dd[1]-(dd[1]>>4)*6;
   shi=dd[2]-(dd[2]>>4)*6;
   ri=dd[3]-(dd[3]>>4)*6;
   yue=dd[4]-(dd[4]>>4)*6;
   zhou=dd[5]-(dd[5]>>4)*6;
   nian=dd[6]-(dd[6]>>4)*6;
   write_sfm(6,miao);
   write_sfm(3,fen);
   write_sfm(0,shi);
   write_nyr(2,nian);
   write_nyr(5,yue);
   write_nyr(8,ri);
   write_zhou();
}
//红外处理部分
voiddelay10us(unsigned int t)
{
              while(t--);
}
/********************************************************/
void Time0(void) interrupt 1
{
              count_T++;
              if(inf_status==0&& count_T<160)
              {
                            EX1=0;
              }
              elseif((inf_status==1||inf_status==2)&&count_T<12)
              {
                            EX1=0;
              }
              else
              {
                            EX1=1;
              }
              if(count_T>500)
              {
                            inf_status=0;
                            count_T=600;
              }
}
/**************************************************/
void int_1(void) interrupt 2
{
              beep=0;
              TR0=1;
              if(count_T>15&&count_T<250)
              {
                            buf_CT=count_T;
                            count_T=0;
              }
              delay10us(10);
              if(inf==0)
              {
                            count_T=2;
              }
              if(buf_CT>15&&buf_CT<250)
              {
                            if(inf_status==0)
                            {
                                          if(buf_CT>210&&buf_CT<250)
                                          {
                                                        inf_status=1;
                                                        buf_key_code=0;
                                                        key_bit_count=0;
                                                        buf_CT=0;
                                          }
                            }
                            elseif(inf_status==1)
                            {
                                          if((buf_CT>15&&buf_CT<25)||(buf_CT>32&&buf_CT<45))
                                          {
                                                        common_code_count++;
                                                        if(common_code_count>=26)
                                                        {
                                                                      inf_status=2;
                                                                      common_code_count=0;
                                                                      key_bit_count=0;
                                                                      buf_key_code=0;
                                                        }
                                          }
                            }
                            elseif(inf_status==2)
                            {
                                          if(buf_CT>15&&buf_CT<25)
                                          {
                                                        buf_key_code>>=1;
                                                        key_bit_count++;
                                          }
                                          elseif(buf_CT>32&&buf_CT<45)
                                          {
                                                        buf_key_code>>=1;
                                                        buf_key_code|=0x80;
                                                        key_bit_count++;
                                          }
                                          if(key_bit_count>=8)
                                          {
                                                        //led1=!led1;
                                                        inf_status=0;
                                                        key_bit_count=0;
                                                        key=buf_key_code;
                                                        buf_key_code=0;
                                                        TR0=0;
                                                        count_T=600;
                                          }
                            }
                            buf_CT=0;
              }
              beep=1;
              EX1=1;
}
void Red_Init(void)      //红外初始化
{

              ET0=1;
              TMOD=0x02;
              TH0=0xCA;
              TL0=0xCA;
              IT1=1;
              EX1=1;
              TR0=0;
              EA=1;  
}            
//
void Key_Handle(void)  //红外按键处理
{

                            switch(key)                                                              
                            {  
                            case0x12:  P0_1=~P0_1;P0_2=~P0_2;key=255;break;
          case 0x01: P0_1=0;P0_2=0;flag7=1;gg[0]=fen+10;key=255;break;
                            case0x02: P0_1=0;P0_2=0;flag8=1;gg[1]=fen+20;key=255;break;
                            case0x03: P0_1=0;P0_2=0;flag9=1;gg[2]=fen+30;key=255;break;
                            case0x04: P0_1=0;P0_2=0;flag10=1;gg[3]=fen+40;key=255;break;
                            case0x05: P0_1=0;P0_2=0;flag11=1;gg[4]=fen+50;key=255;break;
                            case0x06: P0_1=0;P0_2=0;flag12=1;gg[5]=fen+60;key=255;break;  
                              default: key=255;break;

                              }key=255;
                                          }
void sysinit() //系统初始化
{            
   init();
              Red_Init();
   init_DS1302();

               flag2=0;
               flag4=0;
               flag7=0;
               flag8=0;
               flag9=0;
               flag10=0;
               flag11=0;
               flag12=0;
               flag13=0;
               flag14=0;            
                            }                          
void main()            //主函数
{
            sysinit();     //系统初始化
     while(1)
    {  EA=0;               
      keyscan();   //按键扫描
   if(flag==0)
    {   
      display();    //显示时间
     }
    dingshi();      //定时处理
               EA=1;
               Key_Handle(); //红外处理
               delay(50);                                    
                              }
  }



基于单片机的定时插座设计.pdf

953.86 KB, 下载次数: 46, 下载积分: 黑币 -5

设计电路及说明书

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:378915 发表于 2020-12-2 15:44 | 只看该作者
楼主,这程序我运行不正常,你Q吗,请教下问题。谢谢
回复

使用道具 举报

板凳
ID:440585 发表于 2022-9-21 14:18 | 只看该作者
程序和仿真图全部对不上,IO口没一个匹配的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表