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

📄 key.c

📁 基于C51的通用人机界面程序
💻 C
字号:
#define _key_ 
#include "general.h"
//定义标志位
//bit        	f_KEYOFF;
//bit			f_TIMER0;

static uchar code code_key[16]={0x11,0x12,0x14,0x18,//3
								0x21,0x22,0x24,0x28,//7
								0x41,0x42,0x44,0x48,//11
								0x81,0x82,0x84,0x88};//15
   
/*	-- 1 -- 2 -- 3 -- enter --
	-- 4 -- 5 -- 6 --
    -- 7 -- 8 -- 9 --
	-- 0 -- 
/******************************************
查键值表,特征键值转为顺序键值
******************************************/
uchar get_key(uchar c)
{
   uchar i=0;
   while(code_key[i]!= c) 
	i++;
   return i;//0x00~0x0f
 }

/**************************************************************
名称:kbscan                                     
描述:键盘扫描,有延时
输入:无
输出:返回键值key
其他:P0.4~7扫描输出,P0.0~3输入进来
**************************************************************/
uchar kbscan(void)
{
	uchar sccode,recode;
	P0=0x0f;							//00001111
	if((P0&0x0f)!=0x0f)					//若有键按下
	{
		delay(5);						//薄膜按键推荐延时,1
		if((P0&0x0f)!=0x0f)
		{
			sccode=0xef;
			while((sccode&0x01)!=0)
			{
				P0=sccode;
				if((P0&0x0f)!=0x0f)
				{
					recode=(P0&0x0f)|0xf0;
					while((P0&0x0f)!=0x0f);//空while,等待键抬起再返回键值
					return(get_key((~sccode)+(~recode)));//返回特征字节->顺序键码
					//C1:10-01,02,04,08		11,12,14,18
					//C2:20-01,02,04,08		21,22,24,28
					//C3:40-01,02,04,08		41,42,44,48
					//C4:80-01,02,04,08		81,82,84,88
				}
				else
				sccode=(sccode<<1)|0x01;

			}

		}
	}
	else
	while((P0&0x0f)!=0x0f);//
	return(0x10);//无键按下,返回16
}

/**************************
参数设置操作
**************************
void paraset(	uchar para,
				uchar temp,
				uchar Index,
				uchar index_fa,
				uchar index_br1,
				uchar index_br2)
{
	uchar key;
	key=kbscan();//
	switch(key)
	{
		//case NUM1:		{temp=1;break;}
		//case NUM2:		{temp=2;break;}
		//case NUM3:		{temp=3;break;}
		case NUM4:		{temp=4;break;}
		//case NUM5:		{temp=5;break;}
		case NUM6:		{temp=6;break;}
		//case NUM7:		{temp=7;break;}
		case NUM8:		{temp=8;break;}
		//case NUM9:		{temp=9;break;}
		case NUM0:		{temp=0;break;}
		case BN_ENT:	{para=temp;Index=index_fa;break;}
		case BN_ESC:	{temp=para;Index=index_fa;break;}
		case BN_PGUP:	{Index=index_br1;break;}
		case BN_PGDN:	{Index=index_br2;break;}
	}
}
*/

⌨️ 快捷键说明

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