在学习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单片 机中讲的 也多啦,但是第一次看到板子是结合独立按键和矩阵键盘一起的 ,,日、、看来软件的功能是宇宙级别的呀。。。

MSP430矩阵及独立键盘的更多相关文章

  1. 十天学会单片机Day2键盘检测(独立键盘、矩阵键盘)

    1.键盘的分类 编码键盘:键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘 非编码键盘:靠软件编程来识别的称为非编码键盘.独立键盘.矩阵键盘 2.按键消抖   ...

  2. AD按键-矩阵按键-独立按键:

    原理:利用数组分压+AD采集: 优点:一个IO口可以做成多个按键,节省IO口(矩阵键盘在>4时优点才能体现出来):可备用作为AD基准输入. 缺点:不能做成组合按键(或者电阻要精确选择):且离IO ...

  3. OpenGL矩阵类(C++)

    概述 创建&初始化 存取器 矩阵运算 变换函数 实例:模型视图矩阵 实例:投影矩阵 概述 OpenGL固定功能管线提供4个不同类型的矩阵(GL_MODELVIEW.GL_PROJECTION. ...

  4. ATmega8仿真——键盘扫描的学习

    1.按键的使用特点 按键的应用主要是在按键闭合时改变电路的电平,但是一般情况下按键的开关都是机械弹性触点开关,即利用触点的接触和分离来实现电路的通断,所以在按键按下和释放时往往会产生抖动干扰. 消除抖 ...

  5. OpenGL矩阵类(C++) 【转】

    http://www.cnblogs.com/hefee/p/3816727.html OpenGL矩阵类(C++) 概述 创建&初始化 存取器 矩阵运算 变换函数 实例:模型视图矩阵 实例: ...

  6. MCU 51-4 独立按键&编码按键

    独立按键: 按键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动的过程,抖动必须清除. 按键按下一次,数码管数值加1: #include<re ...

  7. Blazor组件自做八 : 使用JS隔离封装屏幕键盘kioskboard.js组件

    1. 运行截图 演示地址 2. 在文件夹wwwroot/lib,添加kioskboard子文件夹,添加kioskboards.js文件 2.1 常规操作,懒加载js库, export function ...

  8. 实验1 单片机IO口应用及数码管显示

    1.   单片机驱动蜂鸣器的实验: a)         说明:Lab51单片机实验板的蜂鸣器连接到单片机的P1.5 b)        基本要求:控制蜂鸣器每2秒响0.5秒. #include &l ...

  9. AVRmega16 LED 例程

                                                                                      AVRmega16 LED 例程   ...

随机推荐

  1. CenOS中下载RPM包

    在实施部署时,往往服务器环境无外网或无法访问国外网址.这是可以在本机虚拟机的CentOS环境中下载RPM. 方法一:yum yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了--down ...

  2. [GC]一个简单的Garbage Collector的实现

    前言: 最近看了google的工程师写的一个非常简单的垃圾收集器,大概200多行C代码,感叹大牛总能够把复杂的东西通过很简单的语言和代码表达出来.为了增加自己的理解,决定把大牛的想法和代码分析一遍,与 ...

  3. 【转】SQL中Group By的使用

    1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By All 7.Group By与聚合函 ...

  4. HW6.27

    import java.util.Scanner; import java.util.Arrays; public class Solution { public static void main(S ...

  5. ActivityNotFoundException: No Activity found to handle Intent

    代码如下: Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction ...

  6. DTD - Elements

    In a DTD, elements are declared with an ELEMENT declaration. Declaring Elements In a DTD, XML elemen ...

  7. android http 通信(java原生类库实现)

    get方式 private void doGet(){ URL httpurl = new URl(url); HttpURLConnection conn = (HttpURLConnection) ...

  8. MSSQLSERVER数据库- 配置数据库邮件配置的操作过程

    还是第一次发现数据库可以发邮件.查了一下百度,试了一下,发现可以. 1.简单了解数据库邮件的概念和使用的传输协议及系统体系: 数据库邮件是从 SQL Server 数据库引擎中发送电子邮件的企业解决方 ...

  9. xcode4的环境变量,Build Settings参数,workspace及联编设置

    转自:http://www.cnblogs.com/lancidie/archive/2013/04/08/3007566.html 一.xcode4中的环境变量 $(BUILT_PRODUCTS_D ...

  10. 【Android】 图片编辑:创建圆角图片

    创建圆角图片的方式大同小异,最简单的就是 9.png 美工做出来的就是.这种最省事直接设置就可以. 另外一种就是通过裁剪 这里的剪裁指的是依据原图我们自己生成一张新的bitmap,这个时候指定图片的目 ...