MSP430矩阵及独立键盘

简介:   在学习MSP430的时候,总是有很多东西记不住,同时又是英文的资料,好多东西也是没怎么看透,英文虽过六级但是看英文资料还是有一种想睡的冲动啊,在学习键盘的时候,我的这块板子有些不同,矩阵键盘和独立键盘公用的,组合式的按键。

  在学习MSP430的时候,总是有很多东西记不住,同时又是英文的资料,好多东西也是没怎么看透,英文虽过六级但是看英文资料还是有一种想睡的冲动啊,在学习键盘的时候,我的这块板子有些不同,矩阵键盘和独立键盘公用的,组合式的按键。。这是为了节约硬件的成本啊 。。。

  
  #define keyin    (P1IN & 0x0f)    //低四位保持不变,高4位清零,这个宏定义就是这个意思。

再写主函数的时候有这个语句:    P1DIR = BIT7;               //设置P1.0~P.3为输入状态,P.7为输出
                  P1OUT = 0;          //前面两句确定P1.0~P1.3是独立按键

这是用软件的方式把矩阵键盘独立化,当然P1=BIT7;这一句也可以把BIT7改为BITX(4~7),,这样是确定第几行是独立按键。确实节约了硬件成本啊 。

对于用按键的指示显示到数码管上,就说下数码管的初始化:如下语句

    P4DIR = 0xff;       //P4口对应段选信号
    P5DIR = 0xff;       //P5口对应位选信号
    P4OUT = 0x3f;
    P5OUT = 0xf7;       //4句初始化数码管的IO

有原理图可以知道,在P4.P5输出的时候是说明在第几位数码管上显示。

if(keyin != 0x0f)       //如果有键被按下,说明keyin中有低电平,进入语句中。
        {
            delay();            //延时消抖,人按键是个机械的过程,需要延时来解决,也可以减少硬件的弊端。
            if(keyin != 0x0f)   //再次检测按键状态
            {

    }

while(keyin != 0x0f);   //等待按键被放开,这相当于_nop()一个空语句,如果按键放开,keyin都是高,跳出,如果成立,则在WHILE语句里,说明按键没放开。

下面的程序也就是几种情况啦,用switch语句就可以解决。。。

 

还有一种方式是用中断的方式来读取四个独立式按键的键值还有解决一些其它问题。例如:

void main( void )
{  
    WDTCTL = WDTPW + WDTHOLD;   //关闭看门狗
    BoardConfig(0x88);          //打开数码管,关闭流水灯和电平转换
    
    P1IES = 0x0f;               // P1.0~P1.3选择下降沿中断
    P1IE = 0x0f;                // 打开中断使能
    P1DIR = BIT7;               //设置P1.0~P.3为输入状态,P.7为输出
    P1OUT = 0;
    P4DIR = 0xff;
    P5DIR = 0xff;
    P4OUT = 0x3f;
    P5OUT = 0xf7;
    _EINT();                    //打开全局中断控制位
    while(1)
    {
        LPM1;
        P4OUT = scandata[KeyVal];
    }
}

至于4X4键盘,在51和AVR单片 机中讲的 也多啦,但是第一次看到板子是结合独立按键和矩阵键盘一起的 ,,日、、看来软件的功能是宇宙级别的呀。。。

相关文章
|
2月前
详解步进电机的结构和三种控制模式
详解步进电机的结构和三种控制模式
74 0
详解步进电机的结构和三种控制模式
|
3月前
|
存储 监控 Go
【机组】单元模块实验的综合调试与驻机键盘和液晶显示器的使用方式
【机组】单元模块实验的综合调试与驻机键盘和液晶显示器的使用方式
65 0
|
4月前
双代号网络图绘制步骤
双代号网络图绘制步骤
双代号网络图绘制步骤
|
10月前
Altium Designer中元件重叠放置时,如何消除报错
Altium Designer中元件重叠放置时,如何消除报错
197 0
|
2月前
|
数据采集 网络协议 安全
Bently Nevada 132417-01 输入/输出模块4通道监视器输入/输出模块体系触点 行程倍增 用于将3500架置于行程中的描述
Bently Nevada 132417-01 输入/输出模块4通道监视器输入/输出模块体系触点 行程倍增 用于将3500架置于行程中的描述
|
19天前
|
C语言
独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”
独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”
|
25天前
|
前端开发
FOXBORO紧凑型 FCM2F2 现场总线通信模块
FCM是光纤通信模块,用于将200系列现场总线模块远程安装至工厂流程附近,提供2-10公里的基板间最大连接距离。FCM有FCM2F2, FCM2F4和FCM2F10三种型号,具备抗电气干扰能力,适用于高压环境或雷电区域。设计上,FCM采用挤压铝外壳,符合ISA S71.04标准,提供不同等级的防护,可热插拔且带有状态指示LED。底板能容纳最多8个FBM或FBM与FCM的组合,冗余配置需四个FCM,非冗余则只需一个。FCM通过光纤电缆连接,最远距离达20公里,而60米内可通过双绞线连接。FCM2F10需单模光纤电缆,特殊应用可能需要特定类型的电缆。
FOXBORO紧凑型 FCM2F2 现场总线通信模块
|
监控 网络协议
|
芯片 内存技术
PM902F 3BDH001000R0005 具有完全独立的输入数据线
PM902F 3BDH001000R0005 具有完全独立的输入数据线
78 0
PM902F 3BDH001000R0005 具有完全独立的输入数据线
JM
|
算法 数据可视化 C++
修改 UE5 中的渲染管线
前言本文重点介绍如何修改 UE5 中的渲染管线,要修改渲染管线有一些前置知识需要理解,因此笔者会先简单介绍下渲染管线的概念以及当前主流的渲染管线的实现思路,为后面在 UE5 中自定义渲染管线做铺垫;要注意本文默认渲染管线即是光栅化渲染管线(不考虑光线追踪),同时也不会介绍太多管线的实现细节和当下流行的优化版本,对渲染管线实现细节感兴趣的可以自行查阅相关资料。渲染管线 Rendering Pipel
JM
2344 0
修改 UE5 中的渲染管线