C51 COMPILER V9.60.0.0   MAIN                                                              02/21/2022 21:12:48 PAGE 1   


C51 COMPILER V9.60.0.0, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\Objects\main.obj
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE main.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings\main
                    -.lst) TABS(2) OBJECT(.\Objects\main.obj)

line level    source

   1          #include "drive_1602.h"
   2          #include "string.h"
   3          #include "stdio.h"
   4          #include "dht11.h"
   5          
   6          #define uint unsigned int 
   7          #define uchar unsigned char
   8            
   9          /*
  10          ����ʵ���˻���������Ҫ��ʽ����ʪ�ȴ��������Ըв⻷���¶�ʪ�ȣ�
  11          ���Ҳɼ����ź�����Ƭ��������ģ�����Ƭ���ṩ���ܱ�֤ϵͳ�ܹ��������У�
  12          ˮλ�������ܹ����ˮ��ˮλ��֤һ����ˮλ��
  13          ��ʾ��������ʾ��ʪ����Ϣ��ˮλ��Ϣ��
  14          ��������ģ���ܹ����ɼ����źŶ��������ֻ�APP����ʵ��ͼ�λ���ʾ��
  15          ʵ�ֵĹ��ܣ�
  16          1��ͨ�������ܹ���⵽ˮ���ˮλ���¶ȡ�ʪ�ȡ�
  17          2��ͨ��USB +5V ����
  18          3���ܹ�������ֵ�����Ĺ���
  19          4����ֵ���Խ��е��ڡ�
  20          5��ʵ��APP����ʪ����Ϣ��⣬����APP��ͼ�λ�ʵʱ����¶�ʪ�ȱ仯��
  21          */
  22          sbit SW1=P3^7;
  23          sbit SW2=P3^6;
  24          sbit SW3=P3^5;
  25          sbit SW4=P3^4;
  26          
  27          sbit JR_LED=P2^2;
  28          sbit JW_LED=P2^4;
  29          
  30          sbit buzz=P3^3;
  31          
  32          uchar temp,humi;
  33          int sw_val=0;
  34          
  35          void delay_xms(int xms)
  36          {
  37   1          char ix=0;
  38   1          for(;xms>0;xms--)
  39   1           for(ix=110;ix>0;ix--);
  40   1      }
  41          uchar SET=0;
  42          char WdL=10;
  43          char WdH=30;
  44          
  45          char SdL=30;
  46          char SdH=80;
  47          
  48          char SWL=2;
  49          char SWH=6;
  50          
  51          char keyflag=0;
  52          uchar bj_flag=0;
  53          uchar Bj_CNt=0;
  54          uchar JCount=0;
C51 COMPILER V9.60.0.0   MAIN                                                              02/21/2022 21:12:48 PAGE 2   

  55          
  56          uchar clear_flag=0;
  57          
  58          uchar bj_clear=0;
  59          uint clear_cnt=0;
  60          
  61          void KeyRead(void)
  62          {
  63   1          if(!SW1)
  64   1          {
  65   2             if(!SW1&&keyflag==0) 
  66   2             {
  67   3               keyflag=1;
  68   3               if(++SET>6)SET=0;
  69   3               while(!SW1);
  70   3             }
  71   2          }
  72   1          else if(!SW2)
  73   1          {
  74   2             if(!SW2&&keyflag==0) 
  75   2             {
  76   3               keyflag=1;
  77   3               switch(SET)
  78   3               {
  79   4                 case 1:
  80   4                    if(++WdH>50)WdH=0;
  81   4                 break;
  82   4                 
  83   4                 case 2:
  84   4                    if(++WdL>50)WdL=0;
  85   4                 break;
  86   4                 
  87   4                 
  88   4                 case 3:
  89   4                    if(++SdH>90)SdH=0;
  90   4                 break;
  91   4                 
  92   4                 case 4:
  93   4                    if(++SdL>90)SdH=0;
  94   4                 break;
  95   4                 
  96   4                 case 5:
  97   4                    if(++SWH>8)SWH=0;
  98   4                 break;
  99   4                 
 100   4                 case 6:
 101   4                    if(++SWL>8)SWL=0;
 102   4                 break;  
 103   4               }
 104   3               while(!SW2);
 105   3             }
 106   2          }
 107   1          
 108   1          else if(!SW3)
 109   1          {
 110   2             if(!SW3&&keyflag==0) 
 111   2             {
 112   3               keyflag=1;
 113   3               switch(SET)
 114   3               {
 115   4                 case 1:
 116   4                   if(--WdH<0)WdH=50;
C51 COMPILER V9.60.0.0   MAIN                                                              02/21/2022 21:12:48 PAGE 3   

 117   4                 break;
 118   4                 
 119   4                 case 2:
 120   4                   if(--WdL<0)WdL=50;
 121   4                 break;
 122   4                
 123   4                 case 3:
 124   4                   if(--SdH<0)SdH=90;
 125   4                 break;
 126   4                 
 127   4                 case 4:
 128   4                   if(--SdL<0)SdL=90;
 129   4                 break;
 130   4                 
 131   4                 case 5:
 132   4                   if(--SWH<0)SWH=8;
 133   4                 break;
 134   4                 
 135   4                 case 6:
 136   4                   if(--SWL<0)SWL=8;
 137   4                 break;
 138   4                 
 139   4               }
 140   3               while(!SW3);
 141   3             }
 142   2          }
 143   1          else if(!SW4)
 144   1          {
 145   2            if(!SW4&&keyflag==0)  
 146   2             {
 147   3      
 148   3                 bj_clear^=1;
 149   3                
 150   3               
 151   3                while(!SW4);
 152   3             }
 153   2          }
 154   1          else
 155   1          {
 156   2            keyflag=0;
 157   2            clear_cnt=0;
 158   2          }
 159   1      
 160   1      
 161   1      }
 162          
 163          void Timer0Init(void)   //10����@11.0592MHz
 164          {
 165   1        
 166   1        TMOD &= 0xF0;   //���ö�ʱ��ģʽ
 167   1        TMOD |= 0x01;   //���ö�ʱ��ģʽ
 168   1        TL0 = 0x00;   //���ö�ʱ��ֵ
 169   1        TH0 = 0xDC;   //���ö�ʱ��ֵ
 170   1        TF0 = 0;    //���TF0��־
 171   1        ET0=1;
 172   1        TR0 = 1;    //��ʱ��0��ʼ��ʱ
 173   1        EA=1;
 174   1        
 175   1      }
 176          
 177          void TimeISR()interrupt 1
 178          {
C51 COMPILER V9.60.0.0   MAIN                                                              02/21/2022 21:12:48 PAGE 4   

 179   1        TL0 = 0x00;   //���ö�ʱ��ֵ
 180   1        TH0 = 0xDC;   //���ö�ʱ��ֵ
 181   1         KeyRead();
 182   1        if((bj_flag==1)&&(bj_clear==0))
 183   1        {
 184   2           if(++Bj_CNt>30)
 185   2          {
 186   3                Bj_CNt=0;
 187   3                buzz=~buzz; 
 188   3          }
 189   2        }else
 190   1        {
 191   2           buzz=1;  Bj_CNt=0;
 192   2        }
 193   1        JCount++;
 194   1      }
 195          
 196          void UartInit(void)   //9600bps@11.0592MHz
 197          {
 198   1        PCON &= 0x7F;   //�����ʲ�����
 199   1        SCON = 0x50;    //8λ����,�ɱ䲨����
 200   1        TMOD &= 0x0F;   //�����ʱ��1ģʽλ
 201   1        TMOD |= 0x20;   //�趨��ʱ��1Ϊ8λ�Զ���װ��ʽ
 202   1        TL1 = 0xFD;   //�趨��ʱ��ֵ
 203   1        TH1 = 0xFD;   //�趨��ʱ����װֵ
 204   1        ET1 = 0;    //��ֹ��ʱ��1�ж�
 205   1        TR1 = 1;    //������ʱ��1
 206   1        EA=1;
 207   1        ES=0;
 208   1      }
 209          
 210          
 211          void sendData(char *p,unsigned  char n)
 212          {
 213   1        if( p == 0) return ;
 214   1         ES = 0;
 215   1         if(n > 0)
 216   1         {
 217   2           while(n --)
 218   2           {
 219   3             SBUF = *p++ ;
 220   3             while(!TI)  ;
 221   3             TI = 0      ;
 222   3           }
 223   2         }
 224   1        // ES = 1;
 225   1      }
 226          
 227          
 228          
 229          //   �����ڷ����ַ���
 230          void sendString(char *p)
 231          {
 232   1         if(p == 0) return ;
 233   1         sendData(p,strlen(p));
 234   1      }
 235          //  �����жϺ���
 236          void usart() interrupt 4
 237          {
 238   1        if(RI == 1)
 239   1        {  
 240   2          // setUsartRxData(SBUF); 
C51 COMPILER V9.60.0.0   MAIN                                                              02/21/2022 21:12:48 PAGE 5   

 241   2        }      
 242   1        RI = 0;
 243   1        TI = 0;
 244   1      }
 245          
 246          //char xdata showbuff[16]={0};
 247          char data send_buff[17]={0};
 248          
 249          sbit IN_PL = P2^0;  //SHIFT/!LOA����
 250          sbit IN_Data = P2^2; // QH�����������
 251          sbit SCK = P2^1;  //CLOCK����
 252          
 253          unsigned char Read74HC165(void)
 254          {
 255   1         unsigned char indata;
 256   1         unsigned char i;
 257   1         IN_PL = 0;//װ��8λ��������
 258   1         _nop_();
 259   1         IN_PL = 1;//ת��8λ��������Ϊ��������
 260   1         _nop_();
 261   1       
 262   1         indata = 0;
 263   1         for(i = 0; i < 8; i ++) //��8���������ݴ�������indata��
 264   1         {
 265   2          indata = indata << 1;//��ʼʱ��indata����������һλ���Ժ�ÿ��ѭ������һ��
 266   2          SCK = 0;//ʱ�ӵ͵�ƽ�����󣬲������ݿ�ʼת����������
 267   2          _nop_();
 268   2          
 269   2          indata |= IN_Data; //��ת����ɵĴ�������һλλ��������
 270   2          SCK = 1;  //ʱ�ӱ�Ϊ�ߵ�ƽ���ٴα�Ϊ�͵�ƽʱ����ʼ������һλ��������
 271   2         }
 272   1          return indata;
 273   1      }
 274          
 275          
 276          char find_bit(unsigned char dat)
 277          {
 278   1         char i=0;
 279   1         char cnt=0;
 280   1         for(i=0;i<8;i++)
 281   1         {
 282   2            if(!(dat&0x01))
 283   2            {
 284   3              cnt++;
 285   3            }
 286   2            dat>>=1;
 287   2         }
 288   1         return cnt;
 289   1      }
 290          void main()
 291          {
 292   1        lcd1602_init();
 293   1        UartInit();
 294   1        dht11_value(&temp,&humi,DHT11_UINT8);
 295   1        buzz=1;
 296   1        delay_xms(200);
 297   1        dht11_value(&temp,&humi,DHT11_UINT8);
 298   1        Timer0Init();
 299   1        while(1)
 300   1        {
 301   2          
 302   2          if(JCount>50)//500ms�ɼ�һ��
C51 COMPILER V9.60.0.0   MAIN                                                              02/21/2022 21:12:48 PAGE 6   

 303   2          {
 304   3          JCount=0;
 305   3          if(SET==0)
 306   3          { 
 307   4               if(clear_flag==1)
 308   4                {
 309   5                  clear_flag=0;
 310   5                      
 311   5                  Write_1602_com(0x01);//����ʾ 
 312   5                  delay_1ms(100);        
 313   5                }
 314   4                sw_val = find_bit(Read74HC165());
 315   4                dht11_value(&temp,&humi,DHT11_UINT8);
 316   4                L1602_printf(0,0,"temp:%2d",(int)temp);
 317   4                L1602_printf(0,1,"humi:%2d",(int)humi);
 318   4                L1602_printf(12,0,"%s","SW");
 319   4                L1602_printf(12,1,"%2dcm",(int)sw_val);
 320   4                if((temp<WdL||temp>WdH)||(humi<SdL||humi>SdH)||(sw_val<SWL||sw_val>SWH))
 321   4                {
 322   5                   bj_flag=1;
 323   5                }else
 324   4                {
 325   5                  bj_flag=0;
 326   5                }
 327   4                  sprintf(send_buff,"X%dH%dD%dZ\r\n",(int)temp,(int)humi,(int)sw_val);
 328   4                 sendString(send_buff);
 329   4          }
 330   3          else 
 331   3          {
 332   4             if(clear_flag==0)
 333   4             {
 334   5                clear_flag=1;
 335   5                      
 336   5                Write_1602_com(0x01);//����ʾ 
 337   5                delay_1ms(100);        
 338   5             }
 339   4             switch(SET)
 340   4             {
 341   5               case 1:
 342   5               case 2:
 343   5                 WriteLcd1602_String(0,0,"Set temp");
 344   5                 L1602_printf(0,1,"H:%2d  L:%2d",(int)WdH,(int)WdL);
 345   5               break;
 346   5               
 347   5               case 3:
 348   5               case 4:
 349   5                 WriteLcd1602_String(0,0,"Set humi");
 350   5                 L1602_printf(0,1,"H:%2d  L:%2d",(int)SdH,(int)SdL);
 351   5               break;
 352   5               
 353   5               case 5:
 354   5               case 6:
 355   5                 WriteLcd1602_String(0,0,"Set SW  ");
 356   5                 L1602_printf(0,1,"H:%2d  L:%2d",(int)SWH,(int)SWL);
 357   5               break;
 358   5             }
 359   4             
 360   4          }
 361   3        }
 362   2        
 363   2        }
 364   1      
C51 COMPILER V9.60.0.0   MAIN                                                              02/21/2022 21:12:48 PAGE 7   

 365   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1351    ----
   CONSTANT SIZE    =     83    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     36       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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