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

📄 key_scan.c

📁 按键和lcd1602的C51程序
💻 C
字号:
#include "reg51.h"
#include "intrins.h"
#include "lcd1602.h"
#define uchar unsigned char

sbit led1 = P1^0;
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
void mDelay(unsigned int DelayTime)
{
	unsigned int j=0;
	for(;DelayTime>0;DelayTime--)
	{ 
		for(j=0;j<125;j++)
		{;} 
	}
}
uchar Key()
{ 
	uchar KeyV;
	uchar tmp;
	P0=P0|0x1f; //四个按键所接位置
	KeyV=P0;
	if((KeyV|0xe0)==0xff) //无键按下
		return(0);
	mDelay(10); //延时,去键抖
	KeyV=P0;
	if((KeyV|0xe0)==0xff)
		return(0);
	else
	{ 
		for(;;)
		{ 
			tmp=P0;
			if((tmp|0xe0)==0xff)  //等待按键释放
				break;
		}
		return(KeyV);
	}
}

void main()
{
	uchar KValue;
	//uchar disp;
	delay(10);
	P1=0xff;
   // lcd_init();  //初始化LCD
	while(1)
	{ 
		KValue=Key();
		switch (KValue)
		{ 
			case 0xfe: //P3.2=0,Start
			{ //disp = 'A';
				led1=!led1;
				break; }
			case 0xfd: //P3.3=0,Stop
			{ //disp = 'B';
					led2=!led2;
				break; }
			case 0xfb: //P3.4=0 Up
			{   	led3=!led3;
				 //disp = 'C';
				break; }
			case 0xf7: //P3.5=0 Down
			{ //disp = 'D';
				led4=!led4;
				break; }
			case 0xef: //P3.5=0 Down
			{ //disp = 'Q';
					led5=!led5;
				break; }
		}
		//lcd_pos(0x00);     //设置显示位置为第一行第1列
		//lcd_wdat(disp);
	}
}

⌨️ 快捷键说明

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