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

📄 tem2.lst

📁 51单片机实现的温度测量、报警程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 247   3      			lcd_wdat(dis1[i]);
 248   3      			i++;
 249   3      		}
 250   2      		
 251   2      	
 252   2      		lcd_pos(0x42);	
 253   2      		i = 0;	
 254   2      		while(dis2[i] != '\0')
 255   2      		{						// 显示字符"SET"
 256   3      			lcd_wdat(dis2[i]);
 257   3      			i++;
 258   3      		}
 259   2      	
 260   2      		lcd_pos(0x0B);  //显示摄氏度符号
 261   2      		lcd_wdat(0xDF);
 262   2      		lcd_wdat(0x43);
 263   2      
 264   2      		temp=ReadTemperature(); //读取温度值				
 265   2      		lcd_pos(0x07);         //显示温度值
 266   2      		lcd_wdat(dis3[temp/100]);
 267   2      		lcd_wdat(dis3[temp/10%10]);
 268   2      		lcd_wdat(0x2E);
 269   2      		lcd_wdat(dis3[temp%10]);
 270   2      		//比较温度报警
 271   2      		th=ReadTH();
 272   2      		tl=ReadTL(); 
 273   2      		if(temp>th*10)
 274   2      		{
 275   3      			lcd_pos(0x0E);         
 276   3      			lcd_wdat(0x3E);
 277   3      			lcd_wdat(0x48);
 278   3      			BUZZER = 0;
 279   3      		}
 280   2      		else if(temp<tl*10)
 281   2      		{
 282   3      			lcd_pos(0x0E);         
 283   3      			lcd_wdat(0x3C);
 284   3      			lcd_wdat(0x4C);
 285   3      			BUZZER = 0;
 286   3      		}
 287   2      		else
 288   2      		{
 289   3      			lcd_pos(0x0E);         
 290   3      			lcd_wdat(0x20);
 291   3      			lcd_wdat(0x20);
 292   3      			BUZZER = 1;
 293   3      		}
 294   2      
 295   2      		key=Read_keyboard();
 296   2      		if(key==0xEF)     //进入TH TL数值显示模式
 297   2      		{
 298   3      			BUZZER = 1;
 299   3      			while(key != 0x7F)  //如果按ESC则退出
 300   3      			{
 301   4      				key = Read_keyboard();
 302   4      
 303   4      				lcd_pos(0x00);				
C51 COMPILER V6.12  TEM2                                                                   11/30/2008 00:03:30 PAGE 6   

 304   4      				i = 0;
 305   4      				while(dis4[i] != '\0')
 306   4      				{						
 307   5      					lcd_wdat(dis4[i]);
 308   5      					i++;
 309   5      				}
 310   4      
 311   4      				lcd_pos(0x09);				
 312   4      				i = 0;
 313   4      				while(dis8[i] != '\0')
 314   4      				{						
 315   5      					lcd_wdat(dis8[i]);
 316   5      					i++;
 317   5      				}
 318   4      
 319   4      				lcd_pos(0x07);
 320   4      				lcd_wdat(0x20);
 321   4      				lcd_wdat(0x20);
 322   4      				
 323   4      				lcd_pos(0x05);  //显示摄氏度符号
 324   4      				lcd_wdat(0xDF);
 325   4      				lcd_wdat(0x43);
 326   4      				lcd_pos(0x0E);  //显示摄氏度符号
 327   4      				lcd_wdat(0xDF);
 328   4      				lcd_wdat(0x43);
 329   4      				lcd_pos(0x03);   //显示TH
 330   4      				lcd_wdat(dis3[th/10%10]);
 331   4      				lcd_wdat(dis3[th%10]);
 332   4      				lcd_pos(0x0C);   //显示TL
 333   4      				lcd_wdat(dis3[tl/10%10]);
 334   4      				lcd_wdat(dis3[tl%10]);
 335   4      				lcd_pos(0x40);
 336   4      				
 337   4      				i = 0;
 338   4      				while(dis5[i] != '\0')
 339   4      				{						
 340   5      					lcd_wdat(dis5[i]);
 341   5      					i++;
 342   5      				}
 343   4      			
 344   4      
 345   4      				if(key == 0xDF)    //进入TH设置模式
 346   4      				{
 347   5      					lcd_pos(0x00);
 348   5      					for(i=0;i<16;i++)
 349   5      					lcd_wdat(0x20);
 350   5      					lcd_pos(0x40);
 351   5      					for(i=0;i<16;i++)
 352   5      					lcd_wdat(0x20);
 353   5      					while(key != 0x7F)
 354   5      					{
 355   6      						key = Read_keyboard();
 356   6      						if(key == 0xCF)
 357   6      						{
 358   7      							th=th+0x01;
 359   7      							delayms(100);
 360   7      							//把TH值写入EEPROM
 361   7      							Init_DS18B20();
 362   7      							WriteOneChar(0xCC); // 跳过读序号列号的操作
 363   7      							WriteOneChar(0x4E); // 向寄存器写入数据
 364   7      							WriteOneChar(th);
 365   7      							WriteOneChar(tl);
C51 COMPILER V6.12  TEM2                                                                   11/30/2008 00:03:30 PAGE 7   

 366   7      							Init_DS18B20();
 367   7      							WriteOneChar(0xCC);           //跳过DS18B20地址
 368   7      							WriteOneChar(0x48); //把寄存器中数据拷贝到E2PROM
 369   7      						}
 370   6      						if(key == 0xAF)
 371   6      						{
 372   7      							th=th-0x01;
 373   7      							delayms(100);
 374   7      							//把TH值写入EEPROM
 375   7      							Init_DS18B20();
 376   7      							WriteOneChar(0xCC); // 跳过读序号列号的操作
 377   7      							WriteOneChar(0x4E); // 向寄存器写入数据
 378   7      							WriteOneChar(th);
 379   7      							WriteOneChar(tl);
 380   7      							Init_DS18B20();
 381   7      							WriteOneChar(0xCC);           //跳过DS18B20地址
 382   7      							WriteOneChar(0x48); //把寄存器中数据拷贝到E2PROM
 383   7      						}
 384   6      						lcd_pos(0x04);				
 385   6      						i = 0;
 386   6      						while(dis6[i] != '\0')
 387   6      						{						
 388   7      							lcd_wdat(dis6[i]);
 389   7      							i++;
 390   7      						}
 391   6      						lcd_pos(0x40);				
 392   6      						i = 0;
 393   6      						while(dis7[i] != '\0')
 394   6      						{						
 395   7      							lcd_wdat(dis7[i]);
 396   7      							i++;
 397   7      						}
 398   6      						lcd_pos(0x07);   //显示TH
 399   6      						lcd_wdat(dis3[th/10%10]);
 400   6      						lcd_wdat(dis3[th%10]);
 401   6      						lcd_pos(0x09);  //显示摄氏度符号
 402   6      						lcd_wdat(0xDF);
 403   6      						lcd_wdat(0x43);
 404   6      					}
 405   5      					
 406   5      				}
 407   4      				if(key == 0xBF)
 408   4      				{
 409   5      					lcd_pos(0x00);
 410   5      					for(i=0;i<16;i++)
 411   5      					lcd_wdat(0x20);
 412   5      					lcd_pos(0x40);
 413   5      					for(i=0;i<16;i++)
 414   5      					lcd_wdat(0x20);
 415   5      					while(key != 0x7F)
 416   5      					{
 417   6      						key = Read_keyboard();
 418   6      						if(key == 0xCF)
 419   6      						{
 420   7      							tl=tl+0x01;
 421   7      							delayms(100);
 422   7      							//把TH值写入EEPROM
 423   7      							Init_DS18B20();
 424   7      							WriteOneChar(0xCC); // 跳过读序号列号的操作
 425   7      							WriteOneChar(0x4E); // 向寄存器写入数据
 426   7      							WriteOneChar(th);
 427   7      							WriteOneChar(tl);
C51 COMPILER V6.12  TEM2                                                                   11/30/2008 00:03:30 PAGE 8   

 428   7      							Init_DS18B20();
 429   7      							WriteOneChar(0xCC);           //跳过DS18B20地址
 430   7      							WriteOneChar(0x48); //把寄存器中数据拷贝到E2PROM
 431   7      						}
 432   6      						if(key == 0xAF)
 433   6      						{
 434   7      							tl=tl-0x01;
 435   7      							delayms(100);
 436   7      							//把TH值写入EEPROM
 437   7      							Init_DS18B20();
 438   7      							WriteOneChar(0xCC); // 跳过读序号列号的操作
 439   7      							WriteOneChar(0x4E); // 向寄存器写入数据
 440   7      							WriteOneChar(th);
 441   7      							WriteOneChar(tl);
 442   7      							Init_DS18B20();
 443   7      							WriteOneChar(0xCC);           //跳过DS18B20地址
 444   7      							WriteOneChar(0x48); //把寄存器中数据拷贝到E2PROM
 445   7      						}
 446   6      						lcd_pos(0x04);				
 447   6      						i = 0;
 448   6      						while(dis8[i] != '\0')
 449   6      						{						
 450   7      							lcd_wdat(dis8[i]);
 451   7      							i++;
 452   7      						}
 453   6      						lcd_pos(0x40);				
 454   6      						i = 0;
 455   6      						while(dis7[i] != '\0')
 456   6      						{						
 457   7      							lcd_wdat(dis7[i]);
 458   7      							i++;
 459   7      						}
 460   6      						lcd_pos(0x07);   //显示TH
 461   6      						lcd_wdat(dis3[tl/10%10]);
 462   6      						lcd_wdat(dis3[tl%10]);
 463   6      						lcd_pos(0x09);  //显示摄氏度符号
 464   6      						lcd_wdat(0xDF);
 465   6      						lcd_wdat(0x43);
 466   6      					}
 467   5      					
 468   5      				}		
 469   4      
 470   4      			}
 471   3      			lcd_pos(0x00);
 472   3      			for(i=0;i<16;i++)
 473   3      			lcd_wdat(0x20);
 474   3      			lcd_pos(0x40);
 475   3      			for(i=0;i<16;i++)
 476   3      			lcd_wdat(0x20);
 477   3      		}
 478   2      	}
 479   1      }
 480          		
 481          
 482          	
 483                                                
 484          
 485          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1347    ----
C51 COMPILER V6.12  TEM2                                                                   11/30/2008 00:03:30 PAGE 9   

   CONSTANT SIZE    =     65    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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