标题:
msp430f1612矩阵键盘源码用数码管显示键值
[打印本页]
作者:
磊磊磊1
时间:
2018-8-9 20:33
标题:
msp430f1612矩阵键盘源码用数码管显示键值
#include<msp430f1612.h>
unsigned
char
const
table[]={
0x3f
,
0x06
,
0x5b
,
0x4f
,
0x66
,
0x6d
,
0x7d
,
0x07
,
0x7f
,
0x6f
,
0x77
,
0x7c
,
0x39
,
0x5e
,
0x79
,
0x71
};
//数码管的段位
//定义共阴极数码管段选码表,无小数点
static
char
key;
//定义静态变量key(用来记录键盘编码)
//系统默认时钟源dco,时钟aclk,频率800k
void
delayus(
unsigned
int
t)
//延时函数
{
unsigned
int
i;
while
(t--)
for
(i=
1330
;i>
0
;i--);
//实际测得时间1ms,根据示波器
}
char
keyscan(
void
)
//扫描模块
{
char
sccode,recode;
//定义行,列键盘编码
P3OUT=
0x00
;
//p3输出端口全部置低
if
((P3IN&
0xf0
)!=
0xf0
)
//去掉抖动模块,判断是否有键抖动,如果是返回
{
delayus(
20
);
//延时20ms
if
((P3IN&
0xf0
)!=
0xf0
)
//再次判断是否有键抖动,如果是返回
{
sccode=
0xfe
;
//将第一行置低(p3.0),用来扫描
while
((sccode&
0x0f
)!=
0x0f
)
//按位与&;尽量取0.行扫描完成
{
P3OUT=sccode;
//输出行扫描码
if
((P3IN&
0XF0
)!=
0XF0
)
//当前有键闭合 ,因为in是后四位所以f0
{
recode=(P3IN&
0XF0
)|
0X0F
;
//读取高4位列值,低四位置一(配合行码)
//按位或尽量取1
key=(sccode&recode);
//行和列组合得到键盘编码
return
key;
//返回静态变量key
}
else
//所扫描行没有键闭合
{
sccode=(sccode<<
1
)|
0x01
;
//行扫描码左移一位,就换到了下一行置0
//按位或尽量取1
}
}
}
return
0xff
;
//没有键闭合则返回
}
return
0xff
;
//没有键闭合则返回 ?
}
char
getkeyval(
char
keycode)
{
char
keyval;
switch
(keycode)
{
case
0x77
:
//0b01110111
keyval=
0
;
break
;
case
0x7b
:
//0b01111011
keyval=
1
;
break
;
case
0x7d
:
//0b01111101
keyval=
2
;
break
;
case
0x7e
:
//
keyval=
3
;
break
;
case
0xb7
:
keyval=
4
;
break
;
case
0xbb
:
keyval=
5
;
break
;
case
0xbd
:
keyval=
6
;
break
;
case
0xbe
:
keyval=
7
;
break
;
case
0xd7
:
keyval=
8
;
break
;
case
0xdb
:
keyval=
9
;
break
;
case
0xdd
:
keyval=
10
;
break
;
case
0xde
:
keyval=
11
;
break
;
case
0xe7
:
keyval=
12
;
break
;
case
0xeb
:
keyval=
13
;
break
;
case
0xed
:
keyval=
14
;
break
;
case
0xee
:
keyval=
15
;
break
;
default
:keyval =
255
;
}
return
keyval;
}
void
main(
void
)
{
WDTCTL=WDTPW+WDTHOLD;
//关狗
P1DIR=
0XFF
;
//全部输出
P1SEL=
0X00
;
//功能设置为普通i/o端口
P1OUT=
0X00
;
//p1out全部置低
P3DIR=
0X0F
;
//p3.4~p3.7键盘输入,p3.0~p3.3键盘扫描信号输出输出
while
(
1
)
{
key=getkeyval(keyscan());
//key取扫描值
if
(key!=
255
)
//key是正常值,按键有效
{
P1OUT=table[key];
//p1out输出扫描码显示在数码管上
}
}
}
}
矩阵键盘.zip
2018-8-9 20:33 上传
点击文件名下载附件
下载积分: 黑币 -5
1.54 KB, 下载次数: 18, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1