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

📄 keyscan.h

📁 LCD显示电子计价秤方案 1. 该方案使用的传感器为20KG,灵敏度约为0.5mv/v,选用新传感器线性较好的一段(100g-15Kg),直接处理,没有做非线性修正,称重可能会有偏差. 2. 软件
💻 H
字号:
#include<def.h>
#define  ONKEYSCAN  1
#define  SCANPORT	P2
uint bdata	keyres;
sbit key_0=keyres^0;	
sbit key_1=keyres^1;
sbit key_2=keyres^2;
sbit key_3=keyres^3;
sbit key_4=keyres^4;
sbit key_5=keyres^5;
sbit key_6=keyres^6;
sbit key_7=keyres^7;
sbit key_8=keyres^8;
sbit key_9=keyres^9;
sbit key_point=keyres^10;
sbit key_flay =keyres^11;
sbit key_clear=keyres^12;
sbit key_store=keyres^13;
sbit key_add  =keyres^14;
sbit key_cladd=keyres^15;
/*
uint bdata keystatus;
sbit s_0=keystatus^0;
sbit s_1=keystatus^1;
sbit s_2=keystatus^2;
sbit s_3=keystatus^3;
sbit s_4=keystatus^4;
sbit s_5=keystatus^5;
sbit s_6=keystatus^6;
sbit s_7=keystatus^7;
sbit s_8=keystatus^8;
sbit s_9=keystatus^9;
sbit s_point=keystatus^10;
sbit s_flay =keystatus^11;
sbit s_clear=keystatus^12;
sbit s_store=keystatus^13;
sbit s_add  =keystatus^14;
sbit s_cladd=keystatus^15;
*/
uchar	bdata	keyres_long;
sbit	key_point_long=keyres_long^0;	//point长按
sbit	key_store_long=keyres_long^1;	//存储长按 
uchar   store_cyc;
uchar	point_cyc;
//----------------------------------------按键扫描程序--------------------------------------------
uint key_mcu()
{
	uchar i;
	uint	keystatusl;
	keystatusl=0;
   	//利用P2口做键盘扫描
    SCANPORT=0Xfe;	//初始状态    
    for(i=0;i<4;i++)
	{	  	
		switch(SCANPORT)
	   	{
			case 0xee:keystatusl=0x0001;break;	//0	 
		    case 0xde:keystatusl=0x0002;break;	//1 
			case 0xbe:keystatusl=0x0004;break;	//2 
			case 0x7e:keystatusl=0x0008;break;	//3
			case 0xed:keystatusl=0x0010;break;	//4 
	        case 0xdd:keystatusl=0x0020;break;	//5 
			case 0xbd:keystatusl=0x0040;break;	//6 
			case 0x7d:keystatusl=0x0080;break;	//7
			case 0xeb:keystatusl=0x0100;break;	//8 
		    case 0xdb:keystatusl=0x0200;break;	//9 
			case 0xbb:keystatusl=0x0400;break;	//point 
			case 0x7b:keystatusl=0x0800;break;	//flay
			case 0xe7:keystatusl=0x1000;break;	//clear 
		    case 0xd7:keystatusl=0x2000;break;	//store 
			case 0xb7:keystatusl=0x4000;break;	//add 
			case 0x77:keystatusl=0x8000;break;	//clear 
			default:keystatusl=0x0000;		//无按键按下
	   	}
		SCANPORT<<=1;
		SCANPORT|=0x01;		
	}
	return (keystatusl);
}
void key_ser()
{
	//利用TM1629按键扫描
	
}
void key_scan()
{	
	uint	temp16,keystatus;
	uchar	numres=0;
	keyres=0;
	keyres_long=0;

	if(keybit==0)
	{
		if(keystatus!=0x0000)
		{
			//前一次有按键按下
			temp16=key_mcu();
			if(((temp16&0x0400)==0x0400)&&((keystatus&0x0400)==0x0400))
			{
				point_cyc++;
				if(point_cyc>200)
				{
					point_cyc=0;
					key_point_long=1;	//point长按
				}
			}
			if(((temp16&0x2000)==0x2000)&&((keystatus&0x2000)==0x2000))
			{
				store_cyc++;
				if(store_cyc>200)
				{
					store_cyc=0;
					key_store_long=1;	//store长按
				}
			}
			keyres=0;
			temp16=(~temp16)&keystatus;
			switch(temp16)
			{
				case 0x0001:key_0=1;
							numres=0;
							break;
				case 0x0002:key_1=1;
							numres=1;
							break;
				case 0x0004:key_2=1;
							numres=2;
							break;
				case 0x0008:key_3=1;
							numres=3;
							break;
				case 0x0010:key_4=1;
							numres=4;
							break;
				case 0x0020:key_5=1;
							numres=5;
							break;
				case 0x0040:key_6=1;
							numres=6;
							break;
				case 0x0080:key_7=1;
							numres=7;
							break;
				case 0x0100:key_8=1;
							numres=8;
							break;
				case 0x0200:key_9=1;
							numres=9;
							break;
				case 0x0400:key_point=1;
							numres=10;
							break;
				case 0x0800:key_flay =1;break;
				case 0x1000:key_clear=1;break;
				case 0x2000:key_store=1;break;
				case 0x4000:key_add  =1;break;
				case 0x8000:key_cladd=1;break;
				default:keyres=0;
			}
			/*
			//更新数字的值
			if((temp16&0x07ff)!=0)
			{
				num[5]=num[4];
				num[4]=num[3];
				num[3]=num[2];
				num[2]=num[1];
				num[1]=num[0];
				num[0]=numres;
			}
			*/
			temp16=0;
		    keystatus=0;
			numres=0;
		}
		else
		{
		   keystatus=key_mcu();	//无按键按下则直接调用单片机扫描键盘
		}			    
	}
	else
	{
		key_ser();	//调用串行扫描
	}
}

⌨️ 快捷键说明

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