MSP430F5529与常见的矩阵键盘

本文介绍了如何使用MSP430F5529单片机实现4x3和4x4矩阵键盘。通过初始化管脚和扫描方法检测按键,详细阐述了键盘的初始化、扫描过程,并提供了源代码链接。文章鼓励读者尝试使用中断方式进一步优化按键检测。
摘要由CSDN通过智能技术生成

第一篇文章先从简单的矩阵键盘开始吧~

源代码下载

本文提及的部分代码已上传到Github:戳这里

键盘外观

键盘外观一般是这个样子的,淘宝上常见的有4x4和4x3的,也有不是薄膜而是按键矩阵的键盘,但是原理都大同小异。
一个普普通通的4x4键盘

键盘原理图

键盘的原理图

一般来说,键盘有多少行多少列,就有行数+列数这么多的管脚。当按钮按下后,按钮所在行列开关合上,行列之间的管脚就连通了。

单片机实现

4x3键盘

根据键盘的原理图,不难想到我们要用管脚扫描的方式来检测哪个键按下。

将行管脚设为输入,列管脚设为输出(当然也可以反着来),每次只让一个列管脚为高电平,再检测行管脚的电平高低情况,即可检测键盘是哪个键按下了。

初始化管脚
void keyboard_init(){
   

 //设置行管脚为输入
 P3DIR &= ~BIT6; //P3.6端口设为输入
 P3REN |= BIT6;  //使P3.6能上拉/下拉电阻
 P3OUT &= ~BIT6;  //置P3.6为下拉电阻模式
 P3SEL &= ~BIT6; //P3.6为I/O接口

 P7DIR &= ~BIT0; //P7.0端口设为输入
 P7REN |= BIT0;  //使P7.0能上拉/下拉电阻
 P7OUT &= ~BIT0;  //置P7.0为下拉电阻模式
 P7SEL &= ~BIT0; //P7.0为I/O接口

 P6DIR &= ~BIT4; //P6.4端口设为输入
 P6REN |= BIT4;  //使P6.4能上拉/下拉电阻
 P6OUT &= ~BIT4;  //置P6.4为下拉电阻模式
 P6SEL &= ~BIT4; //P6.4为I/O接口

 P6DIR &= ~BIT3; //P6.3端口设为输入
 P6REN |= BIT3;  //使6.3能上拉/下拉电阻
 P6OUT &= ~BIT3;  //置P6.3为下拉电阻模式
 P6SEL &= ~BIT3; //P6.3为I/O接口

 //设置列管脚为输出
 P6DIR |= BIT2+BIT1+BIT0; //P6.2,1,0端口设为输出
 P6OUT &=~(BIT2+BIT1+BIT0);

}
扫描管脚

思路是在一个do-while循环里面,依次设置第一列、第二列……为高电平,然后检测第一行、第二行……的电平是否为高,如果为高则说明有按键按下,行列导通,跳出循环,返回按键值。

char scanKey(){
   
 //扫描列
 char key_value=0;
 unsigned char state=0;
 do{
   
     key_value=0;
     if(state==0){
   

         P6OUT |= BIT0;
         P6OUT 
  • 10
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值