1.矩阵键盘意义:利用矩阵扫描,减少I/O口的使用。
2.单片机中有两种扫描方式:
3.首先来看一下矩阵键盘的硬件原理图:
4.在进行矩阵键盘代码编辑时,应当注意以下几点:
a.矩阵键盘也为按钮,在编程时要注意按键的消抖(在本博主的另一篇文章独立按键控制LED亮灭可见)。b.在编程时首先要对P10~P17.先全赋值为高电平1.到后期要进行进行接通时要将电平改为0.
c.例如用S1进行举例,要想S1有效,那么一定要P1_7=0,P1_3=0.
这个时候便可以接通S1.
#include <REGX52.H> unsigned char MatrixKey() { unsigned char KeyNumber=0; P1=0xFF; P1_3=0; if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}//进行消抖 if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}//其中的KeyNumber表示要表示的数字 if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;} if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=13;} P1=0xFF; P1_2=0; if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;} if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;} if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;} if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=14;} P1=0xFF; P1_1=0; if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;} if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;} if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=11;} if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=15;} P1=0xFF; P1_0=0; if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;} if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;} if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=12;} if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=16;} return KeyNumber; }
51单片机中矩阵键盘零基础入门
最新推荐文章于 2024-12-21 20:51:22 发布
本文介绍了51单片机中矩阵键盘的入门知识,包括矩阵键盘的意义——通过扫描方式节省I/O口,讲解了两种扫描方式,并详细解析了矩阵键盘的硬件原理图。在编写代码时,特别强调了按键消抖处理和电平控制的重要性,例如使能S1按键需设置P1_7和P1_3为0。



1473

被折叠的 条评论
为什么被折叠?



