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

📄 lcm16864zk.c

📁 一个基于51单片机的报警系统。包含有电路图
💻 C
📖 第 1 页 / 共 4 页
字号:

            while(1)
            {
            if(LKEY==1) break;
            }
            break;
          }
        }
      if(RKEY==0)                      //继续输入下一个向量的设定
              {
                Delay_ms(10);          //延时去抖动
                if(RKEY==0)
                {
             RobSetNext();
                 }
               }
        ShowTime();
        Delay_ms(10);
     }
 }


////}////////////////////////////////////////////防盗设置

void StealSet(void)
{
 uchar j;
// uchar CodeN[2];
 WritCommand(0x01);                     //清零
 WritCommand(0x0c);
 WritCommand(0x92);
 WritData(0xb7);WritData(0xc0);WritData(0xb5);WritData(0xc1);   //防盗设置
 WritData(0xc9);WritData(0xe8);WritData(0xd6);WritData(0xc3);

 ShowPart5();         //进入  另选
 while(1)
 {
  if(RKEY==0)
  {
   while(1){if(RKEY==1) break; }

   break;
  }
  if(LKEY==0)
  {
   while(1) {if(LKEY==1)break;}
   RobData=0x00;                   //报警向量设为00
   TeleAlarm();             //电话报警:Y
   WhistleAlarm();          //鸣警笛:Y
   AlarmRelay();            //报警接力:Y
   BlankLocal();            //封锁现场:Y
   EjectFog();              //喷射眠雾:Y
   pdx=0x0201;
   *pdx=RobData;
   j=EjectorNum();          //发射器编号设置
   StealSet1(j);
   break;
   }
   Delay_ms(10);
   ShowTime();
  }
 }

void StealSet1(uchar num)
{
 uchar i,j;
 WritCommand(0x0c);                                  //填写  不填  继续
 ShowPart14();
 while(1)
   {
     if(LKEY==0)
       {
        Delay_ms(10);
        if(LKEY==0)
         {
            pdx=0x0200;
            i=*pdx;
            *pdx=i+1;
            pdx=0x0202+i+1;
            *pdx=num;

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

     StealSet();

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


uchar EjectorNum(void)                          //返回编号的值
{
 uchar k=0,j=0;
 uchar CodeN[2]={0,0};;
 WritCommand(0x01);
 WritCommand(0x0e);
 ShowPart2();                                   //发射器编号:00
 ShowPart1();
 while(k<2)
     {

     if(LKEY==0)
       {
        Delay_ms(10);
        if(LKEY==0)
         {
          CodeN[k]=j;
            while(1)
            {
            if(LKEY==1) break;
            }
            k++;
          }
        }
     if(MKEY==0)
              {
                 Delay_ms(5);
                 if(MKEY==0)
                  {
                    j++;
                    if(j>9) j=0;
                    WritData(0xa3);
                    WritData(0xb0+j);         //显示下个数
                    WritCommand(0x10);
                    while(1)
                    {
                    if(MKEY==1) break;
                    }
                  }
                }
      if(RKEY==0)
              {
                Delay_ms(10);          //延时去抖动
                if(RKEY==0)
                {
                    CodeN[k]=j;
                    WritCommand(0x14);
                    k++;
                    if(k>=2)
                    {k=0;WritCommand(0x96);}
                    WritData(0xa3);
                    WritData(0xb0);
                    WritCommand(0x10);
                    j=0;
                    while(1)
                     {
                      if(RKEY==1) break;
                     }
                  }
                 }
        ShowTime();
        WritCommand(0x96+k);
        Delay_ms(10);
     }
   k=CodeN[0]*16+CodeN[1];
   k=0x20+k;
   return k;
}

 //////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////放火设置
void FireSet(void)
{
// uchar j;

 WritCommand(0x01);                     //清零
 WritCommand(0x0c);
 WritCommand(0x92);
 WritData(0xb7);WritData(0xc0);WritData(0xbB);WritData(0xF0);   //防火设置
 WritData(0xc9);WritData(0xe8);WritData(0xd6);WritData(0xc3);
  ShowPart5();
 while(1)
 {
  if(RKEY==0)
  {
   while(1){if(RKEY==1) break; }
  // CalenSet();
   break;
  }
  if(LKEY==0)
  {
   while(1) {if(LKEY==1)break;}
   RobData=0x00;                    //报警向量初始化为00
   WritCommand(0x0e);
   TeleAlarm();                     //电话报警:Y
   WhistleAlarm();                  //鸣警笛:Y
   AlarmRelay();                    //报警接力:Y
   EjectWater();                    //喷洒水:Y
   EjectSand();                     //自动喷沙:Y
   pdx=0x0301;
   *pdx=RobData;
 //  j=EjectorNum();
   FireSet1();
   break;
   }
   Delay_ms(10);
   ShowTime();
  }
}

void EjectWater(void)
{
 bit i=1;
 WritCommand(0x01);
 ShowPart15();                                          //自动喷水:Y
 ShowPart4();
 while(1)
 {
  if(LKEY==0)
  {
   Delay_ms(10);
   if(LKEY==0)
   {
    while(1)
    {if(LKEY==1) break;}
    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 i,j;
 j=EjectorNum();
 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=j;
            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;
                pdx=0x0302+i+1;
                *pdx=j;
                FireSet1();
                }
              }
        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)
    {                                      //00~99循环显示
     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)                              //1~12数字循环显示
      {
       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)                                 //1~31循环显示
    {
     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;}

⌨️ 快捷键说明

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