欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

矩阵式键盘

发布时间:2023/12/10 58 豆豆
生活随笔 收集整理的这篇文章主要介绍了 矩阵式键盘 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

矩阵式键盘码值
最近正好学习到了矩阵式键盘,然而当时的我是这样的

这是什么东西!!于是当我决定向百度求助时,依旧一脸懵,但实践出真理嘛。秉持着这个理念,撸起袖子说干就干。

首先,我们要准备的器械有

  • Arduino uno(代替c51)
  • 4*4矩阵式键盘
  • 为了方便理解我将行列分别进行了编号

    左边四个接口为行数,右边四个为列数,分别对应第1,2,3,4行。

    接下来让我们看看那些码值

    哦,是不是一点头绪都没有,不急实验继续。

    注意,这里是keypad而不是keyboard

    #include <Key.h> #include <Keypad.h> //导入库 const byte ROWS = 4; //行数 const byte COLS = 4; //列数 char keys[ROWS][COLS] = {{'1', '2', '3', 'A'},{'4', '5', '6', 'B'},{'7', '8', '9', 'C'},{'*', '0', '#', 'D'}}; //生成数组keysbyte rowPins[ROWS] = {2, 3, 4, 5};byte colPins[COLS] = {6, 7, 8, 9}; //定义引脚号Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //设置初始化void setup() {Serial.begin(9600);}void loop() {char key = keypad.getKey(); //由键盘输入键值if (key != NO_KEY) { //当键盘输入不为空时Serial.println(key);}}

    OK,接下来让我们看看运行的结果

    在这里放上高低电平反转法的概念以便更方便地理解

  • 首先让P1口高四位为1,低四位为0。若有按键按下,则高四位中会有一个1翻转为0,低四位不会变,此时即可确定被按下的键的行位置。
  • 然后让P1口高四位为0,低四位为1。若有按键按下,则低四位中会有一个1翻转为0,高四位不会变,此时即可确定被按下的键的列位置。
  • 列值&行值 ,就是我们最后将会得到的码值。
  • 假设,当我们按下1时,我们可以由反转法得到,相对应的1号位为零,因此他的行值与列值分别为1110和1110,转换为十六进制则为ee,也就是说此时的1的码值为0xee.

    haha,这时,不就和之前的码值相对应了嘛,为了进一步验证其正确性我们再选取一个数进行验证。

    假设当8按下时,我们可以得到1011与1101,即 0xdb。

    到此对于码值我们应该明白是怎么一回事了,回想当初原来是自己将数值弄反了【捂脸】,当然这也是我个人基于百度的理解,如有错误还请谅解指出。

    总结

    以上是生活随笔为你收集整理的矩阵式键盘的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。