矩阵键盘扫描函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
矩阵键盘扫描函数
2012 年 6 月 28 日
/*使用说明:本文档为 4X4 键盘检测函数,你只要将该文件添加到你的工程当中, 在主函数需要检测的地方加上 KeyScan();即可完成扫描。 扫描键盘的结果是以 KeyNum 的值为标准,KeyNum 返还的值就代表哪个键被按
下*/
//在你的主程序开头加上 extern unsigned char KeyScan();
unsigned char KeyData; unsigned char KeyNum; XX=0xfe;//检测第一行 KeyData=XX; KeyData=KeyData&0xf0; if(KeyData!=0xf0) {
Delay_Key(); // if(KeyData!=0xf0) {
KeyData=XX; switch(KeyData) {
case 0xee:KeyNum=1;break; case 0xde:KeyNum=2;break; case 0xbe:KeyNum=3;break; case 0x7e:KeyNum=4;break; } while(KeyData!=0xf0)
{ KeyData=XX; KeyData=KeyData&0xf0;
具体操作步骤: 第一步: 打开你的工程,在工程中新建一个.C 文件,命名为 KeyScan.c 并保存到你的工 程目录下,而后将其添加到你的工程中:
第二步: 将以上 C 程序复制到 KeyScan.c 文件中并保存,而后将 i 值修改:
第三步: 在你的主函数中添加 extern unsigned char KeyScan(); 如图:
} while(KeyData!=0xf0) {
KeyData=XX; KeyData=KeyData&0xf0; } } } XX=0xf7;//检测第四行 KeyData=XX; KeyData=KeyData&0xf0; if(KeyData!=0xf0) { Delay_Key(); // if(KeyData!=0xf0) { KeyData=XX; switch(KeyData) { case 0xee:KeyNum=13;break; case 0xde:KeyNum=14;break; case 0xbe:KeyNum=15;break; case 0x7e:KeyNum=16;break; } while(KeyData!=0xf0) { KeyData=XX; KeyData=KeyData&0xf0; } } } return KeyNum; }
} } } XX=0xfd;//检测第二行 KeyData=XX; KeyData=KeyData&0xf0; if(KeyData!=0xf0) { Delay_Key(); // if(KeyData!=0xf0) {
KeyData=XX; s来自百度文库itch(KeyData) {
case 0xee:KeyNum=5;break; case 0xde:KeyNum=6;break; case 0xbe:KeyNum=7;break; case 0x7e:KeyNum=8;break; } while(KeyData!=0xf0) { KeyData=XX; KeyData=KeyData&0xf0; } } } XX=0xfb;//检测第三行 KeyData=XX; KeyData=KeyData&0xf0; if(KeyData!=0xf0) { Delay_Key(); // if(KeyData!=0xf0) { KeyData=XX; switch(KeyData) { case 0xee:KeyNum=9;break; case 0xde:KeyNum=10;break; case 0xbe:KeyNum=11;break; case 0x7e:KeyNum=12;break;
通过以上三步,你就可以再任何地方调用 KeyScan();函数,按下的按键通过 KeyNum 的返还值确定。 若有不足之处,还请批评指正,我的邮箱:gaoxiangtime@163.com
南京工程学院 高祥 2012 年 6 月 28 日
//你要做的修改就是将 Pi 中的 i 改成 0 或 1,2,3
#include<reg52.h>
#define XX Pi //i=0,1,2,3 根据你自己的键盘接口改动
void Delay_Key() {
unsigned int i; for(i=200;i>0;i--); }
unsigned char KeyScan() {
2012 年 6 月 28 日
/*使用说明:本文档为 4X4 键盘检测函数,你只要将该文件添加到你的工程当中, 在主函数需要检测的地方加上 KeyScan();即可完成扫描。 扫描键盘的结果是以 KeyNum 的值为标准,KeyNum 返还的值就代表哪个键被按
下*/
//在你的主程序开头加上 extern unsigned char KeyScan();
unsigned char KeyData; unsigned char KeyNum; XX=0xfe;//检测第一行 KeyData=XX; KeyData=KeyData&0xf0; if(KeyData!=0xf0) {
Delay_Key(); // if(KeyData!=0xf0) {
KeyData=XX; switch(KeyData) {
case 0xee:KeyNum=1;break; case 0xde:KeyNum=2;break; case 0xbe:KeyNum=3;break; case 0x7e:KeyNum=4;break; } while(KeyData!=0xf0)
{ KeyData=XX; KeyData=KeyData&0xf0;
具体操作步骤: 第一步: 打开你的工程,在工程中新建一个.C 文件,命名为 KeyScan.c 并保存到你的工 程目录下,而后将其添加到你的工程中:
第二步: 将以上 C 程序复制到 KeyScan.c 文件中并保存,而后将 i 值修改:
第三步: 在你的主函数中添加 extern unsigned char KeyScan(); 如图:
} while(KeyData!=0xf0) {
KeyData=XX; KeyData=KeyData&0xf0; } } } XX=0xf7;//检测第四行 KeyData=XX; KeyData=KeyData&0xf0; if(KeyData!=0xf0) { Delay_Key(); // if(KeyData!=0xf0) { KeyData=XX; switch(KeyData) { case 0xee:KeyNum=13;break; case 0xde:KeyNum=14;break; case 0xbe:KeyNum=15;break; case 0x7e:KeyNum=16;break; } while(KeyData!=0xf0) { KeyData=XX; KeyData=KeyData&0xf0; } } } return KeyNum; }
} } } XX=0xfd;//检测第二行 KeyData=XX; KeyData=KeyData&0xf0; if(KeyData!=0xf0) { Delay_Key(); // if(KeyData!=0xf0) {
KeyData=XX; s来自百度文库itch(KeyData) {
case 0xee:KeyNum=5;break; case 0xde:KeyNum=6;break; case 0xbe:KeyNum=7;break; case 0x7e:KeyNum=8;break; } while(KeyData!=0xf0) { KeyData=XX; KeyData=KeyData&0xf0; } } } XX=0xfb;//检测第三行 KeyData=XX; KeyData=KeyData&0xf0; if(KeyData!=0xf0) { Delay_Key(); // if(KeyData!=0xf0) { KeyData=XX; switch(KeyData) { case 0xee:KeyNum=9;break; case 0xde:KeyNum=10;break; case 0xbe:KeyNum=11;break; case 0x7e:KeyNum=12;break;
通过以上三步,你就可以再任何地方调用 KeyScan();函数,按下的按键通过 KeyNum 的返还值确定。 若有不足之处,还请批评指正,我的邮箱:gaoxiangtime@163.com
南京工程学院 高祥 2012 年 6 月 28 日
//你要做的修改就是将 Pi 中的 i 改成 0 或 1,2,3
#include<reg52.h>
#define XX Pi //i=0,1,2,3 根据你自己的键盘接口改动
void Delay_Key() {
unsigned int i; for(i=200;i>0;i--); }
unsigned char KeyScan() {