矩阵键盘通用模块_第1页
矩阵键盘通用模块_第2页
矩阵键盘通用模块_第3页
全文预览已结束

下载本文档

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

文档简介

1、通用模块#ifndef _KEY_H_ #define _KEY_H_ #include<reg52.h>/#include "public.h" 为了让模块变的跟独立这个也不需要/#define uchar unsigned char 外部不需要调用,放在函数内部就可以#define KEY_BUS P2 /这个根据开发板来变;加一个分号导致整个程序错误extern unsigned char key_scan(void); /返回一个无符号字符型变量(015),无按键按下返回一个'E'#endif/* 函数功能:* 键盘扫描函数 * 带入参数

2、:*无 * 带出参数:*返回键1-15 若无返回 'E'* 其他备注:*4*4矩阵键盘 * 作 者:*江锟 * 更新时间:*2017.12.14 */#include "key.h"#include<intrins.h>/-#define uchar unsigned char#define uint unsigned int/-/* 函数功能:* 软件延时函数 065536ms * 带入参数:*unsigned int * 带出参数:*无 * 其他备注:*延时0unsigned int(带入参数)ms * 作 者:*江锟 * 时 间:*2015

3、.12.14 */void delay_ms(unsigned int z)int x,y;for(x=0;x<z;x+)for(y=0;y<113;y+);unsigned char key_scan(void)uchar i,k,key; /uint c; k='E'KEY_BUS=0x0f;if(KEY_BUS!=0x0f)/ 这就算是进来了 delay_ms(5); if(KEY_BUS!=0x0f)/ 抖动检测 KEY_BUS=0xef; for(i=0;i<4;i+)/四次扫描 key=KEY_BUS&0x0f;/屏蔽掉低4位 只保留检测回

4、来的位switch(key)case 0x0e: k=i;break;/能记录0-3case 0x0d: k=i+4;break;/能记录4-7case 0x0b: k=i+8;break;/能记录8-11case 0x07: k=i+12;break;/能记录12-15default: ;break;KEY_BUS=(KEY_BUS<<1)+1;/把P1口的0的位向左移动 /_crol_(KEY_BUS,1);可以用这个代替if(k!='E')break;/检测到按键后退出for循环 KEY_BUS=0xf0; /for(c=0;(c>200)|(P2!=0xf0);c+); / delay_ms(10); /for(c=0;(c>200)|(P2!=0xf0);c+); /这样写可以让单片机检测200次,不至于是一个死循环,有些时候用的到 /if(P2=0xf0) / / return k; / else return 20;/有按键按下但没松手,这种情况也可以定义笔记特殊 while(P2!=0xf0); delay_ms(40); while(P2!=0xf0);/ 一直不松手会进入一个

温馨提示

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

评论

0/150

提交评论