C51 COMPILER V9.54 MAIN 02/17/2022 16:53:45 PAGE 1 C51 COMPILER V9.54, COMPILATION OF MODULE MAIN OBJECT MODULE PLACED IN .\Objects\main.obj COMPILER INVOKED BY: C:\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 "dht11.h" 3 #include "string.h" 4 #include "stdio.h" 5 #define uint unsigned int 6 #define uchar unsigned char 7 8 typedef unsigned char uint8_t; 9 typedef unsigned short int uint16_t; 10 typedef unsigned int uint32_t; 11 12 typedef uint32_t u32; 13 typedef uint16_t u16; 14 typedef uint8_t u8; 15 /* 16 2���ܹ����������ʪ�ȣ�ʵʱ��ʾ��LCD1602Һ�����ϡ� 17 3���ܹ�����������ֵ����������������ˮ�������� 18 4������̫���ܹ�����ܻ����� 19 5�����ü̵�������DZˮ�á� 20 6����������ģ��ʵ��Զ�̿��ơ� 21 7���Զ��Ͷ��ֽ�ˮ�л��� 22 8�����ݲ�ͬ�������ͻ������ܹ������ĵ�����ˮҪ�� 23 24 ����ʪ�ȴ���������������ĺ�ˮ�����������źŴ�����������Ƭ���� 25 ͨ��DS18B20�¶ȴ��������Ļ����¶ȷ�������Ƭ������Ƭ�������Ƚϴ����� 26 �����Ҫ��ˮ������ˮ�õ����ˮ���������Ҫ��Ƭ����������ģʽ�� 27 ϵͳ������Ӧ��ͬ�������ͻ��������趨�� 28 ���Ԥ�ڳɹ���̫���ܹ���ϵͳΪϵͳ���硣 29 ͨ��������ʪ�Ⱥͻ����¶ȵļ��ʵ���Զ������� 30 �õ���˿ʵ�ֶ�ˮλ�ļ�⣬��ˮ��ûˮʱ�� 31 ���źŴ��ݵ���Ƭ������Ƭ��������ʹLED��������Ҫ��ˮ�� 32 33 ��ϵͳ̫���ܹ��硣ͨ��������ʪ�ȵļ��ʵ���Զ������� 34 ��������������ˮ��Ȳ���������������ֹͣ����������ˮ�� 35 ��������ֹͣ��ˮ���¶ȴ��������Ը�֪��Χ�Ļ����¶ȣ� 36 �������ֿ���ʵ��Զ�̲����� 37 ʵ���Զ����ֶ���ˮ�IJ����� 38 ��Ȼ����ͨ������Ҳ����ʵ���Զ����ֶ��IJ����� 39 Һ����ʾ��Ҳ����ʵʱ��ʾ��ǰ���¶Ⱥ�ʪ����Ϣ�� 40 */ 41 42 char SET=0; 43 44 char SdL=60; 45 char SdH=80; 46 47 char SET_Timer=5; 48 49 sbit BG_LED=P2^4; 50 sbit Jsq=P2^3; 51 sbit buzz=P2^3; 52 53 bit Open=0; 54 C51 COMPILER V9.54 MAIN 02/17/2022 16:53:45 PAGE 2 55 char SETLBuff[5];//װ��ʪ������ 56 char SETHBuff[5];//װ���¶��������� 57 char blue_buff[16]={0}; 58 char WdBuff[6];//װ��ʪ������ 59 char SdBuff[6];//װ���¶��������� 60 void sendString(char *p); 61 62 unsigned char temp_val=0,humi_val=70; 63 64 unsigned int set_gz=1000; 65 66 void Get_DHTData(void) 67 { 68 1 if(dht11_value(&temp_val,&humi_val,DHT11_UINT8)==0) 69 1 { 70 2 71 2 SdBuff[0]=humi_val/10+'0'; //��ʪ�ȵ��������ֵ�ʮλ��λ�ֿ� 72 2 SdBuff[1]=humi_val%10+'0'; 73 2 SdBuff[2]='%'; 74 2 75 2 WdBuff[0]=temp_val/10+'0'; //��wen�ȵ��������ֵ�ʮλ��λ�ֿ� 76 2 WdBuff[1]=temp_val%10+'0'; 77 2 WdBuff[2]=0xdf;WdBuff[3]='C'; 78 2 79 2 sprintf(blue_buff,"X%dH%dD%dZ\r\n",temp_val,humi_val); 80 2 sendString(blue_buff); 81 2 } 82 1 } 83 84 85 void delay_xms(int xms) 86 { 87 1 char ix=0; 88 1 for(;xms>0;xms--) 89 1 for(ix=110;ix>0;ix--); 90 1 } 91 92 93 bit SET_Mode=0; 94 bit CloseIfg=0; 95 unsigned char BjCnt=0; 96 bit TimeOpen=0; //������ʱ�رձ��� 97 98 static unsigned int DsTimer=0; //����ʱ������ 99 void KeyRead(void) 100 { 101 1 static char keyIfg=0; 102 1 unsigned char KeyVal=0; 103 1 KeyVal = P3&0xF8; //��ȡ����ֵ 104 1 if(KeyVal!=0xF8)//�а��������� 105 1 { 106 2 if(keyIfg==0) 107 2 { 108 3 keyIfg=1; 109 3 switch(KeyVal) //�жϼ�ֵ 110 3 { 111 4 case 0xF0: 112 4 SET_Mode=~SET_Mode; 113 4 CloseIfg=0; 114 4 SET=0; 115 4 break; 116 4 C51 COMPILER V9.54 MAIN 02/17/2022 16:53:45 PAGE 3 117 4 case 0xE8: 118 4 if(SET_Mode==0) 119 4 { 120 5 if(++SET>3)SET=0; 121 5 } 122 4 break; 123 4 124 4 case 0xD8: 125 4 if(SET_Mode==0) 126 4 { 127 5 if(SET==1) 128 5 { 129 6 if(++SdL>92)SdL=0; 130 6 } 131 5 if(SET==2) 132 5 { 133 6 if(++SdH>92)SdH=0; 134 6 } 135 5 if(SET==3) 136 5 { 137 6 if(set_gz<9990) 138 6 { 139 7 set_gz+=100; 140 7 } 141 6 } 142 5 } 143 4 break; 144 4 145 4 case 0xB8: 146 4 if(SET_Mode==0) 147 4 { 148 5 if(SET==1) 149 5 { 150 6 if(--SdL<0)SdL=92; 151 6 } 152 5 if(SET==2) 153 5 { 154 6 if(--SdH<0)SdH=92; 155 6 } 156 5 if(SET==3) 157 5 { 158 6 if(set_gz>100) 159 6 { 160 7 set_gz-=100; 161 7 } 162 6 } 163 5 164 5 } 165 4 166 4 break; 167 4 168 4 case 0x78: //�ֶ����ư��� 169 4 if(SET_Mode) //�ֶ�ģʽ�²����� 170 4 { 171 5 Open^=1; 172 5 173 5 } 174 4 break; 175 4 176 4 177 4 } 178 3 } C51 COMPILER V9.54 MAIN 02/17/2022 16:53:45 PAGE 4 179 2 }else keyIfg=0; 180 1 181 1 182 1 } 183 184 185 void Time0Init(void) //40����@11.0592MHz 186 { 187 1 188 1 TMOD &= 0xF0; //���ö�ʱ��ģʽ 189 1 TMOD |= 0x01; //���ö�ʱ��ģʽ 190 1 TL0 = 0x00; //���ö�ʱ��ֵ 191 1 TH0 = 0x70; //���ö�ʱ��ֵ 192 1 TF0 = 0; //���TF1��־ 193 1 TR0 = 1; //��ʱ��1��ʼ��ʱ 194 1 ET0=1; 195 1 EA=1; 196 1 } 197 198 199 uchar getTime=0; 200 void ISR_T0()interrupt 1 201 { 202 1 203 1 TL0 = 0x00; //���ö�ʱ��ֵ 204 1 TH0 = 0x70; //���ö�ʱ��ֵ 205 1 getTime++; 206 1 KeyRead(); 207 1 if(Open) 208 1 { 209 2 Jsq=0; 210 2 }else 211 1 { 212 2 Jsq=1; 213 2 } 214 1 215 1 // if(SET_Mode==1&&Open)//��ʱģʽ 216 1 // { 217 1 // if(SET_Timer>0) //��ʱģʽ�ݼ� 218 1 // { 219 1 // if(++DsTimer>25)//1Sʱ�䵽 220 1 // { 221 1 // DsTimer=0; 222 1 // SET_Timer--; 223 1 // } 224 1 // }else 225 1 // { 226 1 // Open=0; 227 1 // } 228 1 // } 229 1 230 1 } 231 232 void UartInit(void) //9600bps@11.0592MHz 233 { 234 1 PCON &= 0x7F; //�����ʲ����� 235 1 SCON = 0x50; //8λ����,�ɱ䲨���� 236 1 TMOD &= 0x0F; //�����ʱ��1ģʽλ 237 1 TMOD |= 0x20; //�趨��ʱ��1Ϊ8λ�Զ���װ��ʽ 238 1 TL1 = 0xFD; //�趨��ʱ��ֵ 239 1 TH1 = 0xFD; //�趨��ʱ����װֵ 240 1 ET1 = 0; //��ֹ��ʱ��1�ж� C51 COMPILER V9.54 MAIN 02/17/2022 16:53:45 PAGE 5 241 1 TR1 = 1; //������ʱ��1 242 1 EA=1; 243 1 ES=1; 244 1 } 245 246 247 void sendData(char *p,unsigned char n) 248 { 249 1 if( p == 0) return ; 250 1 ES = 0; 251 1 if(n > 0) 252 1 { 253 2 while(n --) 254 2 { 255 3 SBUF = *p++ ; 256 3 while(!TI) ; 257 3 TI = 0 ; 258 3 } 259 2 } 260 1 ES = 1; 261 1 } 262 263 264 // �����ڷ����ַ��� 265 void sendString(char *p) 266 { 267 1 if(p == 0) return ; 268 1 sendData(p,strlen(p)); 269 1 } 270 bit SendIfg=0; 271 unsigned char urx_dat=0; 272 273 // �����жϺ��� 274 void usart() interrupt 4 275 { 276 1 if(RI == 1) 277 1 { 278 2 279 2 urx_dat = SBUF; 280 2 switch(urx_dat) 281 2 { 282 3 case '@': 283 3 SET_Mode=0; 284 3 break; 285 3 286 3 case '$': 287 3 SET_Mode=1; 288 3 break; 289 3 290 3 case '&': 291 3 if(SET_Mode)Open=1; 292 3 break; 293 3 294 3 case '*': 295 3 if(SET_Mode)Open=0; 296 3 break; 297 3 } 298 2 } 299 1 RI = 0; 300 1 TI = 0; 301 1 } 302 C51 COMPILER V9.54 MAIN 02/17/2022 16:53:45 PAGE 6 303 304 uint gz_val=0; 305 306 void main(void) 307 { 308 1 309 1 Time0Init(); 310 1 lcd1602_init(); 311 1 WriteLcd1602_String(0,0," Welcome to use"); 312 1 delay_xms(1000); 313 1 Write_1602_com(0x01);//����ʾ 314 1 delay_xms(100); 315 1 Get_DHTData(); 316 1 delay_xms(50); 317 1 BG_LED=1; 318 1 UartInit(); 319 1 while(1) 320 1 { 321 2 322 2 if(++getTime>20) 323 2 { 324 3 getTime=0; 325 3 Get_DHTData(); 326 3 // gz_val = BH1750_temp(); 327 3 // if(gz_val>9999)gz_val=9999;//�������ֵ 328 3 329 3 if(SET_Mode==0) //�Զ�ģʽ���� 330 3 { 331 4 if(!CloseIfg) 332 4 { 333 5 CloseIfg=1; 334 5 Write_1602_com(0x01);//����ʾ 335 5 delay_1ms(10); 336 5 } 337 4 if(SET==0)//����ģʽ 338 4 { 339 5 WriteLcd1602_String(0,0,"Temp:"); 340 5 WriteLcd1602_String(5,0,WdBuff); 341 5 342 5 WriteLcd1602_String(0,1,"Humi:"); 343 5 WriteLcd1602_String(5,1,SdBuff); 344 5 345 5 WriteLcd1602_String(15,1,"A"); 346 5 347 5 if(humi_val<SdL)//С�������� 348 5 { 349 6 Open=1; 350 6 buzz=0; 351 6 }else if(humi_val>SdL&&humi_val<SdH)//���������� 352 5 { 353 6 Open=1; 354 6 buzz=1; 355 6 }else if(humi_val>SdH) 356 5 { 357 6 Open=0;//�ر� 358 6 buzz=1; 359 6 } 360 5 361 5 }else //����ģʽ 362 4 { 363 5 SETLBuff[0]=SdL/10+'0'; 364 5 SETLBuff[1]=SdL%10+'0'; C51 COMPILER V9.54 MAIN 02/17/2022 16:53:45 PAGE 7 365 5 SETLBuff[2]='%'; 366 5 SETLBuff[3]=' '; 367 5 SETHBuff[0]=SdH/10+'0'; 368 5 SETHBuff[1]=SdH%10+'0'; 369 5 SETHBuff[2]='%'; 370 5 SETHBuff[3]=' '; 371 5 WriteLcd1602_String(9,0,"L:"); 372 5 WriteLcd1602_String(11,0,SETLBuff); 373 5 374 5 WriteLcd1602_String(9,1,"H:"); 375 5 WriteLcd1602_String(11,1,SETHBuff); 376 5 377 5 } 378 4 379 4 } 380 3 if(SET_Mode==1) //�ֶ�����ģʽ 381 3 { 382 4 383 4 if(!CloseIfg) 384 4 { 385 5 CloseIfg=1; 386 5 Write_1602_com(0x01);//����ʾ 387 5 delay_1ms(10); 388 5 } 389 4 if(SET==0) 390 4 { 391 5 // WriteLcd1602_String(0,0,"T:"); 392 5 // WriteLcd1602_String(2,0,WdBuff); 393 5 // 394 5 // WriteLcd1602_String(9,0,"R:"); 395 5 // WriteLcd1602_String(11,0,SdBuff); 396 5 // WriteLcd1602_String(0,1,"light:"); 397 5 // WriteLcd1602_String(6,1,GZ_Buff); 398 5 // 399 5 // WriteLcd1602_String(15,1,"B"); 400 5 WriteLcd1602_String(0,0,"Temp:"); 401 5 WriteLcd1602_String(5,0,WdBuff); 402 5 403 5 WriteLcd1602_String(0,1,"Humi:"); 404 5 WriteLcd1602_String(5,1,SdBuff); 405 5 406 5 WriteLcd1602_String(15,1,"M"); 407 5 } 408 4 409 4 } 410 3 411 3 412 3 } 413 2 414 2 415 2 } 416 1 417 1 } MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 1063 ---- CONSTANT SIZE = 51 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 54 6 IDATA SIZE = ---- ---- C51 COMPILER V9.54 MAIN 02/17/2022 16:53:45 PAGE 8 BIT SIZE = 5 ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)