51单片机矩阵键盘检测程序

原创 2013年12月05日 17:07:44
#include<reg52.h>  

#define uchar unsigned char
#define uint  unsigned int

uchar code table[]={
0xc0,0xf9,0xa4,0xb0, 
0x99,0x92,0x82,0xf8, 
0x80,0x90,0x88,0x83, 
0xc6,0xa1,0x86,0x8e};

void delayms(uint a)
{
uint x,y;
for(x=a;x>0;x--)
for(y=110;y>0;y--);
}

uchar keyscan()
{
uchar  temp;
static uchar keyvalue=0;   //定义静态按键值,否则每次进来会清零,也可以定义全局变量
P1=0xfe;   //清零P1口第0位,检测
temp=P1&0xf0;
if(temp!=0xf0)
{
delayms(5);  
temp=P1&0xf0;
if(temp!=0xf0)
{
if(temp==0xe0)
keyvalue=1;       //test
if(temp==0xd0)
keyvalue=2;
if(temp==0xb0)
keyvalue=3;
if(temp==0x70)
keyvalue=4;
}
while(temp!=0xf0)//等待松手,很重要
temp=P1&0xf0;//一直检测输入状态
}
P1=0xfd; //清零P1口第1位,检测
temp=P1&0xf0;
if(temp!=0xf0)
{
delayms(5);  
temp=P1&0xf0;
if(temp!=0xf0)
{
if(temp==0xe0)
keyvalue=5;       //test
if(temp==0xd0)
keyvalue=6;
if(temp==0xb0)
keyvalue=7;
if(temp==0x70)
keyvalue=8;
}
while(temp!=0xf0)//等待松手,很重要
temp=P1&0xf0;//一直检测输入状态
}
P1=0xfb;    //清零P1口第2位,检测
temp=P1&0xf0;
if(temp!=0xf0)
{
delayms(5);  
temp=P1&0xf0;
if(temp!=0xf0)
{
if(temp==0xe0)
keyvalue=9;       //test
if(temp==0xd0)
keyvalue=10;
if(temp==0xb0)
keyvalue=11;
if(temp==0x70)
keyvalue=12;
}
while(temp!=0xf0)//等待松手,很重要
temp=P1&0xf0;//一直检测输入状态
}
P1=0xf7;      //清零P1口第3位,检测
temp=P1&0xf0;
if(temp!=0xf0)
{
delayms(5);  
temp=P1&0xf0;
if(temp!=0xf0)
{
if(temp==0xe0)
keyvalue=13;       //test
if(temp==0xd0)
keyvalue=14;
if(temp==0xb0)
keyvalue=15;
if(temp==0x70)
keyvalue=16;
}
while(temp!=0xf0)//等待松手输入状态
temp=P1&0xf0;//一直检测输入状态
}

return (keyvalue);  //返回键值
}
int main(void)
{
uchar num=1;
P0=0xff;   //作外部输入时要初始化
while(1)
{
 num=keyscan();
 P0=table[num-1];
}
}

相关文章推荐

51单片机 矩阵键盘检测

  • 2013年01月09日 20:04
  • 11KB
  • 下载

C51单片机矩阵键盘扫描去抖程序,新手必读

C51单片机矩阵键盘扫描去抖程序   最近有一个C51的项目,用的是新华龙的C51 F020单片机。项目中要实现4*5的矩阵键盘。矩阵电路图如下如示   其中,四条列线接在F020...

基于51单片机矩阵键盘程序

/*用矩阵键盘输入数字在数码管显示*/矩阵键盘代码的编写有点像VHDL 编码器的书写,很多那些数字都是根据唯一的扫描位置来定,也就是说这些数字可以任意设置,主要就是巧妙在“0xf0&0xfe” 通过这...

51单片机矩阵键盘类c程序

  • 2012年05月06日 16:21
  • 366KB
  • 下载

51单片机的数码管和矩阵键盘

使用4*4的矩阵键盘和一个数码管 在4*4的矩阵键盘上编码0-F的字符,和一个数码管显示每个键盘上输入的字符。 //4*4键盘检测程序,按下键后相应的代码显示在数码管上 #include typ...

51单片机矩阵键盘C程序

  • 2012年09月15日 17:07
  • 28KB
  • 下载

51单片机外设之——矩阵键盘(传统法一)

前面提到了独立按键,可见,独立按键是由矩阵键盘分离而来的。接下来看的是 4*4 的矩阵键盘,这里使用的还是上节所使用的,延时消抖检测。 先附上矩阵键盘的原理图: 在使用据矩阵键盘时,J5 排针...

51单片机STC89C52 矩阵键盘数码管显示

WELA BIT P2.7 DULA BIT P2.6 DIOLA BIT P2.5 FM BIT P2.3 ORG 0000H SETB DIOLA MOV SP,#0E0H LO...

51单片机———矩阵键盘

/*矩阵键盘,程序的思路是先进行扫描,记录下行值,后列扫描,记录下列值, 然后根据行列的值确定按键 硬件: P2口接八段数码管的段位,P2[0:7] = SEG[A-G,DP] P0口接键盘,即...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:51单片机矩阵键盘检测程序
举报原因:
原因补充:

(最多只允许输入30个字)