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

📄 8x4keyboard.c

📁 8x4键盘扫描
💻 C
字号:
#include "main.h"

unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D, //0~4
             0x7D,0x07,0x7F,0x6F,0x77, //5~9
             0x7C,0x39,0x5E,0x79,0x71}; //A~F
 unsigned int kbscan(void);
 void delay();
 void dispaly(unsigned char );
 unsigned char key_value(unsigned int );      
	  
	  
void main() //主程序
 {unsigned char n;
  unsigned int k;
   while(1)
       {				  
        k=kbscan();
 		n=key_value(k);
        dispaly(n);
	   }
  }
	  
  unsigned int kbscan()
{	unsigned char col,row;
	unsigned int temp; //col表示列,row表示行,temp表示16位数高8位存放列,低8位存放行
	//unsigned char array;//存放p2的低四位
	//array=P2&0x0f; 
	//array=0x00; 
	P2=0xf0;P1_2=0;  //行线置低,检测列线的状态
	if((P0)!=0xff)	 //表示有键按下
	{delay();	  //防抖动
		if((P0)!=0xff)//确认按键 
		{  
         col=P0;//读取列值
		 P2=0xfe;//array=0x0e;//逐行扫描
		  while((P0)==0xff)
		   P2=((P2)<<1)|0x01;
		   row=P2&0x0f;//读取行线的状态
		   P1_2=~P1_2;
		   temp=row*256+col;
		   return(temp);
		}
		else return(0x0020);//无效标志
  	}
  else return(0x0020);//无效标志   
}

unsigned char key_value(unsigned int k)
{	unsigned char n;
	switch(k)		   
	{
		case 0x077f:n=1;break;
		case 0x07bf:n=2;break;
		case 0x07df:n=3;break;
		case 0x07ef:n=4;break;
		case 0x07f7:n=5;break;
		case 0x07fb:n=6;break;
		case 0x07fd:n=7;break;
		case 0x07fe:n=8;break;
		case 0x0b7f:n=9;break;
		case 0x0d7f:n=10;break;
		case 0x0e7f:n=11;break;
				
	}
	return n;
}
     
void delay()
{unsigned char i,j;
for(i=0;i<0xff;i++)
  for(j=0;j<0xff;j++);}


void dispaly(unsigned char k) //显示程序
      {	
       P3=table[k];delay();
       //P2_1=0;
      }

⌨️ 快捷键说明

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