新闻  |   论坛  |   博客  |   在线研讨会
关于矩阵4*4键盘的程序
0750long | 2009-04-20 12:54:39    阅读:1917   发布文章

关于矩阵4*4键盘的程序

 

第一次写矩阵键盘的程序,有不对的地方,欢迎拍砖指正!

本人是用P3口做矩阵键盘的.

程序写法一(粗略的过程如下)

//************************键盘扫描位定义*************//

行定义.

sbit a="P3"^0;
sbit b="P3"^1;
sbit c="P3"^2;
sbit d="P3"^3;

//*********************键盘扫描主程序***********************//

void keyscan(void)
{
 uchar i,y,x=0;
   i=0xef;//先选择列,然后进行行扫描
 for(y=0;y<4;y++)//循环扫描键盘
 { 
  P3=i;
  if(a==0)//判断是否是第一行按下,如果是则
   break;//退出for循环,否则执行key++
   key++;
  if(b==0)
   break;
   key++;  
  if(c==0)
   break;
   key++; 
  if(d==0)
   break;
   key++;
  i=_crol_(i,1);//左移一位,进行下一列扫描,得用到头文件#include<intrins.h>
 }
}

//******************************************************************//

 

 

程序写法二:(粗略过程如下)-[其中一共阴数码管接P2口,键盘接P3口]

声明:延时函数,还有编码表我已经省略了

 uchar a,b,c;
  P2=0x00;//数码管不显示
 while(1)
  {
//*************键盘值扫描主程序************//
   P3=0X0f;
   a=P3;     //行
   delay(1);

   P3=0Xf0;
   b=P3;     //列
   delay(1); 
   c=a+b;//读取到的键盘值
//**********************************// 

//**********送数显示**************//  
   if(c==0xee)P2=tab[0];//c==0xee,识别出第一行第一列的键盘,以下类推
   if(c==0xde)P2=tab[1];
   if(c==0xbe)P2=tab[2];
   if(c==0x7e)P2=tab[3];
   if(c==0xed)P2=tab[4];
   if(c==0xdd)P2=tab[5];
   if(c==0xbd)P2=tab[6];
   if(c==0x7d)P2=tab[7];
   if(c==0xeb)P2=tab[8];
   if(c==0xdb)P2=tab[9];
   if(c==0xbb)P2=tab[10];
   if(c==0x7b)P2=tab[11];
   if(c==0xe7)P2=tab[12];
   if(c==0xd7)P2=tab[13];
   if(c==0xb7)P2=tab[14];
   if(c==0x77)P2=tab[15];
//**********************************// 
 }
}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客
站长统计