运用3X4机械式按键+使用单片机IO构成矩阵式键盘+行列反转法+中断触发方式_第1页
运用3X4机械式按键+使用单片机IO构成矩阵式键盘+行列反转法+中断触发方式_第2页
运用3X4机械式按键+使用单片机IO构成矩阵式键盘+行列反转法+中断触发方式_第3页
运用3X4机械式按键+使用单片机IO构成矩阵式键盘+行列反转法+中断触发方式_第4页
运用3X4机械式按键+使用单片机IO构成矩阵式键盘+行列反转法+中断触发方式_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

微 机 测 控 电 路 课 程 设 计 题目 采用微机的键盘检测与提示电路及程序设计采用微机的键盘检测与提示电路及程序设计 方案方案 A A1616 院 系 机电及自动化学院 专 业 测控技术与仪器 2 班 学 号 0911212021 姓 名 农金德 级 别 2 0 0 9 指导老师 孙 炳 阳 2012 年 6 月 H Hu ua aq qi ia ao o u uniniv ve er rsitysity 1 目 录 一 绪论一 绪论 3 一 设计任务 3 二 4X4 机械式按键 3 三 使用单片机 I O 构成矩阵式键盘 3 四 行列反转法 3 五 中断触发方式 3 二 系统设置二 系统设置 4 一 硬件电路设计 4 二 程序流程图 4 三 51C 语音程序 4 参考文献参考文献 8 2 一 绪论一 绪论 一 一 设计任务 设计任务 采用微机的键盘检测与提示电路及程序设计 运用 4X4 机械式按键 使用单片机 IO 构 成矩阵式键盘 行列反转法 中断触发方式 二 二 4 4X4X4 机械式按键 机械式按键 4X4 的行 列结构可以构成 16 个按键的键盘 在本方案采用机械式结构键盘 机械 式结构键盘一般使用类似金属接触开关的原理 实现触点的导通和断开 实际应用中 机 械式按键的结果形式有很多 最常用的是交叉接触式 三 三 使用单片机 使用单片机 I I O O 构成矩阵式键盘 构成矩阵式键盘 矩阵式键盘是一种扫描式键盘 其工作过程比独立式键盘复杂 矩阵式键盘由行线 列线及位于行列线交叉点的按键等部分组成 矩阵式键盘由于其矩阵式结构 单片机一个 I O 口的状态已不能满足要求 需通过连接到键盘上的两根 I O 口线的状态来共同确定按 键的状态 此时采用行线和列线信号的状体分别处理 综合考虑方可确定按键闭合的位置 四 四 行列反转法 行列反转法 第一步 行线 IO P0 4 P0 7 置低电平 列线 IO P0 0 P0 3 置高电平 假设 K1 按下 那么 P0 0 0 读 P0 口 P0 00001110 第二步 行线 IO P0 4 P0 7 置高电平 列线 IO P0 0 P0 3 置低电平 假设 K1 按下 那么 P0 7 0 读 P0 口 P0 01110000 第三步 两个字节相加 得到新组合数据 01111110 第一行 第一列 每按一个键我们都得到不同的字节 通过比对我们制好的表格就可以知道是那个按键按下 了 然后返回一个数值 通过这个数值查数码表 就可以相应的显示我们先前设置好的 0 至 F 中的其中一个值了 五 五 中断触发方式 中断触发方式 当键盘上有键按下时 发出中断请求 CPU 响应中断请求后 转中断服务程序 进行 键盘扫描 识别键码等 3 2 2 系统设计系统设计 一 一 硬件电路设计 硬件电路设计 4 2 2 程序流程图 程序流程图 3 3 51C51C 语音程序语音程序 运用 3X4 机械式按键 使用单片机 IO 构成矩阵式键盘 行列反转法 中断触发方式 include 头文件 define KeyPort P0 键盘端口 define DataPort P1 定义数据端口 程序中遇到 DataPort 则用 P1 替换 bit KeyPressFlag 定义按键标志位 sbit LED P2 0 unsigned char code dofly DuanMa 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x39 0 x5e 0 x79 0 x71 显示段码值 0 F void DelayUs2x unsigned char t us 级延时函数声明 void DelayMs unsigned char t ms 级延时函数声明 unsigned char KeyScan void 键盘扫描函数 unsigned char KeyPro void void Init INT0 void 外部中断 0 初始化函数 5 主函数 void main void unsigned char num temp 定义变量 DataPort 0 x00 数据端口赋初值 LED 0 Init INT0 调用外部中断 0 函数 while 1 主循环 KeyPort 0 x0f 赋初值用于中断检测 if KeyPressFlag 1 KeyPressFlag 0 按键标志清零 以便下次检测 num KeyPro if num 0 xff temp dofly DuanMa num DataPort temp LED LED uS 延时函数 T tx2 5us void DelayUs2x unsigned char t while t mS 延时函数 void DelayMs unsigned char t while t 大致延时 1mS DelayUs2x 245 DelayUs2x 245 6 按键扫描函数 使用行列反转法扫描 返回扫描键值 unsigned char KeyScan void 键盘扫描函数 使用行列反转扫描法 unsigned char cord h cord l 行列值中间变量 KeyPort 0 x0f 行线输出全为 0 cord h KeyPort 读入列线值 if cord h 0 x0f 先检测有无按键按下 DelayMs 10 去抖 延时 10ms if KeyPort 读入列线值 KeyPort cord h 0 xf0 输出当前列线值 cord l KeyPort 读入行线值 while KeyPort 等待松开并输出 return cord h cord l 键盘最后组合码值 return 0 xff 返回该值 按键值处理函数 返回扫键值 unsigned char KeyPro void switch KeyScan case 0 x7e return 0 break 0 按下相应的键显示相对应的码值 case 0 xbe return 1 break 1 case 0 xde return 2 break 2 case 0 xee return 3 break 3 case 0 x7d return 4 break 4 case 0 xbd return 5 break 5 case 0 xdd return 6 break 6 case 0 xed return 7 break 7 case 0 x7b return 8 break 8 case 0 xbb return 9 break 9 case 0 xdb return 10 break a 7 case 0 xeb return 11 break b case 0 x77 return 12 break c case 0 xb7 return 13 break d case 0 xd7 return 14 break e case 0 xe7 return 15 break f default return 0 xff break 外部中断 0 初始化 void Init INT0 void EA 1 全局中断开 EX0 1 外部中断 0 开 IT0 1 边沿触发 外部中断 0 程序 void ISR INT0 void interrupt 0 KeyPres

温馨提示

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

评论

0/150

提交评论