89s52.lst

来自「LCD1602.rar」· LST 代码 · 共 612 行 · 第 1/2 页

LST
612
字号
 290   1      	T2CON=8;
 291   1      	Tctrl=0;
 292   1      		
 293   1      }
 294          
 295          void width_get()
 296          {
 297   1      	while(1);
 298   1      }
 299          
 300          void count() 
 301          {
 302   1      	while(1)
 303   1      	{		
C51 COMPILER V6.12  89S52                                                                  08/20/2007 20:27:49 PAGE 6   

 304   2      		key_jud();
 305   2      		P2=0xff;
 306   2      		Enex=0;
 307   2      		value=TH0;
 308   2      		value=(value<<8);
 309   2      		value=value+TL0;
 310   2      		value=(value<<8);
 311   2      		value=value+DBPORT;
 312   2      		Enex=1;
 313   2      		lcd_moveto(1,9);
 314   2      		sprintf(sbuffer,"%-5lu",value);		
 315   2      		lcd_moveto(1,9);
 316   2      		lcd_print(sbuffer);	
 317   2      		copyer=w[4]+w[3]*10+w[2]*1e2+w[1]*1e3+w[0]*1e4;
 318   2      		if(value==copyer)  
 319   2      		{
 320   3      			StopCount;
 321   3      			P3_1=0;
 322   3      			while(P0_1==1||P0_2==1);
 323   3      			P3_1=1;
 324   3      			StarCount;
 325   3      		}		
 326   2      		sprintf(sbuffer,"%c%c%c%c%c",w[0]+'0',w[1]+'0',w[2]+'0',w[3]+'0',w[4]+'0');		
 327   2      		lcd_moveto(0,9);
 328   2      		lcd_print(sbuffer);		
 329   2      	}
 330   1      }
 331          
 332          void count_init()
 333          {
 334   1      	unsigned char i;
 335   1      	Disall;
 336   1      	Fctrl=0;	
 337   1      	TMOD=0x05;
 338   1      	TR0=1;
 339   1      	StopCount;
 340   1      	ClrsCount;
 341   1      	TL0=0;
 342   1      	TH0=0;	
 343   1      	for(i=0;i<5;i++) w[i]=9;
 344   1      	w[2]=8;
 345   1      	StarCount;
 346   1      }
 347          
 348          void low_get()
 349          {
 350   1      	low_init();
 351   1      	while(IsLow);
 352   1      	high_init();
 353   1      }
 354          
 355          void show_high_t()
 356          {
 357   1      	copyer=value;
 358   1      	while(value>=100000) value/=10;
 359   1      	wvalue=1e9/value;
 360   1      	depart_w();
 361   1      	if(copyer<=1e4)
 362   1      		sprintf(sbuffer,"%c%c%c.%c uS   ",w[0],w[1],w[2],w[3]);
 363   1      	else if(copyer<=1e5)
 364   1      		sprintf(sbuffer,"%c%c.%c%c uS   ",w[0],w[1],w[2],w[3]);
 365   1      	else if(copyer<=1e6)
C51 COMPILER V6.12  89S52                                                                  08/20/2007 20:27:49 PAGE 7   

 366   1      		sprintf(sbuffer,"%c.%c%c%c uS   ",w[0],w[1],w[2],w[3]);
 367   1      	else if(copyer<=1e7)
 368   1      		sprintf(sbuffer,"%c%c%c.%c nS   ",w[0],w[1],w[2],w[3]);
 369   1      	else 
 370   1      		sprintf(sbuffer,"%c%c.%c%c nS   ",w[0],w[1],w[2],w[3]);
 371   1      	lcd_moveto(1,5);
 372   1      	lcd_print(sbuffer);	
 373   1      
 374   1      }
 375          
 376          void show_high_f()
 377          {
 378   1      	wvalue=value;
 379   1      	depart_w();
 380   1      	if(value<1e4)
 381   1      		sprintf(sbuffer,"%c.%c%c%c KHz  ",w[0],w[1],w[2],w[3]);
 382   1      	else if(value<1e5)
 383   1      		sprintf(sbuffer,"%c%c.%c%c KHz  ",w[0],w[1],w[2],w[3]);
 384   1      	else if(value<1e6)
 385   1      		sprintf(sbuffer,"%c%c%c.%c KHz  ",w[0],w[1],w[2],w[3]);
 386   1      	else if(value<1e7)
 387   1      		sprintf(sbuffer,"%c.%c%c%c MHz  ",w[0],w[1],w[2],w[3]);
 388   1      	else
 389   1      		sprintf(sbuffer,"%c%c.%c%c MHz  ",w[0],w[1],w[2],w[3]);
 390   1      	lcd_moveto(1,5);
 391   1      	lcd_print(sbuffer);
 392   1      }
 393          
 394          void show_low_t()
 395          {
 396   1      	wvalue=value;
 397   1      	depart_w();
 398   1      	if(value<1e4)
 399   1      		sprintf(sbuffer,"%c%c%c.%c uS   ",w[0],w[1],w[2],w[3]);
 400   1      	else if(value<1e5)
 401   1      		sprintf(sbuffer,"%c.%c%c%c mS   ",w[0],w[1],w[2],w[3]);
 402   1      	else if(value<1e6)
 403   1      		sprintf(sbuffer,"%c%c.%c%c mS   ",w[0],w[1],w[2],w[3]);
 404   1      	else if(value<1e7)
 405   1      		sprintf(sbuffer,"%c%c%c.%c mS   ",w[0],w[1],w[2],w[3]);
 406   1      	else if(value<1e8)
 407   1      		sprintf(sbuffer,"%c.%c%c%c S    ",w[0],w[1],w[2],w[3]);
 408   1      	lcd_moveto(1,5);
 409   1      	lcd_print(sbuffer);
 410   1      }
 411          
 412          void show_low_f()
 413          {
 414   1      	copyer=value;
 415   1      	while(value>=100000) value/=10;
 416   1      	wvalue=1e9/value;
 417   1      	depart_w();
 418   1      	if(copyer<=1e4)
 419   1      		sprintf(sbuffer,"%c.%c%c%c KHz  ",w[0],w[1],w[2],w[3]);
 420   1      	else if(copyer<=1e5)
 421   1      		sprintf(sbuffer,"%c%c%c.%c Hz   ",w[0],w[1],w[2],w[3]);
 422   1      	else if(copyer<=1e6)
 423   1      		sprintf(sbuffer,"%c%c.%c%c Hz   ",w[0],w[1],w[2],w[3]);
 424   1      	else 
 425   1      		sprintf(sbuffer,"%c.%c%c%c Hz   ",w[0],w[1],w[2],w[3]);
 426   1      	lcd_moveto(1,5);
 427   1      	lcd_print(sbuffer);
C51 COMPILER V6.12  89S52                                                                  08/20/2007 20:27:49 PAGE 8   

 428   1      }
 429          
 430          void intr0() interrupt 0
 431          {    			
 432   1      	
 433   1      	Cut=1;
 434   1      	P2=0xff;
 435   1      	Enex=0;
 436   1      	value=TH0*0x10000+TL0*0x100+DBPORT;
 437   1      	value*=10;//注意在写片时屏掉此语句
 438   1      	Enex=1;	
 439   1      	if(!IsFreq) show_low_t();
 440   1      	else show_low_f();
 441   1      	if(value<4000) IsLow=0;
 442   1      	Cut=0;
 443   1      			
 444   1      }
 445          
 446          void intr1() interrupt 2
 447          {
 448   1      	TL0=0;
 449   1      	TH0=0;	
 450   1      }
 451          
 452          void high_get()
 453          {
 454   1      	while(1)
 455   1      	{
 456   2      		StarCount;
 457   2      		delay1s();
 458   2      		StopCount;
 459   2      		P2=0xff;
 460   2      		Enex=0;
 461   2      		value=TH0*0x10000+TL0*0x100+DBPORT;
 462   2      		Enex=1;
 463   2      		if(value<2000) low_get();
 464   2      		if(IsFreq) 	show_high_f();
 465   2      		else		show_high_t();
 466   2      		ClrsCount;
 467   2      		TL0=0;
 468   2      		TH0=0;
 469   2      	}
 470   1      }
 471          
 472          void contrast_handle()
 473          {	
 474   1      	lcd_moveto(1,0);
 475   1      	lcd_print("Contrast : ");
 476   1      	lcd_putchar(contrast+'0');
 477   1      }
 478          	
 479          
 480          void install()
 481          {
 482   1      	key_delay();
 483   1      	while(1)
 484   1      	{
 485   2      		switch(P0&0x7)
 486   2      		{
 487   3      			case K2:P1_5=~P1_5;
 488   3      					_nop_();
 489   3      					P1_5=~P1_5;															
C51 COMPILER V6.12  89S52                                                                  08/20/2007 20:27:49 PAGE 9   

 490   3      					key_delay();
 491   3      					lcd_moveto(0,12);
 492   3      					if(BackLight) lcd_print("N  ");
 493   3      					else lcd_print("FF");											
 494   3      					break;
 495   3      			case K7:contrast--;
 496   3      					if(contrast==0xff) contrast++;
 497   3      					contrast_handle();
 498   3      					key_delay();
 499   3      					break;
 500   3      			case K6:contrast++;
 501   3      					if(contrast==8) contrast--;
 502   3      					contrast_handle();
 503   3      					key_delay();
 504   3      					break;
 505   3      
 506   3      		}
 507   2      	}
 508   1      }
 509          
 510          void lcd_init()
 511          {  	
 512   1      	lcd_command(DIS_CURS_OFF);
 513   1      	lcd_command(LCD_INIT);
 514   1      	lcd_command(LCD_HOME);
 515   1      	contrast_handle();
 516   1      }
 517          
 518          void main()
 519          {	
 520   1      	lcd_init();
 521   1      	lcd_command(LCD_CLRS);
 522   1      	lcd_print("Welcome");
 523   1      	lcd_moveto(1,0);
 524   1      	lcd_print("Press Button...");
 525   1      	while(1)
 526   1      	{
 527   2      		switch(P0&0x7)
 528   2      		{
 529   3      			case K1:lcd_command(LCD_CLRS);
 530   3      					lcd_moveto(0,0);
 531   3      					lcd_print("Frequency:");
 532   3      					lcd_moveto(1,5);
 533   3      					lcd_print("No Input");
 534   3      					high_init();
 535   3      					high_get();
 536   3      			case K2:IsFreq=0;
 537   3      					lcd_command(LCD_CLRS);
 538   3      					lcd_moveto(0,0);
 539   3      					lcd_print("Priod:");
 540   3      					lcd_moveto(1,5);
 541   3      					lcd_print("No Input");
 542   3      					high_get();
 543   3      			case K3:lcd_command(LCD_CLRS);
 544   3      					lcd_print("Count To:");
 545   3      					lcd_moveto(1,0);
 546   3      					lcd_print("Present: ");
 547   3      					count_init();
 548   3      					count();
 549   3      			case K4:lcd_command(LCD_CLRS);
 550   3      					lcd_print("Pulse Width:");
 551   3      					lcd_moveto(1,5);
C51 COMPILER V6.12  89S52                                                                  08/20/2007 20:27:49 PAGE 10  

 552   3      					lcd_print("Capture.....");					
 553   3      					width_init();
 554   3      					width_get();
 555   3      			case K5:lcd_command(LCD_CLRS);
 556   3      					lcd_print("Backlight: O");
 557   3      					lcd_moveto(0,12);
 558   3      					if(BackLight) lcd_print("N  ");
 559   3      					else lcd_print("FF");
 560   3      					lcd_moveto(1,0);
 561   3      					lcd_print("Contrast : ");
 562   3      					lcd_putchar(contrast+'0');
 563   3      					install();
 564   3      		}
 565   2      	}
 566   1      	lcd_command(LCD_CLRS);
 567   1      	while(1);		
 568   1      }
 569          
 570          	


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3289    ----
   CONSTANT SIZE    =    447    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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