预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第13章单片机实现4*4矩阵键盘控制项目学习内容13.1项目需求13.2项目工作原理分析一旦确定有按键已经稳定闭合后,接着判断为哪一个按键闭合,采用对按键进行扫描的方式,依次给每一条列线送低电平,其余各列都为高电平,并检测每次扫描的行状态。每当扫描输出某一列为低电平时,相继读入行线状态。若全为高电平,表示为低电平的这列没有按键闭合。否则行线不全部为高电平,表示为低电平的这列上有按键闭合。确定闭合按键的位置后,计算出按键值,产生按键码。在矩阵按键处理过程中,一旦检测到有按键闭合与确认按键已经稳定闭合期间,通过调用10-20ms延时子程序避开按键抖动问题。由于按键是机械器件,按下或者松开时有固定的机械抖动,抖动图如图所示。按键去抖分为硬件去抖和软件去抖,硬件去抖最简单的是按键两端并联电容,容量根据实验而定。软件去抖使用方便不增加硬件成本,容易调试,所以现在处理按键抖动问题大部分选择软件去抖。软件去抖操作步骤如下:①检测到按键按下后进行10-15ms延时,用于跳过这个抖动区域。②延时后再检测按键状态,如果没有按下表明是抖动或者干扰造成,如果仍旧按下,可以认为是真正的按下。并进行对应的操作。③同样按键释放后也要进行去抖动延时,延时后检测按键是否真正松开。采用单片机控制矩阵按键实现按键键码值显示的电路结构由51单片机最小系统、数码显示电路、数码驱动电路、矩阵键盘电路和电源供电电路组成。13.3项目硬件电路设计单片机控制矩阵键盘硬件电路原理图13.4项目软件程序设计系统软件设计流程图程序代码voidmain()//定义主函数{ucharkey;P1=0xff;//设置数码管位码端电平,显示按键上的按键码while(1){key=keyscan();//调用键盘扫描,switch(key){case0xee:P0=table[0];break;//显示按键码“0”case0xde:P0=table[1];break;//显示按键码“1”case0xbe:P0=table[2];break;//显示按键码“2”case0x7e:P0=table[3];break;//显示按键码“3”case0xed:P0=table[4];break;//显示按键码“4”case0xdd:P0=table[5];break;//显示按键码“5”case0xbd:P0=table[6];break;//显示按键码“6”case0x7d:P0=table[7];break;//显示按键码“7”case0xeb:P0=table[8];break;//显示按键码“8”case0xdb:P0=table[9];break;//显示按键码“9”case0xbb:P0=table[10];break;//显示按键码“a”case0x7b:P0=table[11];break;//显示按键码“b”case0xe7:P0=table[12];break;//显示按键码“c”case0xd7:P0=table[13];break;//显示按键码“d”case0xb7:P0=table[14];break;//显示按键码“e”case0x77:P0=table[15];break;//显示按键码“f”}}}voidsend_char(unsignedchartxd)//传送一个字符{SBUF=txd;while(!TI);//等特数据传送TI=0;//清除数据传送标志}voidsend_str()//传送字串{unsignedchari=0;uintj;while(str[i]!=0x00){SBUF=str[i];while(TI==0);//等特数据传送TI=0;//清除数据传送标志i++;//下一个字符}for(j=0;j<50000;j++);//延迟}13.5系统调试结果总结