admin管理员组

文章数量:1516870

矩阵键盘

在进行矩阵按键检测的时候,对于51单片机来说,由于IO输出电流较小,驱动能力不足,若用一个A号IO口去检测B号IO口,无论B口高电平还是低电平,A口皆是低电平;若A口置高,可用来检测B口的低电平。

 

IO.H文件

#ifndef _MATRIX_H_
#define _MATRIX_H_#include "STC15F2K60S2.h"
#include "delay.h"#define line0 P30
#define line1 P31
#define line2 P32
#define line3 P33
#define list0 P44
#define list1 P42
#define list2 P35
#define list3 P34extern bit flagSMGScreen;
extern bit numClear;
extern unsigned char num;
extern unsigned char countPress;void key_scan();#endif

.C文件

#include "matrix.h"bit flagSMGScreen=0;           //界面转换标志
bit numClear;                  //清零按键
unsigned char num;
unsigned char countPress;void  key_scan()
{	unsigned char temp;list0=1;list1=1;list2=1;list3=1; line0=0; line1=0; line2=0; line3=0;if(list0==0||list1==0||list2==0||list3==0){Delay5ms();if(list0==0||list1==0||list2==0||list3==0){list0=1;list1=1;list2=1;list3=1; line0=0; line1=0; line2=0; line3=0;if(list0==0) temp=1;if(list1==0) temp=2;if(list2==0) temp=3;if(list3==0) temp=4;list0=0;list1=0;list2=0;list3=0; line0=1; line1=1; line2=1; line3=1;if(line0==0) temp=temp-1;if(line1==0) temp=temp+3;if(line2==0) temp=temp+7;if(line3==0) temp=temp+11;}while(!line0 || !line1 || !line2 ||!line3)         //若按键一直按下去则一直在该}else temp = 20;                                        //while中循环switch(temp){case 0: temp=20; num=1; countPress++;break;          //countPress可检测case 1: temp=20; num=2; countPress++;break;          //按键按下的次数case 2: temp=20; num=3; countPress++;break;          //num指某个按键代表的值case 3: break;                                       //可任意修改case 4: temp=20; num=4; countPress++;break;case 5: temp=20; num=5; countPress++;break;case 6: temp=20; num=6; countPress++;break;case 7: break;case 8: temp=20; num=7; countPress++;break;case 9: temp=20; num=8; countPress++;break;case 10:temp=20; num=9; countPress++;break;case 11:break;case 12:temp=20; num=0; countPress++;break;case 13:temp=20; flagSMGScreen=~flagSMGScreen;countPress=0;break;               case 14:temp=20; numClear=1;countPress--; break;default: break;			}
}

 

本文标签: 矩阵键盘