当前位置:文档之家› 矩阵键盘的键值计算及编程[严选材料]

矩阵键盘的键值计算及编程[严选材料]


定义 Value_h 行值变量 Value_l 列值变量
特意置: 行线高电平,列线 低电平,去找行值
delay(10); //延时防抖 if((P2&0xf0)!=0xf0) //仍有键按下
{ value_h=P2&0xf0; //读出P2口值给变量value_h
NO 行线高电平有 变化吗?
YES 延时,防抖
0x0d
0x0b
9
专业类别
2 读取I/O口值的练习
总结
开关接通后,如果两引脚上电平不同时,会将高电平引脚电压变 低。
10
专业类别
3 键盘的键值
P2口接有4×4 键盘,低四位做行线,高四位做列线。
11
专业类别
3 键盘的键值
找行线值时,程序使P2=0x0f; P2.0行线上开关按下会使P2口值变为 0x0e, 其余同理。
低。
5
专业类别
2 读取I/O口值的练习
❖ 一般都是自高到低读出一个端口各脚电平 ,得到8位二进制 数,再将8位二进制转换成2位十六进数。
P1口值=P1.7 P1.6 P1.5 P1.4P1.3 P1.2 P1.1 P1.0 =1101 1111=0x df P3口值= P3.7 P3.6 P3.5 P3.4P3.3 P3.2 P3.1 P3.0 =1111 1010=0xfa
if((P2&0xf0)!=0xf0) //判断是否有键按下
{
delay(10); //延时防抖
if((P2&0xf0)!=0xf0) //仍有键按下
{
value_h=P2&0xf0; //读出P2口值给变量value_h
P2=0x0f; //将列线所处位置置高电平
value_l=P2&0x0f; //读出P2口值给变量value_l
线反转法
4×4矩阵键盘的键值计算及编程
51单片机C语言编程及Proteus仿真
本讲主要内容
1
键值计算基本原理
2
读取I/O口值的练习
3
键盘的键值计算
4
键盘扫描编程__线反转法
5
一个数码管显示矩阵键盘值的实验
2
专业类别
1 键值计算基本原理__“好人被带坏”
❖ 默认状态:单片机通电复位后P1 P2 P3口每个脚 都输出高电平,P0口要接上拉电阻才能输出高电平。
a 各脚状态标记都是红色方块。 b 用电压测量都是5V。
3
专业类别
1 键值计算基本原理__“好人被带坏”
❖ 要使一个引脚变为低电平有如下方法:
a 接地。 b 用逻辑状态信号人为改变。 c 编写程序使其输出低电平。
4
专业类别Biblioteka 1 键值计算基本原理__“好人被带坏”
❖ 一个低电平引脚与高电平引脚相接,结果如何? 实验结果:“好人被带坏”,即高电平引脚电压被变
❖ 当 P2=0xf0; 外接一个两脚开关到P2口只能让P2产生如 下四个新的值: 0xe0, 0xd0,0xb0,0x70
0xe0
0x70
8
专业类别
2 读取I/O口值的练习
❖ 当 程序使P2=0x0f; 外接一个两脚开关到P2口只能让P2 产生如下四个新的值: 0x0e, 0x0d,0x0b,0x07
return(value_l+value_h); //找到的键值返回给调用函数
}
}
}
17
专业类别
4 键盘扫描编程__线反转法流程分析
/************键盘扫子描函数*******************/
char keyscan(void) //键盘扫描函数,键盘使用P2口
开始
{ char value_h,value_l; //value_h行值变量,value_l列值变量 P2=0xf0; //将行线所处位置置高电平 if((P2&0xf0)!=0xf0) //判断是否有键按下 {
P2=0x0f; //将列线所处位置置高电平 value_l=P2&0x0f; //读出P2口值给变量value_l
NO 行线高电平有 变化吗?
3 键盘的键值
注:行列线的排列不同,键值分布也不同
14
专业类别
计算键值一般方法
找出行线值
置行线所处端口位置高电平
找出列线值
置列线所处端口位置高电平
行线值+列线值=键值
3 键盘的键值
15
键盘的键值
位置
键值
(1行,1列) e7 (1行,2列) eb (1行,3列) ed (1行,4列) ee
(2行,1列) d7 (2行,2列) db (2行,3列) dd (2行,4列) de
值。
16
专业类别
4 键盘扫描编程__线反转法
/************键盘扫子描函数*******************/
char keyscan(void) //键盘扫描函数,键盘使用P2口
{
char value_h,value_l; //value_h行值变量,value_l列值变量
P2=0xf0; //将行线所处位置置高电平
P1口高四位是指:P1.7 P1.6 P1.5 P1.4 P1口低四位是指:P1.3 P1.2 P1.1 P1.0
6
专业类别
2 读取I/O口值的练习
❖ 用程序控制单片机P2口工作,让高四位全高电平,低四位 全低电平。 即:P2=0xf0;
具体实现见操作,结果如图。
7
专业类别
2 读取I/O口值的练习
12
专业类别
3 键盘的键值
找列线值时,程序使P2=0xf0; P2.7列线上开关按下会使P2口值变为 0x70, 其余同理。
13
专业类别
键盘的键值
位置
(1行,1列) (1行,2列) (1行,3列) (1行,4列) (2行,1列) (2行,2列) (2行,3列) (2行,4列)
键值
e0+0e=ee d0+0e=de b0+0e=be 70+0e=7e
(3行,1列) b7 (3行,2列) bb (3行,3列) bd (3行,4列) be
(4行,1列) 77 (4行,2列) 7b (4行,3列) 7d (4行,4列) 7e
专业类别
3 键盘的键值
总结
4×4矩阵键盘的键值 共有16个,计算键值时总是: 先找出行线值,再找出列线值,最后绘出矩阵键盘的键
e0+0d=ed d0+0d=dd b0+0d=bd 70+0d=7d
(3行,1列) (3行,2列) (3行,3列) (3行,4列)
e0+0b=eb
d0+0b=db b0+0b=bb 70+0b=7b
(4行,1列) (4行,2列) (4行,3列) (4行,4列)
e0+07=e7
d0+07=d7 b0+07=b7 70+07=77
相关主题