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

📄 cortrol.lst

📁 在外部环境中检测亮度
💻 LST
📖 第 1 页 / 共 4 页
字号:
 488   2               B[3]=22;
 489   2          }
 490   1       else if(display_set_data<10000)
 491   1          {B[0]=display_set_data%10;
 492   2           B[1]=(display_set_data/10)%10;
 493   2           B[2]=(display_set_data/100)%10;
 494   2           B[3]=display_set_data/1000;
 495   2          }
 496   1       if(dis_set_flag==DC)
 497   1          {B[0]=23;
 498   2           B[1]=22;
 499   2               B[2]=22;
 500   2               B[3]=22;
 501   2               B[4]=17;
 502   2              }
 503   1      
 504   1       for(i=0;i<5;i++)
 505   1       {dp_data=DD[B[i]];
 506   2        for(j=8;j>0;j--)
 507   2           {  CLK=0;
 508   3                  if(dp_data&0x80)
 509   3                     Y=1;
 510   3                      else Y=0;
 511   3                     DATA0=Y;
 512   3                     CLK=1;
 513   3                         dp_data=dp_data<<1;
 514   3           
 515   3            }  
 516   2              
 517   2        }
 518   1         STB=0;
 519   1         STB=1;
 520   1         delay(2);
 521   1         STB=0;
 522   1       
 523   1      }
 524          /******************************************定时器0中断************************
 525          ***函数名称:   time0()                         ****
 526          ***函数功能:  定时检测温度,湿度,亮度并显示   ****
 527          *****************************************************************************/
 528          void time0() interrupt 1
 529          {
 530   1        uchar key[4]; 
 531   1        TH0 = 0xa5;                                                                           // 每秒中断100次   
 532   1        TL0 = 0x00;                                                                           // 中断周期: 10mS    
 533   1        
 534   1        Key_scan();
 535   1        if(KeyNumber!=0xff)
 536   1          {
 537   2        //   kb_data=KeyNumber;
 538   2               key[kf++]=KeyNumber;
 539   2           if(kf>3)
C51 COMPILER V7.20   CORTROL                                                               08/25/2008 11:28:19 PAGE 10  

 540   2             kf=0;
 541   2           time_count=1;
 542   2           KeyNumber=0xff;
 543   2      
 544   2           }
 545   1        else
 546   1          { if(time_count==1)
 547   2                      {kb_data=key[0];
 548   3                       keyboard_flag=0;
 549   3                       kf=0;
 550   3                      }
 551   2            time_count=0;
 552   2           }              
 553   1      // if(keyflag==0)
 554   1       // {
 555   1         if(f1==200)
 556   1          {TH_F0=1;
 557   2           f3=0;
 558   2               TH_F2=0;
 559   2           f2++;
 560   2           keyflag=0;
 561   2               }
 562   1         if(f2==200)
 563   1          {TH_F1=1;
 564   2           TH_F0=0;
 565   2               f1=0;
 566   2           f3++;
 567   2               }
 568   1         if(f3==200)
 569   1         {TH_F2=1;
 570   2              f2=0;
 571   2              TH_F1=0;
 572   2          f1++;
 573   2          if(keyflag==1)
 574   2              TH_F2=0; 
 575   2              }
 576   1         // }
 577   1      // time_count++;
 578   1      //  LED=1; 
 579   1         if(serial_count>6)
 580   1           {
 581   2              RT_Flag=1;
 582   2           } 
 583   1        }
 584          /*****************************************************************************
 585          /********************************键盘扫描中断程序****************************
 586          ***函数名称:  Key_scan() 
 587          ***函数功能:  键盘扫描               
 588          ******************************************************************************/  
 589          /*void INTT1()interrupt 2
 590           {
 591           
 592               EX1=0;
 593          
 594              // Key_scan();
 595                  // keyflag=0;
 596                  // keyboard_flag=0;
 597               
 598               EX1=1;
 599            
 600           }     */
 601          //*****************************键盘扫描函数*********************************************************
C51 COMPILER V7.20   CORTROL                                                               08/25/2008 11:28:19 PAGE 11  

 602          //*******函数名称:Key_scan                   *********
 603          //*******函数功能:扫描键盘,并取得键值       *********
 604          //*******修改参数:KeyNumber                  *********
 605          //**************************************************************************************************
 606          void Key_scan()
 607          {
 608   1        uchar i,j,pin1;
 609   1         for(i=0;i<4;i++)
 610   1          {for(j=0;j<4;j++)
 611   2                 {P2=0XFF&(~(0X01<<(3-i)));
 612   3                  pin1=P2;
 613   3              //      delay1(10);
 614   3                      if(((pin1>>(4+j))&0x01)==0)
 615   3                {KeyNumber=i+j*4;
 616   4                        
 617   4                         }
 618   3              }
 619   2               }     
 620   1       //   P2=0XF0;
 621   1      //      LED=0;
 622   1      
 623   1      }
 624          //**************************************************************************************************** 
 625          //******************************************按键查询处理函数  ****************************************
 626          //*******函数名称:key_deal                                              ******************               
             -                           
 627          //*******函数功能:查询按键,若是设置温度,湿度键,就调用设置处理函数    ******************
 628          //****************************************************************************************************  
 629          void key_deal(void)
 630          {
 631   1        switch(kb_data)
 632   1        {case  3:  keycost_deal(TEMP);
 633   2               
 634   2                    break;
 635   2         case  7:  keycost_deal(HUMI);
 636   2                    break;
 637   2         default:   break;
 638   2      
 639   2            
 640   2        }
 641   1       
 642   1      }
 643          //===================================================================================================
 644          //==========================================按键处理函数=============================================
 645          //********函数名称:keycost_deal                                 ******
 646          //********函数功能:设置温湿度控制参数值,处理,显示             ******
 647          //********入口参数:TEMP,HUMI,温湿度标志                         ******
 648          //********出口参数:无                                           ******
 649          //********修改参数: L_Temp_set, H_Temp_set,L_Hum_set,H_Hum_set ******
 650          //===================================================================================================
 651          void keycost_deal(unsigned char TH_flag)
 652           { unsigned char KD1=0,KD2=0,KD3=0,keydata=0xff;
 653   1         uchar i;
 654   1         char DDC;
 655   1         keyflag=1;
 656   1         for(i=0;i<2;i++)
 657   1         { if(TH_flag==HUMI)
 658   2            i=1;
 659   2               DDC=1;
 660   2           Display_set(0,i); 
 661   2           keyboard_flag=1;
 662   2           while(keyboard_flag==1);
C51 COMPILER V7.20   CORTROL                                                               08/25/2008 11:28:19 PAGE 12  

 663   2               keydata=key_switch(kb_data); 
 664   2           if(kb_data==0x0D)                                        //按下“-”号
 665   2                {DDC=DDC*(-1);
 666   3                         Display_set(0,DC);
 667   3                         keyboard_flag=1;
 668   3                       //  KeyNumber=0xff;
 669   3                         }
 670   2               else if(kb_data==0x0E)                                   //按下"返回"键
 671   2                     return;
 672   2      //=======================第一次数字键============================================       
 673   2           while(keyboard_flag==1);
 674   2               keydata=key_switch(kb_data); 
 675   2               if(keydata>=0&&keydata<=9)                     
 676   2                    {KD1=keydata;
 677   3                         Display_set((keydata*DDC),i);
 678   3               
 679   3                }
 680   2           else if(keydata==0x0E)                                   //按下"返回"键
 681   2                return;
 682   2               else 
 683   2                    {error_bell();                                      //蜂鸣器报错误信号
 684   3                         return;
 685   3                         }
 686   2      //=======================第二次数字键============================================
 687   2               keyboard_flag=1;
 688   2           while(keyboard_flag==1);
 689   2               keydata=key_switch(kb_data); 
 690   2               
 691   2           if(keydata>=0&&keydata<=9)
 692   2                       {
 693   3                              Display_set(((KD1*10+keydata)*DDC),i);
 694   3                              // F++;
 695   3                              KD2=keydata;
 696   3                      //      KeyNumber=0xff;
 697   3                       
 698   3                        }
 699   2               else if(kb_data==0x0F)                                //有“个”位时按下"确定"键
 700   2                {if(i==0)
 701   3                           {if(TH_flag==TEMP)
 702   4                                  { L_Temp_set=KD1*DDC;
 703   5                                        keydata=0xff;
 704   5                      // KeyNumber=0xff;
 705   5                       continue;
 706   5                                       }
 707   4                      
 708   4                                }
 709   3                              else if(i==1)
 710   3                           {if(TH_flag==TEMP)
 711   4                                  { H_Temp_set=KD1*DDC;
 712   5                        return;
 713   5                                       }
 714   4                                if(TH_flag==HUMI)
 715   4                                  {  H_Hum_set=KD1*DDC;
 716   5                        return;
 717   5                                       }
 718   4                                }
 719   3                              }
 720   2                 else if(kb_data==0x0E)                              //按下"返回"键
 721   2                return;
 722   2                 else 
 723   2                    {error_bell();                                   //蜂鸣器报错误信号
 724   3                         return;
C51 COMPILER V7.20   CORTROL                                                               08/25/2008 11:28:19 PAGE 13  

 725   3                         }
 726   2      //=======================第三次数字键============================================                  
 727   2                 keyboard_flag=1;
 728   2             while(keyboard_flag==1);
 729   2             keydata=key_switch(kb_data);  
 730   2             
 731   2                  if(kb_data==0x0F)                                  //有“十”位数据时按下"确定"键
 732   2                {
 733   3                      if(i==0)
 734   3                           {
 735   4                                      if(TH_flag==TEMP)
 736   4                                      { 
 737   5                                              L_Temp_set=(KD1*10+KD2)*DDC;
 738   5                                              keydata=0xff;
 739   5                                  //  KeyNumber=0xff;
 740   5                                              continue;

⌨️ 快捷键说明

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