#include <msp430x14x.h>
#include"1602.c"
#include"1602.h"
#define uchar unsigned char
#define uint unsigned int
uchar key_flag;
uchar key_value;
/********时钟初始化*************/
void init_clk()
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
BCSCTL2|=SELM1+SELS+DIVS_3;//MCLK 8M and SMCLK 1M
do
{
IFG1 &= ~OFIFG; //清除振荡错误标志
for(i = 0; i < 100; i++)
_NOP(); //延时等待
}
while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待
IFG1&=~OFIFG;
}
/*********************延时***********/
void delay(uchar k)
{
uint i,j;
for(i=0;i<k;i++)
for(j=0;j<121;j++)
;
}
/*************快速扫描**********/
void fast_scan()
{
uchar temp;
P1OUT&=0x0F;
temp=P1IN&0x0F;
if(temp==0x0F)
key_flag=0;
else key_flag=1;
}
/****************等待按键释放********/
void over()
{
uchar temp;
P1OUT&=0x0F;
while(1)
{
temp=P1IN&0x0F;
if(temp==0x0F)
break;
}
}
/****************键值程序**************/
uchar get_key()
{
uchar tmp1,tmp2,key,i,j;
P1DIR|=0xFF;
P1OUT=0xF0;//低四位输出0
P1DIR=0x0F;//高四位输入
tmp1=P1IN&0xF0;//读入高四位的值
switch(tmp1)
{
case 0xE0:i=0;break;
case 0xD0:i=1;break;
case 0xB0:i=2;break;
case 0x70:i=3;break;
default:i=4;break;
}
P1DIR=0xFF;
P1OUT=0x0F;//高四位输出0
P1DIR=0xF0;//低四位输入
tmp2=P1IN&0x0F;//读入低四位的值
switch(tmp2)
{
case 0x0E:j=0;break;
case 0x0D:j=1;break;
case 0x0B:j=2;break;
case 0x07:j=3;break;
default:j=4;break;
}
_NOP();
key=j*4+i;
return key;
}
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
uchar dis[3];
P3DIR|=BIT0+BIT1+BIT2;
P4DIR=0xFF;
P1OUT=0xFF;
P1DIR=BIT4+BIT5+BIT6+BIT7;
init_clk();
init_LCD();
display("The key is: ",0,0);
while(1)
{
fast_scan();
if(key_flag==0)
continue;
key_flag=0;
delay(20);
fast_scan();
if(key_flag==1)
{
key_value=get_key();
dis[0]=key_value/10+48;
dis[1]=key_value%10+48;
dis[2]='\0';
display(dis,7,1);
P1DIR=BIT4+BIT5+BIT6+BIT7;
over();
delay(100);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
msp430_key.rar_msp430 4x4
共14个文件
c:2个
ewp:1个
eww:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 174 浏览量
2022-09-20
17:39:37
上传
评论
收藏 24KB RAR 举报
温馨提示
"msp430_key.rar_msp430 4x4" 指的是一个关于使用msp430F149微控制器实现4x4键盘的项目压缩包。这个标题揭示了该资源可能包含的是一个针对TI公司的msp430系列微控制器的开发案例,特别是型号为msp430F149的芯片,以及如何用它来设计和管理一个4x4矩阵键盘。 中的"采用msp430F149为控制器,使用反转法是实现4x4键盘"表明,项目的核心技术是利用msp430F149的I/O端口来检测4x4键盘的按键输入。4x4键盘是由16个按键组成的矩阵,通常在嵌入式系统中用于用户输入。反转法,也称扫描法,是一种常见的键盘处理方法,通过循环扫描行和列线来检测按键状态,从而确定哪个键被按下。 在4x4键盘的反转法实现中,微控制器会逐行或逐列驱动键盘矩阵的行线,同时读取列线的电平变化。当一个按键被按下时,对应的行线和列线之间的连接会使电路闭合,改变行线或列线的电平状态,微控制器据此识别出被按下的键。 "msp430_4x4"进一步明确了主题,强调了这个项目专注于msp430系列MCU与4x4键盘接口的设计。 【压缩包子文件的文件名称】"KEY_last_反转"可能表示这是关于键盘扫描的最后版本或优化后的代码,其中“反转”与描述中的反转法相对应,很可能是一个源代码文件或文档,记录了具体的编程实现细节,包括键盘扫描的算法、中断处理、按键消抖等关键部分。 这个压缩包包含了一个基于msp430F149的4x4矩阵键盘设计实例,重点在于如何运用反转法有效地读取和处理按键输入。学习者可以从中了解 MSP430 微控制器的I/O操作,以及如何编写相应的软件代码来实现键盘扫描功能,这对于想要进行嵌入式系统开发的人来说是非常有价值的资源。
资源推荐
资源详情
资源评论
收起资源包目录
msp430_key.rar (14个子文件)
KEY_last_反转
KEY_1.ewp 44KB
1602.h 261B
main.c 2KB
KEY_1.dep 2KB
KEY_1.eww 159B
settings
KEY_1.wsdt 3KB
KEY_1.cspy.bat 2KB
KEY_1.dni 990B
KEY_1.dbgdt 4KB
1602.c 2KB
Debug
List
Exe
KEY_1.d43 20KB
Obj
main.r43 20KB
KEY_1.pbd 124B
KEY_1.ewd 13KB
共 14 条
- 1
资源评论
朱moyimi
- 粉丝: 75
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C语言和汇编语言的简单操作系统内核.zip
- (源码)基于Spring Boot框架的AntOA后台管理系统.zip
- (源码)基于Arduino的红外遥控和灯光控制系统.zip
- (源码)基于STM32的简易音乐键盘系统.zip
- (源码)基于Spring Boot和Vue的管理系统.zip
- (源码)基于Spring Boot框架的报表管理系统.zip
- (源码)基于树莓派和TensorFlow Lite的智能厨具环境监测系统.zip
- (源码)基于OpenCV和Arduino的面部追踪系统.zip
- (源码)基于C++和ZeroMQ的分布式系统中间件.zip
- (源码)基于SSM框架的学生信息管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功