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单片 机中讲的 也多啦,但是第一次看到板子是结合独立按键和矩阵键盘一起的 ,,日、、看来软件的功能是宇宙级别的呀。。。
MSP430矩阵及独立键盘的更多相关文章
- 十天学会单片机Day2键盘检测(独立键盘、矩阵键盘)
1.键盘的分类 编码键盘:键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘 非编码键盘:靠软件编程来识别的称为非编码键盘.独立键盘.矩阵键盘 2.按键消抖 ...
- AD按键-矩阵按键-独立按键:
原理:利用数组分压+AD采集: 优点:一个IO口可以做成多个按键,节省IO口(矩阵键盘在>4时优点才能体现出来):可备用作为AD基准输入. 缺点:不能做成组合按键(或者电阻要精确选择):且离IO ...
- OpenGL矩阵类(C++)
概述 创建&初始化 存取器 矩阵运算 变换函数 实例:模型视图矩阵 实例:投影矩阵 概述 OpenGL固定功能管线提供4个不同类型的矩阵(GL_MODELVIEW.GL_PROJECTION. ...
- ATmega8仿真——键盘扫描的学习
1.按键的使用特点 按键的应用主要是在按键闭合时改变电路的电平,但是一般情况下按键的开关都是机械弹性触点开关,即利用触点的接触和分离来实现电路的通断,所以在按键按下和释放时往往会产生抖动干扰. 消除抖 ...
- OpenGL矩阵类(C++) 【转】
http://www.cnblogs.com/hefee/p/3816727.html OpenGL矩阵类(C++) 概述 创建&初始化 存取器 矩阵运算 变换函数 实例:模型视图矩阵 实例: ...
- MCU 51-4 独立按键&编码按键
独立按键: 按键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动的过程,抖动必须清除. 按键按下一次,数码管数值加1: #include<re ...
- Blazor组件自做八 : 使用JS隔离封装屏幕键盘kioskboard.js组件
1. 运行截图 演示地址 2. 在文件夹wwwroot/lib,添加kioskboard子文件夹,添加kioskboards.js文件 2.1 常规操作,懒加载js库, export function ...
- 实验1 单片机IO口应用及数码管显示
1. 单片机驱动蜂鸣器的实验: a) 说明:Lab51单片机实验板的蜂鸣器连接到单片机的P1.5 b) 基本要求:控制蜂鸣器每2秒响0.5秒. #include &l ...
- AVRmega16 LED 例程
AVRmega16 LED 例程 ...
随机推荐
- C 语言控制台实现五子棋项目
花了一天时间实现了控制台五子棋项目,把项目贴上来.也算是告一段落了. 为了进一步了解C语言编程,熟悉优秀的编码风格,提升编码能力,丰富项目经验.所以在编程初期选择了控制台小游戏<单机五子棋> ...
- js基础第八天
返回前面起第一个字符位置 indexOf("sdfsdf");它是从左边索引为0开始数,而且只找第一个,然后返回该字符的位置.返回是个数值.如果找不到该字符,那么就会返回-1. 返 ...
- 问题:关于一个贴友的js留言板的实现
需求:用js做一个简单的留言板效果 html部分: 1: <!DOCTYPE> 2: <html lang="zh-en"> 3: <head> ...
- Pyhton 一行代码求Fibonacci第N项
递归定义很简单,效率当然很低下,且极易超出栈空间大小. 这样做纯粹是为了体现python的语言表现力而已, 并没有任何实际意义. def fib(x): return fib(x-1) + fib(x ...
- POJ 2955 Brackets 区间合并
输出一个串里面能匹配的括号数 状态转移方程: if(s[i]=='('&&s[j]==')'||s[i]=='['&&s[j]==']') dp ...
- 各个版本的spring jar包
http://repo.spring.io/release/org/springframework/spring/ 里面有各个版本的jar包
- iOS-关于微信支付
突然发现的一篇文章,这位博主介绍的还是挺详细的,给大家分享一下 不懂的也可以咨询我qq:564702640 1.申请接入 详见 微信支付申请接入 . 创建应用+审核通过,你将得到:APP_ID.APP ...
- iOS block的用法
本章学习目标: 1. 了解何谓block. 2. 了解block的使用方法. Block 是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程式设计的范围,对初学者来说也不是很容 ...
- IAR stm8带库的工程模板
下载:http://pan.baidu.com/share/link?shareid=2243555626&uk=2483252218
- eclipse快捷键补充
编辑相关快捷键 注释 Ctrl + / 快速修复 Ctrl + 1 删除当前行 Ctrl + d 格式化文档 Ctrl + Shift + f 插入空行 Shift + ...