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

📄 play.#2

📁 该程序是基于c8051f的红外线发射率的测量程序
💻 #2
📖 第 1 页 / 共 5 页
字号:
								if(powerdat[i][j] != 0)
								{
									ZERO=1;
								}
								LCDRSFT(1);
								break;
							}
					case 'L':{goto newlly2;break;}
					case 'U':
					         {
							 	if(i==0)
								{
									i=1;
									goto newlly1;
								}
								else
								{
									i--;
									goto newlly2;									
								}
								break;								
							 }
					case 'D':
					         {
							 	if(i==0)
								{
									i++;									
								}
								goto newlly2;
								break;
							 }
					case 'S':{goto ack;break;}
					case 'C':{goto cancel;break;}
					default: {goto loop2;break;}
				}
				while(KEY != 0xFF){}
			}
		}
	}
ack:
	while(KEY != 0xFF){}
	tempraturel=tempdat[0][3]*1000+tempdat[0][2]*100+tempdat[0][1]*10+tempdat[0][0];
	tempratureh=tempdat[1][3]*1000+tempdat[1][2]*100+tempdat[1][1]*10+tempdat[1][0];
	powerl=powerdat[0][2]*100+powerdat[0][1]*10+powerdat[0][0];
	powerh=powerdat[1][2]*100+powerdat[1][1]*10+powerdat[1][0];
	if((tempratureh >= 9999) || (tempratureh < tempraturel) || (powerh > 255) || (powerh < powerl))
	{
		LCDGBOC(0);//光标关闭
		goto again;
	}
	else
	{
		TEMPRATURE_hi=tempratureh;
		TEMPRATURE_lo=tempraturel;
		POWER_hi=powerh;
		POWER_lo=powerl;
	}	
cancel:
	LCDSHOW(MENUSELECT);//菜单选择画面
}
//***********************
void setpid()//设置PID参数
{
	uchar key;
	uchar i,j;
	uchar tempdat[3][5];
	ulong pidp;
	ulong pidi;
	ulong pidd;
	LCDSHOW(PIDPARASET);
	LCDASIIC();//西文方式
	LCDGBCOLOR(7,0);//光标前景色为白色光标背景色为黑色
	LCDFCOLOR(2);//设置前景色为绿色
	LCDOVERLAP(1);//覆盖方式
again:
	//显示PID_P值
	LCDXY(18,8);//光标移到x=18光标移到y=8
	tempdat[0][4]=PID_P/10000;
	if(tempdat[0][4]==0)
	{
		LCDDAT(' ');
	}
	else
	{
		LCDDAT(tempdat[0][4]+0x30);
	}	
	tempdat[0][3]=PID_P/1000%10;
	LCDDAT(tempdat[0][3]+0x30);
	LCDDAT('.');
	tempdat[0][2]=PID_P/100%10;
	LCDDAT(tempdat[0][2]+0x30);
	tempdat[0][1]=PID_P/10%10;
	LCDDAT(tempdat[0][1]+0x30);
	tempdat[0][0]=PID_P%10;
	LCDDAT(tempdat[0][0]+0x30);	
	//显示PID_I值
	LCDXY(18,10);//光标移到x=18光标移到y=10
	tempdat[1][4]=PID_I/10000;
	if(tempdat[1][4]==0)
	{
		LCDDAT(' ');
	}
	else
	{
		LCDDAT(tempdat[1][4]+0x30);
	}	
	tempdat[1][3]=PID_I/1000%10;
	LCDDAT(tempdat[1][3]+0x30);
	LCDDAT('.');
	tempdat[1][2]=PID_I/100%10;
	LCDDAT(tempdat[1][2]+0x30);
	tempdat[1][1]=PID_I/10%10;
	LCDDAT(tempdat[1][1]+0x30);
	tempdat[1][0]=PID_I%10;
	LCDDAT(tempdat[1][0]+0x30);
	//显示PID_D值
	LCDXY(18,12);//光标移到x=18光标移到y=12
	tempdat[2][4]=PID_D/10000;
	if(tempdat[2][4]==0)
	{
		LCDDAT(' ');
	}
	else
	{
		LCDDAT(tempdat[2][4]+0x30);
	}	
	tempdat[2][3]=PID_D/1000%10;
	LCDDAT(tempdat[2][3]+0x30);
	LCDDAT('.');
	tempdat[2][2]=PID_D/100%10;
	LCDDAT(tempdat[2][2]+0x30);
	tempdat[2][1]=PID_D/10%10;
	LCDDAT(tempdat[2][1]+0x30);
	tempdat[2][0]=PID_D%10;		
	LCDDAT(tempdat[2][0]+0x30);
	//数字设定
	LCDGBOC(1);//光标显示	
	while(1)
	{
		for(i=0;i<3;i++)
		{			
newlly:		while(KEY != 0xFF){}
			LCDXY(18,8+i*2);//光标移到x=18光标移到y=8+i*2	
			LCDLINE(0x07,97,0,150,0,0x0E,0x01,150,0);
			LCDFCOLOR(2);//设置前景色为绿色	
			for(j=4;j<5;j--)
			{
loop:
				while((KEY <'0' || KEY >'9') && (KEY != 'S') && (KEY != 'C') && (KEY != 'R') && (KEY != 'L') && (KEY != 'U') && (KEY != 'D')){}
				key=KEY;
				switch(key)
				{
					case '0':
					case '1':
					case '2':
					case '3':
					case '4':
					case '5':
					case '6':
					case '7':
					case '8':
					case '9':
							{								
								tempdat[i][j]=(key-0x30);
								if(j==4)
								{
									if(tempdat[i][j]==0)
									{
										LCDDAT(' ');
									}
									else
									{
										LCDDAT(key);
									}
								}
								else
								{
									LCDDAT(key);
								}
								break;
							}
					case 'R':{LCDRSFT(1);break;}
					case 'L':{goto newlly;break;}
					case 'U':
							 {
							 	if(i>0)									
								{
									i--;																			
								}
								goto newlly;
								break;
							 }
					case 'D':
							 {
							 	if(i<2)									
								{
									i++;																			
								}
								goto newlly;
								break;						
							 }
					case 'S':{goto ack;break;}
					case 'C':{goto cancel;break;}
					default: {goto loop;break;}
				}			
				if(j==3)
				{
					LCDDAT('.');
				}
				while(KEY != 0xFF){}
			}
		}
	}
ack:
	while(KEY != 0xFF){}
	pidp=tempdat[0][4]*10000+tempdat[0][3]*1000+tempdat[0][2]*100+tempdat[0][1]*10+tempdat[0][0];
	pidi=tempdat[1][4]*10000+tempdat[1][3]*1000+tempdat[1][2]*100+tempdat[1][1]*10+tempdat[1][0];
	pidd=tempdat[2][4]*10000+tempdat[2][3]*1000+tempdat[2][2]*100+tempdat[2][1]*10+tempdat[2][0];
	if((pidp >65535) || (pidi >65535) || (pidd >65535))
	{
		LCDGBOC(0);//光标关闭
		goto again;
	}
	else
	{
		PID_P=pidp;
		PID_I=pidi;
		PID_D=pidd;
		//
loop1:
		start();
		transmitbyte(0xA0);
		if(cack())
		{
			goto loop1;
		}
		transmitbyte(0x17);
		if(cack())
		{
			goto loop1;
		}
		transmitbyte(0x70);
		if(cack())
		{
			goto loop1;
		}
		transmitbyte(PID_P/256);
		if(cack())
		{
			goto loop1;
		}
		stop();
loop2:
		start();
		transmitbyte(0xA0);
		if(cack())
		{
			goto loop2;
		}
		transmitbyte(0x17);
		if(cack())
		{
			goto loop2;
		}
		transmitbyte(0x71);
		if(cack())
		{
			goto loop2;
		}
		transmitbyte(PID_P%256);
		if(cack())
		{
			goto loop2;
		}
		stop();
loop3:
		start();
		transmitbyte(0xA0);
		if(cack())
		{
			goto loop3;
		}
		transmitbyte(0x17);
		if(cack())
		{
			goto loop3;
		}
		transmitbyte(0x72);
		if(cack())
		{
			goto loop3;
		}
		transmitbyte(PID_I/256);
		if(cack())
		{
			goto loop3;
		}
		stop();
loop4:
		start();
		transmitbyte(0xA0);
		if(cack())
		{
			goto loop4;
		}
		transmitbyte(0x17);
		if(cack())
		{
			goto loop4;
		}
		transmitbyte(0x73);
		if(cack())
		{
			goto loop4;
		}
		transmitbyte(PID_I%256);
		if(cack())
		{
			goto loop4;
		}
		stop();
loop5:
		start();
		transmitbyte(0xA0);
		if(cack())
		{
			goto loop5;
		}
		transmitbyte(0x17);
		if(cack())
		{
			goto loop5;
		}
		transmitbyte(0x74);
		if(cack())
		{
			goto loop5;
		}
		transmitbyte(PID_D/256);
		if(cack())
		{
			goto loop5;
		}
		stop();
loop6:
		start();
		transmitbyte(0xA0);
		if(cack())
		{
			goto loop6;
		}
		transmitbyte(0x17);
		if(cack())
		{
			goto loop6;
		}
		transmitbyte(0x75);
		if(cack())
		{
			goto loop6;
		}
		transmitbyte(PID_D%256);
		if(cack())
		{
			goto loop6;
		}
		stop();
		//
	}	
cancel:
	LCDSHOW(MENUSELECT);//菜单选择画面
}
//***********************
void close()//关机画面
{	
	ALARM(CLOSSYSTEM);	
	WRITEAI(0x15,12);//关808P表
	BEEP=0;		
	while(1){}
}
//*********************************************************************
void GET_INITVALUE()
{
	uchar time1,time2,temp1,temp2;
	uchar i,j;
loop:
	start();
	transmitbyte(0xA0);
	if(cack())
	{
		goto loop;
	}
	transmitbyte(0x00);
	if(cack())
	{
		goto loop;
	}
	transmitbyte(0x00);
	if(cack())
	{
		goto loop;
	}
	start();
	transmitbyte(0xA1);
	if(cack())
	{
		goto loop;
	}
	for(i=1;i<60;i++)
	for(j=0;j<20;j++)
	{
		GY[i].power[j]=receiverbyte();
		ack();
		time1=receiverbyte();
		ack();
		time2=receiverbyte();
		ack();
		GY[i].time[j]=time1*256+time2;
		temp1=receiverbyte();
		ack();
		temp2=receiverbyte();
		ack();
		GY[i].temperature[j]=temp1*256+temp2;
	}
	for(j=0;j<19;j++)
	{
		GY[60].power[j]=receiverbyte();
		ack();
		time1=receiverbyte();
		ack();
		time2=receiverbyte();
		ack();
		GY[60].time[j]=time1*256+time2;
		temp1=receiverbyte();
		ack();
		temp2=receiverbyte();
		ack();
		GY[60].temperature[j]=temp1*256+temp2;
	}
	GY[60].power[19]=receiverbyte();
	ack();
	time1=receiverbyte();
	ack();
	time2=receiverbyte();
	ack();
	GY[60].time[19]=time1*256+time2;
	temp1=receiverbyte();
	ack();
	temp2=receiverbyte();	
	ack();
	GY[60].temperature[19]=temp1*256+temp2;	
	temp1=receiverbyte();
	ack();
	temp2=receiverbyte();	
	ack();
	PID_P=temp1*256+temp2;
	temp1=receiverbyte();
	ack();
	temp2=receiverbyte();	
	ack();
	PID_I=temp1*256+temp2;
	temp1=receiverbyte();
	ack();
	temp2=receiverbyte();	
	nack();
	stop();
	PID_D=temp1*256+temp2;	
	for(i=0;i<20;i++)
	{
		GY[0].power[i]=0;
		GY[0].time[i]=0;
		GY[0].temperature[i]=0;	
	}
}
//************************************
void INIT_DATA()
{
	uchar temp;
	uint i;
loop:
	start();
	transmitbyte(0xA0);
	if(cack())
	{
		goto loop;
	}
	transmitbyte(0x1F);
	if(cack())
	{
		goto loop;
	}
	transmitbyte(0xFF);
	if(cack())
	{
		goto loop;
	}
	start();
	transmitbyte(0xA1);
	if(cack())
	{
		goto loop;
	}
	temp=receiverbyte();	
	nack();
	stop();
	if(temp != 0x00)
	{
		for(i=0;i<8192;i++)
		{
loop1:
			start();
			transmitbyte(0xA0);
			if(cack())
			{
				goto loop1;
			}
			transmitbyte(i/256);
			if(cack())
			{
				goto loop1;
			}
			transmitbyte(i%256);
			if(cack())
			{
				goto loop1;
			}
			transmitbyte(0);
			if(cack())
			{
				goto loop1;
			}
			stop();	
		}
	}
}
//*********************************************************************
void main()
{
	uchar key;
	WDTCN=0xDE;//先关看门狗,初始化完成之后再开
	WDTCN=0xAD;//
	//**********************************
	SYSINIT();//系统 初始化
	LCDSHOW(WELCOMESCR);
	//**********************************
	INIT_DATA();
	GET_INITVALUE();
	//**********************************
	WRITEAI(0x15,12);
	WRITEAI(0x18,3);
	WRITEAI(0x00,1);
	if(HDISTANCE)
	{	
		TPFCON;
		MOTORRUN;
loop:
		while(HDISTANCE){}
		delay5ms();	
		if(!HDISTANCE)
		{
			MOTORSTOP;
			delay200ms();
			TPFCOFF;
		}
		else
		{
			goto loop;
		}		
	}
	//**********************************
	//系统初始化基本上完成
	//**********************************
	LCDSHOW(MENUSELECT);//菜单选择画面
	WRITEAI(0x15,12);
	while(1)
	{
		while(KEY < '0' || KEY >'5'){}
		key=KEY;
		while(KEY != 0xFF){}
		switch(key)
		{
			case '0': {close();       break;}
			case '1': {work();        break;}
			case '2': {selectpronum();break;}
			case '3': {setpropara();  break;}
			case '4': {setsenpara();  break;}
			case '5': {setpid();      break;}
			default:  {               break;}
		}
	}
}

⌨️ 快捷键说明

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