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

📄 key.c

📁 此文档是网上一款开发板的完整系统,内附有电路图纸!系统有完整的接口程式,包含了字符型LCD驱动,pc串口通讯程式,flash读写驱动程式,中文字库,ad芯片驱动程式,keyscan4*4扫描程式
💻 C
字号:
//**********************************************************************************
//**********************************************************************************
//键盘码读取函数及蜂鸣器驱动
#include <reg52.h>
#include "APR6008_DRIVER.H"
#define keypin  P2
//入口:检测按键延时的长度,一般取1000
//返回:键值,返回0表示无键按下 
unsigned char getkey(unsigned int t){
	unsigned char c,c1,i;
	static unsigned char oldkey;
	bit iskey=0;
	unsigned char code dout[4]={0x7f,0xbf,0xdf,0xef};
	unsigned char din[8]={0x03,0x02,0x00,0x01,0x00,0x00,0x00,0x00};
	unsigned char key[4][4]={{'*','0','#','E'},{'7','8','9','C'},{'4','5','6','D'},{'1','2','3','U'}};

	while(1)
	{
		for(i=0;i<4;i++){
			keypin = dout[i];
			c = keypin &0x0f;
			if (c!=0x0f){
				c1=(key[din[0X0E-c]][i]); //转换出健码
				iskey=1;
			}
		}
		if(t==0){
			if (iskey)
			{
				P2=0xff;		//恢复现场
				if(oldkey==c1)  //如果和上次的按键一样,就当作没有按键.这是为了避免连键
				{
					return(0);
				}
				oldkey=c1;	//保存上次的按键
				beep(1);	//按键音
				return(c1);
			}
			else 
			{
				oldkey=0;	//返回0表示无按键
				return(0);
			}
		}
		t--;
	}
}	
//4----------------------|
//						 |
//5----------------|	 |
//				   |	 |
//6----------|	   |	 |
//			 |	   |	 |
//7----|	 |	   |	 |
//	   |1	 |2	   |3	 |up
//0----|-----|-----|-----|---------------
//	   |4	 |5	   |6	 |down
//1----|-----|-----|-----|---------------
//	   |7	 |8	   |9	 |change
//2----|-----|-----|-----|---------------
//	   |*	 |0	   |#	 |enter
//3----|-----|-----|-----|---------------

//***************************************
//响蜂鸣器(喇叭)
sbit BB=P1^7;
void beep(unsigned char t)
{
	unsigned char i;
	unsigned int j;
	for(j=0;j<t*256;j++)
	{
		for(i=100;i>0;i--);//给i赋的初值决定输出的频率
		BB=~BB;
	}
}

⌨️ 快捷键说明

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