当前位置:   article > 正文

单片机中的矩阵键盘_单片机矩阵键盘代码

单片机矩阵键盘代码

一、对矩阵键盘有一定的了解

334ece05f6f34b8d91d03cac7205dfa8.png

二、了解矩阵键盘中“扫描”概念

8b8757c27ae04360830904a2602c8576.png

三、相应代码

 1.main.c

  1. #include <REGX52.H>
  2. #include "Delay.h"        //包含Delay头文件
  3. #include "LCD1602.h"    //包含LCD1602头文件
  4. #include "MatrixKey.h"    //包含矩阵键盘头文件
  5. unsigned char KeyNum;
  6. void main()
  7. {
  8.     LCD_Init();                            //LCD初始化
  9.     LCD_ShowString(1,1,"MatrixKey:");    //LCD显示字符串
  10.     while(1)
  11.     {
  12.         KeyNum=MatrixKey();                //获取矩阵键盘键码
  13.         if(KeyNum)                    //如果有按键按下
  14.         {
  15.      LCD_ShowNum(2,1,KeyNum,2);    //LCD显示键码 第二行第一列显示任意数字,长度为2
  16.         }
  17.     }
  18. }

2.MatrixKey.c

  1. #include <REGX52.H>
  2. #include "Delay.h"
  3. /**
  4.   * @brief  矩阵键盘读取按键键码
  5.   * @param  无
  6.   * @retval KeyNumber 按下按键的键码值
  7.             如果按键按下不放,程序会停留在此函数,松手的一瞬间,返回按键键码,没有按键按下时,返回0
  8.   */
  9. unsigned char MatrixKey()
  10. {
  11.     unsigned char KeyNumber=0;
  12.     //下面四行一组是分别扫描每一列的每一行 16个数字就有16组
  13.     P1=0xFF;
  14.     P1_3=0;
  15.     if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}//和前面消抖代码一样
  16.     if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}
  17.     if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;}
  18.     if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=13;}
  19.     
  20.     P1=0xFF;
  21.     P1_2=0;
  22.     if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;}
  23.     if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;}
  24.     if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;}
  25.     if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=14;}
  26.     
  27.     P1=0xFF;
  28.     P1_1=0;
  29.     if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;}
  30.     if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;}
  31.     if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=11;}
  32.     if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=15;}
  33.     
  34.     P1=0xFF;
  35.     P1_0=0;
  36.     if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;}
  37.     if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;}
  38.     if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=12;}
  39.     if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=16;}
  40.     
  41.     return KeyNumber;
  42. }

3.MatrixKey.h

  1. #ifndef __MatrixKey_H
  2. #define __MatrixKey_H
  3. unsigned char MatrixKey();//引用已经编写好的MatrixKey.c中的代码
  4. #endif

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号