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

📄 fc_v20.txt

📁 实现模糊控制算法(AD DA)和人机接口(4x4键盘 2x16LCD 串口1/2)
💻 TXT
📖 第 1 页 / 共 2 页
字号:
	key1=FALSE;
	key2=TURE;
	if(scankey1==TURE)
		delay_key(delay_key_VALUE);
	if(scankey1==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey1==TURE)
		{
			while(scankey1==TURE);
			return 13;
		}
	}
	if(scankey2==TURE)
		delay_key(delay_key_VALUE);   
	if(scankey2==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey2==TURE)
		{
			while(scankey2==TURE);
			return 9;
		}
	}
	if(scankey3==TURE)
		delay_key(delay_key_VALUE);
	if(scankey3==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey3==TURE)
		{
			while(scankey3==TURE);
			return 5;
		}
	}
	if(scankey4==TURE)
		delay_key(delay_key_VALUE);
	if(scankey4==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey4==TURE)
		{
			while(scankey4==TURE);
			return 1;
		}
	}
	
	key2=FALSE;
	key3=TURE;
	if(scankey1==TURE)
		delay_key(delay_key_VALUE);
	if(scankey1==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey1==TURE)
		{
			while(scankey1==TURE);
			return 14;
		}
	}
	if(scankey2==TURE)
		delay_key(delay_key_VALUE);
	if(scankey2==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey2==TURE)
		{
			while(scankey2==TURE);
			return 10;
		}
	}
	if(scankey3==TURE)
		delay_key(delay_key_VALUE);
	if(scankey3==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey3==TURE)
		{
			while(scankey3==TURE);
			return 6;
		}
	}
	if(scankey4==TURE)
		delay_key(delay_key_VALUE);
	if(scankey4==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey4==TURE)
		{
			while(scankey4==TURE);
			return 2;
		}
	}
	
	key3=FALSE;
	key4=TURE;
	if(scankey1==TURE)
		delay_key(delay_key_VALUE);
	if(scankey1==TURE)
	{
		delay_key(delay_key_VALUE);
		{
			while(scankey1==TURE);
			return 15;
		}
	}
	if(scankey2==TURE)
		delay_key(delay_key_VALUE);
	if(scankey2==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey2==TURE)
		{
			while(scankey2==TURE);
			return 11;
		}
	}
	if(scankey3==TURE)
		delay_key(delay_key_VALUE);
	if(scankey3==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey3==TURE)
		{
			while(scankey3==TURE);
			return 7;
		}
	}
	if(scankey4==TURE)
		delay_key(delay_key_VALUE);
	if(scankey4==TURE)
	{
		delay_key(delay_key_VALUE);
		if(scankey4==TURE)
		{
			while(scankey4==TURE);
			return 3;

		}
	}
	
	key4=FALSE;             //注意:如果没有键按下,则返回值为16
	return 16;

}

//////////////////////////////
//            主菜单
/////////////////////////////
void menu_m()
{
	uchar keyword;
	Wr_Pos(1,1);
	Wr_Str(" 1:PRE2:TEM3:LEV");
	Wr_Pos(1,2);
	Wr_Str(" 4:AUTO5:ZJ6:RES");
	while(1)
	{
		ReadData();
		key1=FALSE;         //初始化程序
		key2=FALSE;
		key3=FALSE;
		key4=FALSE;
		keyword=keyscan();     //返回的键码值存放在keyword中,如果以后要用到,则用到的就是此值
		switch (keyword)
		{
			case 0:		  	break;
			case 1:menu_1();break;/*PRESS*/
			case 2:menu_2();break;/*TEMP*/
			case 3:menu_3();break;/*LEVEL*/
			case 4:menu_4();break;/*AUTO*/
			case 5:menu_5();break;/*自检*/
			case 6:menu_6();break;/*RESET*/
			case 7:			break;
			case 8:			break;
			case 9:			break;
			case 10:		break;
			case 11:		break;
			case 12:		break;
			case 13:		break;
			case 14:		break;
			case 15:		break;
			default:		break;
			
		}
	}
}

//////////////////////////////
//            菜单一 PRESS
/////////////////////////////
void menu_1()
{
	uchar keyword;
	Wr_Pos(1,1);
	Wr_Str("  PRESS:        ");
	Wr_Pos(1,2);
	Wr_Str("AnyKey to Return");
	while(1)
	{
		ReadData();
		Wr_Pos(9,1);
		for(i=0;i<7;i++)
	    Wr_Dat(aa[i+17]);	/*aa[17-23]*/
		key1=FALSE;         //初始化程序
		key2=FALSE;
		key3=FALSE;
		key4=FALSE;
		keyword=keyscan();     //返回的键码值存放在keyword中,如果以后要用到,则用到的就是此值
		switch (keyword)
		{
			case 0:  menu_m(); break;
			case 1:  menu_m(); break;
			case 2:  menu_m(); break;
			case 3:  menu_m(); break;
			case 4:  menu_m(); break;
			case 5:  menu_m(); break;
			case 6:  menu_m(); break;
			case 7:  menu_m(); break;
			case 8:  menu_m(); break;
			case 9:  menu_m(); break;
			case 10: menu_m(); break;
			case 11: menu_m(); break;
			case 12: menu_m(); break;
			case 13: menu_m(); break;
			case 14: menu_m(); break;
			case 15: menu_m(); break;
			default:		   break;			
		}delay(5536);
	}
}

//////////////////////////////
//            菜单2 TEMP
/////////////////////////////
void menu_2()
{
	uchar keyword;
	Wr_Pos(1,1);
	Wr_Str("   TEMP:        ");
	Wr_Pos(1,2);
	Wr_Str("AnyKey to Return");
	while(1)
	{
		ReadData();
		Wr_Pos(9,1);
		for(i=0;i<6;i++)
	    Wr_Dat(aa[i+2]);	/*aa[2-7]*/
		key1=FALSE;         //初始化程序
		key2=FALSE;
		key3=FALSE;
		key4=FALSE;
		keyword=keyscan();     //返回的键码值存放在keyword中,如果以后要用到,则用到的就是此值
		switch (keyword)
		{
			case 0:  menu_m(); break;
			case 1:  menu_m(); break;
			case 2:  menu_m(); break;
			case 3:  menu_m(); break;
			case 4:  menu_m(); break;
			case 5:  menu_m(); break;
			case 6:  menu_m(); break;
			case 7:  menu_m(); break;
			case 8:  menu_m(); break;
			case 9:  menu_m(); break;
			case 10: menu_m(); break;
			case 11: menu_m(); break;
			case 12: menu_m(); break;
			case 13: menu_m(); break;
			case 14: menu_m(); break;
			case 15: menu_m(); break;
			default:    	   break;
		}delay(5535);
	}
}

//////////////////////////////
//            菜单3 LEVEL
/////////////////////////////
void menu_3()
{
	uchar keyword,i;
	Wr_Pos(1,1);
	Wr_Str("  LEVEL:        ");
	Wr_Pos(1,2);
	Wr_Str("AnyKey to Return");
	while(1)
	{
		ReadData();
		Wr_Pos(9,1);
		for(i=0;i<7;i++)
	    Wr_Dat(aa[i+9]);	/*aa[10-15]*/
		key1=FALSE;         //初始化键盘程序
		key2=FALSE;
		key3=FALSE;
		key4=FALSE;
		keyword=keyscan();     //返回的键码值存放在keyword中,如果以后要用到,则用到的就是此值
		switch (keyword)
		{
			case 0:  menu_m(); break;
			case 1:  menu_m(); break;
			case 2:  menu_m(); break;
			case 3:  menu_m(); break;
			case 4:  menu_m(); break;
			case 5:  menu_m(); break;
			case 6:  menu_m(); break;
			case 7:  menu_m(); break;
			case 8:  menu_m(); break;
			case 9:  menu_m(); break;
			case 10: menu_m(); break;
			case 11: menu_m(); break;
			case 12: menu_m(); break;
			case 13: menu_m(); break;
			case 14: menu_m(); break;
			case 15: menu_m(); break;
			default:    	   break;
		}delay(5535);
	}
}

//////////////////////////////
//            菜单4 AUTO
/////////////////////////////
void menu_4()
{
	uchar keyword;
	Wr_Pos(1,1);
	Wr_Str(" AUTO MESURE ...");
	Wr_Pos(1,2);
	Wr_Str("AnyKey to Return");
	while(1)
	{
		key1=FALSE;         //初始化程序
		key2=FALSE;
		key3=FALSE;
		key4=FALSE;
		keyword=keyscan();     //返回的键码值存放在keyword中,如果以后要用到,则用到的就是此值
		switch (keyword)
		{
			case 0:  menu_m(); break;
			case 1:  menu_m(); break;
			case 2:  menu_m(); break;
			case 3:  menu_m(); break;
			case 4:  menu_m(); break;
			case 5:  menu_m(); break;
			case 6:  menu_m(); break;
			case 7:  menu_m(); break;
			case 8:  menu_m(); break;
			case 9:  menu_m(); break;
			case 10: menu_m(); break;
			case 11: menu_m(); break;
			case 12: menu_m(); break;
			case 13: menu_m(); break;
			case 14: menu_m(); break;
			case 15: menu_m(); break;
			default:break;			
		}delay(5535);
	}
}

//////////////////////////////
//            菜单5 AUTO CHECk
/////////////////////////////
void menu_5()
{
	Wr_Pos(1,1);
	Wr_Str("AUTO CHECKing...");
	Wr_Pos(1,2);
	Wr_Str("................");
	delay(65535);
	Wr_Pos(1,1);
	Wr_Str(" AUTO CHECK OK  ");
	Wr_Pos(1,2);
	Wr_Str(" AUTO CHECK OK  ");
	delay(65535);
	menu_4();
}

//////////////////////////////
//            菜单6 RESET
/////////////////////////////
void menu_6()
{
	Wr_Pos(1,1);
	Wr_Str("  RESETING......");
	Wr_Pos(1,2);
	Wr_Str("................");
	delay(65535);
	Wr_Pos(1,1);
	Wr_Str("    RESET OK    ");
	Wr_Pos(1,2);
	Wr_Str("    RESET OK    ");
	delay(65535);
	menu_4();
}

/* 长延时*/
void delay( long m)
{
long ms;
ms=m;
while(ms>=0)
ms--;
ms=m;
while(ms>=0)
ms--;
ms=m;
while(ms>=0)
ms--;
}
/*UART0中断	接收到0x20则往上位机依次传数据接收到0x30则停止*/
void uart0_ISR() interrupt 4{}
void ReadData(void) {
temppage=SFRPAGE;
ii=0;
SFRPAGE=0x00;
TI0 = 0;
SBUF0=0x30;
while(!TI0);
TI0 = 0;

        while(ii<24)
	 {
	  SFRPAGE=0x00;
	  TI0 = 0;
	  SBUF0=0x20;
	  while(!TI0);
	  TI0 = 0;

	  while(!RI0);
	  aa[ii]=SBUF0;
	  RI0=0;
	  ii++;
        }
SFRPAGE=temppage;
}

⌨️ 快捷键说明

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