⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcm16864zk.c

📁 一个基于51单片机的报警系统。包含有电路图
💻 C
📖 第 1 页 / 共 3 页
字号:
    if(i==1)
    {
     RobData=RobData|0x08;
     }
     else
     {
      RobData=RobData&0xf7;
     }

   }
   break;
  }
  if(RKEY==0)
  {
   Delay_ms(10);
   if(RKEY==0)
   {
    while(1)
     {if(RKEY==1) break;}
    WritCommand(0x95);
     i=~i;
     if(i==1)
     {
     WritCommand(0x95);
     WritData(0xa3);WritData(0xd9);
     WritCommand(0x10);
      }
      else
      {
       WritCommand(0x95);
       WritData(0xa3);WritData(0xce);
       WritCommand(0x10);
      }
   }
   WritCommand(0x95);
  }
 }
}
void EjectSand(void)
{
  bit i=1;
 WritCommand(0x01);
 ShowPart16();                                          //自动喷沙:Y
 ShowPart4();
 while(1)
 {
  if(LKEY==0)
  {
   Delay_ms(10);
   if(LKEY==0)
   {
    while(1)
    {if(LKEY==1) break;}
    if(i==1)
    {
     RobData=RobData|0x10;
     }
     else
     {
      RobData=RobData&0xef;
     }

   }
   break;
  }
  if(RKEY==0)
  {
   Delay_ms(10);
   if(RKEY==0)
   {
    while(1)
     {if(RKEY==1) break;}
     WritCommand(0x95);
     i=~i;
     if(i==1)
     {
     WritCommand(0x95);
     WritData(0xa3);WritData(0xd9);
     WritCommand(0x10);
      }
      else
      {
       WritCommand(0x95);
       WritData(0xa3);WritData(0xce);
       WritCommand(0x10);
      }
     }
   }
   WritCommand(0x95);
  }

}

void FireSet1(uchar num)
{
 uchar i,j;
 WritCommand(0x0c);
 ShowPart14();
 while(1)
   {
     if(LKEY==0)
       {
        Delay_ms(10);
        if(LKEY==0)
         {
            pdx=0x0300;
            i=*pdx;
            *pdx=i+1;
             pdx=0x0302+i+1;
             *pdx=num;
            while(1)
            {
            if(LKEY==1) break;
            }
            break;
          }
        }
        if(MKEY==0)
       {
        Delay_ms(10);
        if(MKEY==0)
         {
            WritCommand(0x0e);
            FireSet();

            while(1)
            {
            if(LKEY==1) break;
            }
            break;
          }
        }
      if(RKEY==0)
              {
                Delay_ms(10);          //延时去抖动
                if(RKEY==0)
                {
                  pdx=0x0300;
                  i=*pdx;
                  *pdx=i+1;
                  j=EjectorNum();
                  FireSet1(j);
                 }
               }
        ShowTime();
        Delay_ms(10);
     }
}

void CalenSet(void)
{
 uchar i;
 WritCommand(0x01);                     //清零
 WritCommand(0x0c);
 ShowPart17();
 ShowPart5();
 ShowTime();
 while(1)
 {
  if(RKEY==0)
  {
   while(1){if(RKEY==1) break; }

   break;
  }
  if(LKEY==0)
  {
   while(1) {if(LKEY==1)break;}

   CalenSet1();
   WritData(0x2f);

   CalenSet2();
    WritData(0x2f);

   CalenSet3();
    WritData(0x2f);

    CalenSet4();
    WritData(0x2f);

    i=CalenSet5();
   calen[1]=i;
   i=CalenSet5();
   calen[0]=i;
   BurstW1302(calen);
   ///////////////////////////////////////////
   break;
   }
  }
}
void CalenSet1(void)
{
 uchar k=0;
 WritCommand(0x98);
 WritData(0xc8);WritData(0xb7);          //确认
 WritData(0xc8);WritData(0xcf);
 WritCommand(0x9b);
 WritData(0xc9);WritData(0xcf);WritData(0xb7);WritData(0xad);     //上翻
 WritCommand(0x9e);
 WritData(0xcf);WritData(0xc2);WritData(0xb7);WritData(0xad);     //下翻
 WritCommand(0x80);
 WritData(0x20);WritData(0x20);
 Delay_ms(150);
 WritCommand(0x10);
 ShowK(k);
 while(1)
 {

   if(LKEY==0)
   {
    Delay_ms(10);
    if(LKEY==0)
    {
     while(1){if(LKEY==1)break;}                  //年
     calen[6]=k;
     }
     break;
    }
    if(MKEY==0)
    {
     Delay_ms(10);
     if(MKEY==0)
      {
       while(1){if(MKEY==1)break;}
       if(k==0x99)
       {
        k=0x00;
        }
       else if((k&0x0f)==9)
       {
        k=k&0xf0;
        k=k+0x10;
       }
       else {k++;}
       WritCommand(0x10);
       ShowK(k);
       }
      }
     if(RKEY==0)
     {
      Delay_ms(10);
      if(RKEY==0)
      {
       while(1){if(RKEY==1)break;}
       if(k==0x00)
       {
        k=0x99;
        }
       else if((k&0x0f)==0)
       {
        k=k-0x10;
        k=k+0x09;
       }
       else {k--;}
        WritCommand(0x10);
       ShowK(k);
      }
     }

 }
}
void CalenSet2(void)
{
 uchar k=0;
 WritData(0x20);WritData(0x20);
 Delay_ms(150);
 WritCommand(0x10);
 ShowK(k);
// uchar i;
 while(1)
 {

   if(LKEY==0)
   {
    Delay_ms(10);
    if(LKEY==0)
    {
     while(1){if(LKEY==1)break;}
     calen[4]=k;                                      //月

     }
     break;
    }
    if(MKEY==0)
    {
     Delay_ms(10);
     if(MKEY==0)
      {
       while(1){if(MKEY==1)break;}
       if(k==0x12)
       {
        k=0x01;
        }
       else if(k==9)
       {
        k=0x10;
       }
       else {k++;}
        WritCommand(0x10);
       ShowK(k);

       }
      }
     if(RKEY==0)
     {
      Delay_ms(10);
      if(RKEY==0)
      {
       while(1){if(RKEY==1)break;}
       if(k==0x01)
       {
        k=0x12;
        }
       else if(k==0x10)
       {
        k=0x09;
       }
       else {k--;}
        WritCommand(0x10);
       ShowK(k);
      }
     }

 }
}
void CalenSet3(void)
{
  uchar k=1;

  ShowK(k);
 while(1)
 {

   if(LKEY==0)
   {
    Delay_ms(10);
    if(LKEY==0)
    {
     while(1){if(LKEY==1)break;}
     calen[3]=k;                                          //日
     }
     break;
    }
    if(MKEY==0)
    {
     Delay_ms(10);
     if(MKEY==0)
      {
       while(1){if(MKEY==1)break;}
       if(k==0x31)
       {
        k=0x01;
        }
       else if((k&0x0f)==9)
       {
        k=k&0xf0;
        k=k+0x10;
       }
       else {k++;}
        WritCommand(0x10);
       ShowK(k);
       }
      }
     if(RKEY==0)
     {
      Delay_ms(10);
      if(RKEY==0)
      {
       while(1){if(RKEY==1)break;}
       if(k==0x01)
       {
        k=0x31;
        }
       else if((k&0x0f)==0)
       {
        k=k-0x10;
        k=k+0x09;
       }
       else {k--;}
       WritCommand(0x10);
       ShowK(k);
      }
     }

 }
}
void CalenSet4(void)
{
 uchar k=0;

 ShowK(k);
 while(1)
 {

   if(LKEY==0)
   {
    Delay_ms(10);
    if(LKEY==0)
    {
     while(1){if(LKEY==1)break;}
     calen[2]=k;                                              //时
     }
     break;
    }
    if(MKEY==0)
    {
     Delay_ms(10);
     if(MKEY==0)
      {
       while(1){if(MKEY==1)break;}
       if(k==0x23)
       {
        k=0x00;
        }
       else if((k&0x0f)==9)
       {
        k=k&0xf0;
        k=k+0x10;
       }
       else {k++;}
       WritCommand(0x10);
       ShowK(k);
       }
      }
     if(RKEY==0)
     {
      Delay_ms(10);
      if(RKEY==0)
      {
       while(1){if(RKEY==1)break;}
       if(k==0x00)
       {
        k=0x23;
        }
       else if((k&0x0f)==0)
       {
        k=k-0x10;
        k=k+0x09;
       }
       else {k--;}
       WritCommand(0x10);
       ShowK(k);
      }
     }

 }
}
uchar CalenSet5(void)                                             //分
{
   uchar k=0;
   ShowK(k);
 while(1)
 {

   if(LKEY==0)
   {
    Delay_ms(10);
    if(LKEY==0)
    {
     while(1){if(LKEY==1)break;}
     return k;
     }
     break;
    }
    if(MKEY==0)
    {
     Delay_ms(10);
     if(MKEY==0)
      {
       while(1){if(MKEY==1)break;}
       if(k==0x59)
       {
        k=0x00;
        }
       else if((k&0x0f)==9)
       {
        k=k&0xf0;
        k=k+0x10;
       }
       else {k++;}
       WritCommand(0x10);
       ShowK(k);
       }
      }
      if(RKEY==0)
     {
      Delay_ms(10);
      if(RKEY==0)
      {
       while(1){if(RKEY==1)break;}
       if(k==0x00)
       {
        k=0x59;
        }
       else if((k&0x0f)==0)
       {
        k=k-0x10;
        k=k+0x09;
       }
       else {k--;}
       WritCommand(0x10);
       ShowK(k);
      }
     }
 }
}
void ShowK(uchar num)
{
 uchar i;
 i=num&0xf0;
 i=i>>4;
 WritData(0x30+i);
 i=num&0x0f;
 WritData(0x30+i);

}
//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////报警处理处理

void sever_int1() interrupt 2 using 3
{
 EA=0;
 P0=0XFF;
 P2=0X5F;
 _RD=0;
 ACC=P0;
 P2=0X4F;
 _RD=1;
 ACC=WARNBYTE;
 ACC=ACC&0X0F;
 status=ACC;
 flag=1;
 EA=1;
}

void WarnDeal(void)
{
 if(status<8)
 {
   WritCommand(0x01);
   WritCommand(0x90);
   WritData(0xb2);WritData(0xdc);         //显示抢劫
   WritData(0xd7);WritData(0xb3);
   WritData(0x20);WritData(0x20);
   WritData(0x30);WritData(0x30);
   WritData(0x37);WritData(0x20);
   WritData(0xc7);WritData(0xc0);
   WritData(0xbd);WritData(0xd9);
   WritCommand(0x80);
   flag=0;
   }
   if(status==10)
   {
    WritCommand(0x01);
    WritCommand(0x90);
    WritData(0xd5);WritData(0xc5);           //显示火警
    WritData(0xd0);WritData(0xc7);
    WritData(0x20);WritData(0x20);
    WritData(0x30);WritData(0x30);
    WritData(0x38);WritData(0x20);
    WritData(0xbb);WritData(0xf0);
    WritData(0xbe);WritData(0xaf);
    WritCommand(0x80);
    flag=0;
    }
  }

 // ///////// //////////////////////////串口中断程序
void sever_es() interrupt 4 using 2
{
 EA=0;
 TMOD=0x20;
 TL1=0xe8;
 TH1=0xe8;
 ET1=0;
 TR1=1;
 SCON=0X40;
 REN=1;
 while(1){if(RI==1) break;}
 status=SBUF;
 flag1=1;
 EA=1;
}

void WarnTaleSet(void)
{
 while(1)
 {
 WritCommand(0x01);
 WritCommand(0x81);
 WritData(0xb1);WritData(0xa8);WritData(0xbe);WritData(0xaf);   //报警电话设置
 WritData(0xb5);WritData(0xe7);WritData(0xbb);WritData(0xb0);
 WritData(0xc9);WritData(0xe8);WritData(0xd6);WritData(0xc3);
 WritCommand(0x90);
 WritData(0xa2);WritData(0xb1);WritData(0xc9);WritData(0xe8);    //设置报警电话
 WritData(0xd6);WritData(0xc3);WritData(0xb1);WritData(0xa8);
 WritData(0xbe);WritData(0xaf);WritData(0xb5);WritData(0xe7);
 WritData(0xbb);WritData(0xb0);
 WritCommand(0x88);
 WritData(0xa2);WritData(0xb2);WritData(0xc9);WritData(0xe8);    //设置语音芯片
 WritData(0xd6);WritData(0xc3);WritData(0xd3);WritData(0xef);
 WritData(0xd2);WritData(0xfa);WritData(0xd0);WritData(0xbe);
 WritData(0xb6);WritData(0xac);
 WritCommand(0x98);
 WritData(0xa2);WritData(0xb3);WritData(0xb4);WritData(0xe6);     //存储号码查询
 WritData(0xb4);WritData(0xa2);WritData(0xba);WritData(0xc5);
 WritData(0xcc);WritData(0xeb);WritData(0xb2);WritData(0xe9);
 WritData(0xd1);WritData(0xaf);
 if(flag1)
 {
  flag1=0;
  if(status==1)
   {
    WarnTelephone();
   }
  if(status==2)
   {
 //   ChipSet();
   }
   if(status==3)
    {
  //   CheckNum();
    }
   if(status==0x0f)
    {
     break;
    }
  }
  Delay_ms(100);
 }
}
void WarnTelephone(void)
{
 while(1)
 {
 WritCommand(0x01);
 WritCommand(0x90);
 WritData(0xa2);WritData(0xb1);WritData(0xc9);WritData(0xe8);      //1.设置火警电话
 WritData(0xd6);WritData(0xc3);WritData(0xbb);WritData(0xf0);
 WritData(0xbe);WritData(0xaf);WritData(0xb5);WritData(0xe7);
 WritData(0xbb);WritData(0xb0);
 WritCommand(0x88);
 WritData(0xa2);WritData(0xb2);WritData(0xc9);WritData(0xe8);     //2.设置盗警电话
 WritData(0xd6);WritData(0xc3);WritData(0xb5);WritData(0xc1);
 WritData(0xbe);WritData(0xaf);WritData(0xb5);WritData(0xe7);
 WritData(0xbb);WritData(0xb0);
 WritCommand(0x98);                                               //3.设备备用
 WritData(0xa2);WritData(0xb3);WritData(0xc9);WritData(0xe8);
 WritData(0xb1);WritData(0xb8);WritData(0xb1);WritData(0xb8);
 WritData(0xd3);WritData(0xc3);

  if(flag1)
  {
   flag1=0;
   if(status==1)
    {
     FireTele();
     WarnTelephone();
    }
   if(status==2)
   {

    StealTele();
    WarnTelephone();
   }
   if(status==3)
   {

    SpareTele();
    WarnTelephone();
   }
   if(status==0x0f) break;

   }
   Delay_ms(100);
  }
}

void FireTele(void)
{
 uchar j;
 while(1)
 {
 WritCommand(0x01);
 WritCommand(0x91);
 WritData(0xc9);WritData(0xe8);WritData(0xd6);WritData(0xc3);         //设置火警电话
 WritData(0xbb);WritData(0xf0);WritData(0xbe);WritData(0xaf);
 WritData(0xba);WritData(0xc5);WritData(0xc2);WritData(0xeb);

  if(flag1==1)
   {
    flag1=0;
    j=status;
    if(status==0x0f)
    {
     break;
    }
    else
    {
     WritData(0xa3);
     WritData(0xb0+j);         //显示下个数
    }
   }
   Delay_ms(100);
  }
}
void StealTele(void)
{

}
void SpareTele(void)
{

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -