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

📄 key.h

📁 STC单片机程序,步行红绿灯智能控制.有LED显示
💻 H
字号:
/*延时子程序*/
/****************************/
void usleep(void)
{
 	unsigned char j;
	unsigned char k=25;
	while((k--)!=0)
  	{
    	for(j=0;j<250;j++);
  	}
}

//半秒延时
void delay500ms()
{
	long int k=500;
	unsigned char j;
	while((k--)!=0)
  	{
    	for(j=0;j<100;j++);
  	}
}

void delay50ms()
{
	long int k=60;
	unsigned char j;
	while((k--)!=0)
  	{
    	for(j=0;j<100;j++);
  	}
}

unsigned char getkey(void)
{
	unsigned char keyb=0;
	key=0;
	key=P1;
	key=~key;
	LCD_Line2();
	
	while(key)
	{
		usleep();
		P1=0xFF;
		key=P1;
		key=~key;
		if(key==0x60) restart=1;
		if(key==0x80) keyb=1;
		if(key==0x40) keyb=2;
		if(key==0x20) keyb=3;
		if(key==0x10) keyb=4;
	}
	
	return(keyb);
}


void keyscan()
{
	flag_key=getkey();
	if(flag_key==1) 
	{
		set_flag=6;
		LCD_Show(set_flag);
get:	flag_key=getkey();
		if(flag_key==1)
		{
			LCD_Show(1);
			return;
		}
		if(flag_key==2)
		{
			if(set_flag==6)
		 	{
				x++;
				LCD_Show(set_flag);
			}
			if(set_flag==7)
		 	{
				y++;
				LCD_Show(set_flag);
			}
			if(set_flag==8)
		 	{
				y1++;
				LCD_Show(set_flag);
			}
			if(set_flag==9)
		 	{
				z++;
				LCD_Show(set_flag);
			}
		}

		if(flag_key==3)
		{
			if(set_flag==6)
		 	{
				x--;
				LCD_Show(set_flag);
			}
			if(set_flag==7)
		 	{
				y--;
				LCD_Show(set_flag);
			}
			if(set_flag==8)
		 	{
				y1--;
				LCD_Show(set_flag);
			}
			if(set_flag==9)
		 	{
				z--;
				LCD_Show(set_flag);
			}
		}

		if(flag_key==4)
		{
			set_flag++;
			if(set_flag>9) set_flag=6;
			LCD_Show(set_flag);
		}

		goto get;
	}

	if(flag_key==4)
	{
		set_flag=2;
		tx=x;
		LCD_Show(set_flag);
		led=0x44;		//黄,红
//		IOWR_ALTERA_AVALON_PIO_DATA(LED_GREEN_BASE,led);
		while(tx)
		{
			delay500ms();
			delay500ms();
			tx--;
			LCD_Show(set_flag);
		}

		delay500ms();
		ty=y;
		set_flag=3;
		LCD_Show(set_flag);
		led=0x81;		//红,绿
//		IOWR_ALTERA_AVALON_PIO_DATA(LED_GREEN_BASE,led);
		while(ty-y1)
		{
			delay500ms();
			delay500ms();
			ty--;
			LCD_Show(set_flag);
		}

		
		while(ty)
		{
			delay500ms();
			led=0x80;		//红,灭
//			IOWR_ALTERA_AVALON_PIO_DATA(LED_GREEN_BASE,led);
			delay500ms();
			led=0x81;		//红,绿
//			IOWR_ALTERA_AVALON_PIO_DATA(LED_GREEN_BASE,led);
			ty--;
			LCD_Show(set_flag);
		}
		delay500ms();

		tz=z;
		set_flag=5;
		LCD_Show(set_flag);
		led=0x24;		//绿,红
//		IOWR_ALTERA_AVALON_PIO_DATA(LED_GREEN_BASE,led);
		while(tz)
		{
			delay500ms();
			delay500ms();
			tz--;
			LCD_Show(set_flag);
		}

		set_flag=1;
		LCD_Show(set_flag);
	}

}






⌨️ 快捷键说明

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