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

📄 main.lst

📁 这是一个红外报警系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 228   1         display(0xc0,count,7);   //第二行
 229   1      //   Print_Number(0xc7,12);
 230   1      
 231   1         while(1)
 232   1         {
 233   2            //Printf_Number(0xc8,Alarm_Number);
 234   2          
 235   2             Key_Scan();
 236   2      
 237   2                 if(Alarm_bit==1)
 238   2                   {
 239   3                         delay_count++;
 240   3                         delay_ms(10);             //延迟10MS
 241   3                         if(delay_count>100)   //当延迟100次10毫秒=1S 
C51 COMPILER V7.50   MAIN                                                                  12/11/2007 16:22:43 PAGE 5   

 242   3                           {
 243   4                                  delay_count=0;
 244   4                                      Relay_Control=~Relay_Control; //开灯 或 关灯       ---------达到让报警时灯闪烁的效果
 245   4                               }
 246   3                       }
 247   2      
 248   2              
 249   2      
 250   2                switch(Style_bit)
 251   2                      {
 252   3                           case 0:  if(Alarm_bit==0)                   //光栅模式
 253   3                                          {
 254   4                                           Test(); 
 255   4                                           if(Count_number>Alarm_Number)      //当超过设定的门限值,就报警
 256   4                                                {
 257   5                                                              Count_number=0;
 258   5                                                              Alarm_OPEN();   
 259   5                                                              Alarm_bit=1;                                    
 260   5                                                        }
 261   4                              }                                               
 262   3      
 263   3                                          break;      
 264   3                               case 1:        if(human==1&&Alarm_bit==0)               //人体识别模式
 265   3                                                       {
 266   4                                                         if(Red_recognize_bit1==1)    //每一个跳变数一次,为了防止一次多数问题
 267   4                                                          { 
 268   5                                                                Red_recognize_bit1=0;
 269   5                                                                LED_Green=1;
 270   5                                                                Count_number++;
 271   5                                                                display(0xc7,Clear9,7); //清屏
 272   5                                                                display(0xc0,count,7);
 273   5                                                                Printf_Number(0xc8,Count_number);
 274   5                                                                Red_recognize_bit1=0;                 
 275   5                                                                if(Count_number>Alarm_Number)          //当超过设定的门限值,就报警
 276   5                                                                 {
 277   6                                                                         Count_number=0;
 278   6                                                                         Alarm_OPEN();        
 279   6                                                                         Alarm_bit=1;
 280   6                                                                 }
 281   5                                                               }
 282   4      
 283   4                                      
 284   4                                                               
 285   4                                           
 286   4                                         }
 287   3                                                       else
 288   3                                                        {
 289   4                                                          LED_Green=0;
 290   4                                                              Red_recognize_bit1=1;
 291   4                                                        }
 292   3                                                  
 293   3                                          break;      
 294   3                               default:break;
 295   3                                              
 296   3                      }                                          
 297   2           
 298   2               
 299   2         }
 300   1        
 301   1      }
 302          
 303            
C51 COMPILER V7.50   MAIN                                                                  12/11/2007 16:22:43 PAGE 6   

 304          //------------------------------------------
 305          //按键扫描子程序
 306          //------------------------------------------
 307          void Key_Scan(void)
 308          {
 309   1          unsigned char temp;
 310   1              
 311   1          P2_0=1;
 312   1              P2_1=1;
 313   1              P2_2=1;
 314   1              P2_3=1;
 315   1              temp=P2;
 316   1              temp=temp&0x0f;
 317   1          if(temp!=0x0f)              //改变
 318   1                {
 319   2                  P2|=0x0f;
 320   2                      delay_ms(10);
 321   2      
 322   2              
 323   2                  temp=P2;
 324   2                  temp=temp&0x0F;
 325   2                      if(temp!=0x0F)
 326   2                        {
 327   3                            switch(temp)
 328   3                                {
 329   4                                   case 0x0E:  Style_bit++;
 330   4                                                   if(Style_bit==2)Style_bit=0;
 331   4                                                                 switch(Style_bit)     //做界面
 332   4                                                                      {
 333   5                                                               case 0: Count_number=0;
 334   5                                                                               display(0x87,Clear9,9);        //清屏
 335   5                                                                                       display(0xc0,Clear16,16);      //清屏
 336   5                                                                                       display(0xc0,count,7);   // 
 337   5                                                                               display(0x88,raster,6);break;   //光栅模式
 338   5      
 339   5                                                                       case 1:  Count_number=0;
 340   5                                                                               display(0x87,Clear9,9); //清屏
 341   5                                                                               display(0xc0,Clear16,16);      //清屏
 342   5                                                                                       display(0xc0,count,7);   // 
 343   5                                                                                       display(0x88,identify,8); break;        //人体识别模式
 344   5      
 345   5                                                                       default:break;
 346   5                                                                      }                               
 347   4                                                                 
 348   4                                                                        break;           //改变类型    Test_bit=-Test_bit     调试模式
 349   4                                       case 0x0D:  Alarm_bit=~Alarm_bit;
 350   4                                                   if(Alarm_bit==1)
 351   4                                                                 {
 352   5                                                                   Alarm_OPEN();
 353   5                                                                 }
 354   4                                                                 else
 355   4                                                                 {
 356   5                                                                   Alarm_CLOSE();
 357   5                                                                       display(0xc0,Clear16,16);      //清屏
 358   5                                                                       display(0xc0,count,7);   //第二行
 359   5                                                                 }
 360   4                                                   break;        //强制开报警   1101
 361   4                                       case 0x0B:  Count_number=0;
 362   4                                                              Alarm_Number++;
 363   4                                                              display(0xc0,change,9); 
 364   4                                                              display(0xca,Clear9,5); //清屏 
 365   4                                                              Printf_Number(0xca,Alarm_Number); break;           //加加                 1011
C51 COMPILER V7.50   MAIN                                                                  12/11/2007 16:22:43 PAGE 7   

 366   4                                       case 0x07:      Count_number=0;
 367   4                                                   Alarm_Number--;
 368   4                                                   display(0xc0,change,9);
 369   4                                                               display(0xca,Clear9,5); //清屏
 370   4                                                   Printf_Number(0xca,Alarm_Number); break;      //减减               // 0111
 371   4                                       default:break;
 372   4                                }
 373   3      
 374   3                                while(temp!=0x0f)
 375   3                                {
 376   4                                  P2|=0x0f;
 377   4                      
 378   4                              temp=P2;
 379   4                              temp=temp&0x0f;
 380   4                                }
 381   3                           
 382   3                        }
 383   2                }
 384   1       
 385   1      }
 386          
 387          
 388          //开关警报
 389          void Alarm_OPEN(void)
 390          {
 391   1       
 392   1         Alarm_sound=0;   //开蜂鸣器
 393   1         Relay_Control=0; //开灯
 394   1         
 395   1         display(0xc0,Warning,16);
 396   1      }
 397          
 398          void Alarm_CLOSE(void)
 399          {
 400   1         Alarm_sound=1;   //关蜂鸣器
 401   1         Relay_Control=1; //关灯
 402   1         display(0xc0,count,7);
 403   1         Alarm_bit=0; //关了报警的标志
 404   1         Count_number=0;
 405   1      }
 406          
 407          
 408          void Test(void)
 409          {
 410   1      
 411   1             P3_2=1;
 412   1                 delay_ms(30);
 413   1                  
 414   1                 
 415   1                 if(((Red_LED1==0)&&(Red_LED2==0))||((Red_LED2==0)&&(Red_LED3==0))||((Red_LED1==0)&&(Red_LED3==0)))
 416   1                 {
 417   2                         LED_Test=1;
 418   2                         Red_recognize_bit1=1;   
 419   2                 }
 420   1          
 421   1                 else 
 422   1                 {
 423   2                  LED_Test=0;
 424   2                      if(Red_recognize_bit1==1)
 425   2                        {
 426   3                                      Count_number++;  
 427   3                                      display(0xc7,Clear9,7); //清屏
C51 COMPILER V7.50   MAIN                                                                  12/11/2007 16:22:43 PAGE 8   

 428   3                                      display(0xc0,count,7);
 429   3                                      Printf_Number(0xc8,Count_number);
 430   3                                      Red_recognize_bit1=0;
 431   3                        }
 432   2                      
 433   2                      
 434   2                 }
 435   1                 P3_2=0;
 436   1             delay_ms(30);
 437   1         
 438   1       //      
 439   1             
 440   1      }
 441          
 442          //void Identify_Model(void)
 443          //{
 444            
 445          //}


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    993    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     92      24
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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