《44矩阵键盘51单片机识别实验与程序》由会员分享,可在线阅读,更多相关《44矩阵键盘51单片机识别实验与程序(7页珍藏版)》请在金锄头文库上搜索。
1、莆田装修,莆田装修公司,http:/ 144 矩阵键盘 51 单片机识别实验与程序1 实验任务 如图 4.14.2 所示,用 AT89S51 的并行口 P1 接 44 矩阵键盘,以 P1.0P1.3作输入线,以 P1.4P1.7 作输出线;在数码管上显示每个按键的“0F”序号。对应的按键的序号排列如图 4.14.1 所示 图 4.14.1 2 硬件电路原理图 莆田装修,莆田装修公司,http:/ 2图 4.14.2 3 系统板上硬件连线 (1 把“单片机系统“区域中的 P3.0P3.7 端口用 8 芯排线连接到“4X4 行列式键盘”区域中的 C1C4R1R4 端口上; (2 把“单片机系统”区
2、域中的 P0.0/AD0P0.7/AD7 端口用 8 芯排线连接到“四路静态数码显示模块”区域中的任一个 ah 端口上;要求:P0.0/AD0 对应着 a,P0.1/AD1 对应着 b,P0.7/AD7 对应着 h。 4 程序设计内容 (1 44 矩阵键盘识别处理 (2 每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和 CPU 通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接 VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭
3、合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 5 程序框图 莆田装修,莆田装修公司,http:/ 3图 4.14.3 C 语言源程序#include unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char temp;unsigned char key;unsigned char i,j;vo
4、id main(void)while(1)莆田装修,莆田装修公司,http:/ 4P3=0xff;P3_4=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f;switch(temp)case 0x0e:key=7;break;case 0x0d:key=8;break;case 0x0b:key=9;break;case 0x07:key=10;break;temp=P
5、3;P1_0=P1_0;P0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f;P3=0xff;P3_5=0;莆田装修,莆田装修公司,http:/ 5temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f;switch(temp)case 0x0e:key=4;break;case 0x0d:k
6、ey=5;break;case 0x0b:key=6;break;case 0x07:key=11;break;temp=P3;P1_0=P1_0;P0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f;P3=0xff;P3_6=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)莆田装修,莆田装修公司,http:/ 6for(i=50;i0;i-)for(j=200;j0;j-);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;
7、temp=temp & 0x0f;switch(temp)case 0x0e:key=1;break;case 0x0d:key=2;break;case 0x0b:key=3;break;case 0x07:key=12;break;temp=P3;P1_0=P1_0;P0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f;P3=0xff;P3_7=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);莆田装修,莆田装修公司,http:/ 7temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f;switch(temp)case 0x0e:key=0;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;temp=P3;P1_0=P1_0;P0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f;