初学者必须经历的一个实验是4*4矩阵键盘的代码编写,如上图:

本文首先研究了如何用51单片机点亮发光二极管,以及基于CPLD-EPF10K10LC84-4的交通灯设计。首先,矩阵键盘的动态扫描有点复杂。不可能读取一个端口的数据,然后立即得到结果。这就需要依次扫描判断每一行的按键,然后得出结果。如上图所示,首先扫描第一行,即四个键的状态S1、S2、S3和S4。在PA端口输入0XFE。

0XFE变成二进制1111 1110。为了方便起见,请记住在每四个数字之间添加一个空空格。1111 1110这个数据放在PA端口,假设此时按下S1,会发生什么?PA0处于低电平,按下S1后打开S1,导致PA4的电平从1降到0,所以PA端口的数据变成1110 1110,十六进制为0XEE。所以我们知道S1受到了压力。

假设S3被压,会发生什么?PA6的电平下拉,PA的端口数据变成1011 1110,即0XBE。这样我们就知道,每一行的每一个键按下,都会有一个对应的唯一值。

这就是矩阵键盘的扫描原理!发个源码。

void matrixkeyscan

{

uchar temp,key

P3 = 0x Fe;

temp = P3;

temp = temp & amp0xf0

if

{

delay ms;

temp = P3;

temp = temp & amp0xf0

if

{

temp = P3;

开关

{

案例0xe:

key = 0;

打破;

案例0xde:

key = 1;

打破;

案例0xbe:

key = 2;

打破;

案例0x7e:

key = 3;

打破;

}

while

{

temp = P3;

temp = temp & amp0xf0

}

显示器;

}

}

P3 = 0 xfd;

temp = P3;

temp = temp & amp0xf0

if

{

delay ms;

temp = P3;

temp = temp & amp0xf0

if

{

temp = P3;

开关

{

案例0xed:

key = 4;

打破;

案例0xdd:

key = 5;

打破;

案例0xbd:

key = 6;

打破;

案例0x7d:

key = 7;

打破;

}

while

{

temp = P3;

temp = temp & amp0xf0

}

显示器;

}

}

P3 = 0 xfb;

temp = P3;

temp = temp & amp0xf0

if

{

delay ms;

temp = P3;

temp = temp & amp0xf0

if

{

temp = P3;

开关

{

案例0xeb:

key = 8;

打破;

案例0xdb:

key = 9;

打破;

案例0xbb:

key = 10

打破;

案例0x7b:

key = 11

打破;

}

while

{

temp = P3;

temp = temp & amp0xf0

}

显示器;

}

}

P3 = 0xf7;

temp = P3;

temp = temp & amp0xf0

if

{

delay ms;

temp = P3;

temp = temp & amp0xf0

if

{

temp = P3;

开关

{

案例0xe7:

key = 12

打破;

案例0xd7:

key = 13

打破;

案例0xb7:

key = 14

打破;

案例0x77:

key = 15

打破;

}

while

{

temp = P3;

temp = temp & amp0xf0

}

显示器;

}

}

}

以上所有信息仅用于学习和交流,不作为任何学习和业务标准。如果您对本文中的任何信息有任何异议,请随时提出。谢谢!

1.《键盘扫描原理 【硬件小百科】4*4矩阵键盘的扫描原理》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《键盘扫描原理 【硬件小百科】4*4矩阵键盘的扫描原理》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1740543.html