矩阵键盘的键值计算及编程_第1页
矩阵键盘的键值计算及编程_第2页
矩阵键盘的键值计算及编程_第3页
矩阵键盘的键值计算及编程_第4页
矩阵键盘的键值计算及编程_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、线线 反反 转转 法法44矩阵键盘的键值计算及编程矩阵键盘的键值计算及编程51单片机C语言编程及Proteus仿真景德镇学院机电系景德镇学院机电系.j本讲主要内容本讲主要内容键值计算基本原理1读取I/O口值的练习2键盘的键值计算3键盘扫描编程_线反转法4一个数码管显示矩阵键盘值的实验5景德镇学院机电系景德镇学院机电系.j1 键值计算基本原理键值计算基本原理_“好人被带坏好人被带坏”v 默认状态:单片机通电复位后默认状态:单片机通电复位后P1 P2 P3口每个脚口每个脚都输出高电平,都输出高电平,P0口要接上拉电阻才能输出高电平。口要接上拉电阻才能输出高电平。 a 各脚状态标记都是红色方块。各脚

2、状态标记都是红色方块。 b 用电压测量都是用电压测量都是5V。景德镇学院机电系景德镇学院机电系.j1 键值计算基本原理键值计算基本原理_“好人被带坏好人被带坏”v 要使一个引脚变为低电平有如下方法:要使一个引脚变为低电平有如下方法: a 接地。接地。 b 用逻辑状态信号人为改变。用逻辑状态信号人为改变。 c 编写程序使其输出低电平。编写程序使其输出低电平。 景德镇学院机电系景德镇学院机电系.j1 键值计算基本原理键值计算基本原理_“好人被带坏好人被带坏”v 一个低电平引脚与高电平引脚相接,结果如何?一个低电平引脚与高电平引脚相接,结果如何? 实验结果:实验结果:“好人被带坏好人被带坏”,即高电

3、平引脚电压被变,即高电平引脚电压被变低。低。景德镇学院机电系景德镇学院机电系.j2 读取读取I/O口值的练习口值的练习v 一般都是自高到低读出一个端口各脚电平一般都是自高到低读出一个端口各脚电平 ,得到,得到8位二进制位二进制数,再将数,再将8位二进制转换成位二进制转换成2位十六进数。位十六进数。 P1口值口值=P1.7 P1.6 P1.5 P1.4P1.3 P1.2 P1.1 P1.0 =1101 1111=0 x df P3口值口值= P3.7 P3.6 P3.5 P3.4P3.3 P3.2 P3.1 P3.0 =1111 1010=0 xfa P1口高四位是指:口高四位是指:P1.7 P

4、1.6 P1.5 P1.4 P1口低四位是指:口低四位是指:P1.3 P1.2 P1.1 P1.0 景德镇学院机电系景德镇学院机电系.j2 读取读取I/O口值的练习口值的练习v 用程序控制单片机用程序控制单片机P2口工作,让高四位全高电平,低四位口工作,让高四位全高电平,低四位全低电平。全低电平。 即:即:P2=0 xf0; 具体实现见操作,结果如图。具体实现见操作,结果如图。 景德镇学院机电系景德镇学院机电系.j2 读取读取I/O口值的练习口值的练习v 当当 P2=0 xf0; 外接一个两脚开关到外接一个两脚开关到P2口只能让口只能让P2产生如产生如下四个新的值:下四个新的值: 0 xe0,

5、 0 xd0,0 xb0,0 x70 0 xe0 0 x70 景德镇学院机电系景德镇学院机电系.j2 读取读取I/O口值的练习口值的练习v 当当 程序使程序使P2=0 x0f; 外接一个两脚开关到外接一个两脚开关到P2口只能让口只能让P2产生如下四个新的值:产生如下四个新的值: 0 x0e, 0 x0d,0 x0b,0 x07 0 x0d 0 x0b 景德镇学院机电系景德镇学院机电系.j2 读取读取I/O口值的练习口值的练习总结总结开关接通后,如果两引脚上电平不同时,会将高电平引脚电压变低。开关接通后,如果两引脚上电平不同时,会将高电平引脚电压变低。 景德镇学院机电系景德镇学院机电系.j3 键

6、盘的键值键盘的键值P2口接有口接有44 键盘,低四位做行线,高四位做列线。键盘,低四位做行线,高四位做列线。 景德镇学院机电系景德镇学院机电系.j3 键盘的键值键盘的键值找行线值时,程序使找行线值时,程序使P2=0 x0f; P2.0行线上开关按下会使行线上开关按下会使P2口值变为口值变为 0 x0e, 其余同理。其余同理。 景德镇学院机电系景德镇学院机电系.j3 键盘的键值键盘的键值找列线值时,程序使找列线值时,程序使P2=0 xf0; P2.7列线上开关按下会使列线上开关按下会使P2口值变为口值变为 0 x70, 其余同理。其余同理。 景德镇学院机电系景德镇学院机电系.j3 键盘的键值键盘

7、的键值键盘的键值键盘的键值 位置位置 键值键值(1行,行,1列)列) e0+0e=ee (1行,行,2列)列) d0+0e=de (1行,行,3列)列) b0+0e=be (1行,行,4列)列) 70+0e=7e (2行,行,1列)列) e0+0d=ed (2行,行,2列)列) d0+0d=dd (2行,行,3列)列) b0+0d=bd (2行,行,4列)列) 70+0d=7d (3行,行,1列)列) e0+0b=eb (3行,行,2列)列) d0+0b=db (3行,行,3列)列) b0+0b=bb (3行,行,4列)列) 70+0b=7b (4行,行,1列)列) e0+07=e7 (4行,

8、行,2列)列) d0+07=d7 (4行,行,3列)列) b0+07=b7 (4行,行,4列)列) 70+07=77 注:行列线的排列不同,键值分布也不同注:行列线的排列不同,键值分布也不同景德镇学院机电系景德镇学院机电系.j3 键盘的键值键盘的键值键盘的键值键盘的键值 位置位置 键值键值(1行,行,1列)列) e7(1行,行,2列)列) eb(1行,行,3列)列) ed(1行,行,4列)列) ee(2行,行,1列)列) d7(2行,行,2列)列) db(2行,行,3列)列) dd(2行,行,4列)列) de(3行,行,1列)列) b7 (3行,行,2列)列) bb(3行,行,3列)列) bd

9、 (3行,行,4列)列) be(4行,行,1列)列) 77(4行,行,2列)列) 7b(4行,行,3列)列) 7d(4行,行,4列)列) 7e 找出行线值找出行线值置行线所处端口位置高电平找出列线值找出列线值置列线所处端口位置高电平行线值行线值+列线值列线值=键值键值计算键值一般方法景德镇学院机电系景德镇学院机电系.j3 键盘的键值键盘的键值 总结总结44矩阵键盘的键值矩阵键盘的键值 共有共有16个,计算键值时总是:个,计算键值时总是: 先找出行线值,再找出列线值,最后绘出矩阵键盘的键先找出行线值,再找出列线值,最后绘出矩阵键盘的键值。值。 景德镇学院机电系景德镇学院机电系.j4 键盘扫描编程

10、键盘扫描编程_线反转法线反转法/*键盘扫子描函数键盘扫子描函数*/ char keyscan(void) /键盘扫描函数,键盘使用键盘扫描函数,键盘使用P2口口 char value_h,value_l; /value_h行值变量行值变量,value_l列值变量列值变量 P2=0 xf0; /将行线所处位置置高电平将行线所处位置置高电平 if(P2&0 xf0)!=0 xf0) /判断是否有键按下判断是否有键按下 delay(10); /延时防抖延时防抖 if(P2&0 xf0)!=0 xf0) /仍有键按下仍有键按下 value_h=P2&0 xf0; /读出读出P2口值给变量口值给变量va

11、lue_h P2=0 x0f; /将列线所处位置置高电平将列线所处位置置高电平 value_l=P2&0 x0f; /读出读出P2口值给变量口值给变量value_l return(value_l+value_h); /找到的键值返回给调用函数找到的键值返回给调用函数 景德镇学院机电系景德镇学院机电系.j4 键盘扫描编程键盘扫描编程_线反转法流程分析线反转法流程分析/*键盘扫子描函数键盘扫子描函数*/ char keyscan(void) /键盘扫描函数,键盘使用键盘扫描函数,键盘使用P2口口 char value_h,value_l; /value_h行值变量行值变量,value_l列值变量列

12、值变量 P2=0 xf0; /将行线所处位置置高电平将行线所处位置置高电平 if(P2&0 xf0)!=0 xf0) /判断是否有键按下判断是否有键按下 delay(10); /延时防抖延时防抖 if(P2&0 xf0)!=0 xf0) /仍有键按下仍有键按下 value_h=P2&0 xf0; /读出读出P2口值给变量口值给变量value_h P2=0 x0f; /将列线所处位置置高电平将列线所处位置置高电平 value_l=P2&0 x0f; /读出读出P2口值给变量口值给变量value_l return(value_l+value_h); /找到的键值返回给调用函数找到的键值返回给调用函数 景德镇学院机电系景德镇学院机电系.j5 一个数码管显示矩阵键盘值的实验一个数码管显示矩阵键

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论