- 43
- 0
- 约1.45千字
- 约 10页
- 2020-09-10 发布于北京
- 举报
P2.4~P2.5端口送出列线电平,P2.0~P2.3端口先送全高电平再读取行线电平;P2.0~P2.3端口送出行线电平,P2.4~P2.7端口先送高电平再读取列线电平;;;按键的键值(所处的行列位置)识别方法——行列反转法;按键的键值(所处的行列位置)识别方法——行列反转法;按键的键值(所处的行列位置)识别方法——行列反转法;unsigned char key_code[ ]={ 0xee, 0xde, 0xbe, 0x7e, //S0, S1, S2, S3
0xed, 0xdd, 0xbd, 0x7d, //S4, S5, S6, S7
0xeb, 0xdb, 0xbb, 0x7b, //S8, S9, S10, S11
0xe7, 0xd7, 0xb7, 0x77 }; //S12, S13, S14, S15
//键盘按键对应的扫描码表;unsigned char scan_key (void)
{
unsigned char scan1, scan2, keycode, j, key;
key=-1; //键值初值-1,如果没有键按下,函数返回 -1
P2=0x0f; //给列线送全0,行线送全1
scan1=P2; //读取行列电平并保存在变量scan1里
if(scan1 != 0x0f) //如果读入的值不为0x0f,则表示有键按下
{
delay(1200); //延时去抖
scan1=P2; //再次读入行列值
if(scan1 != 0x0f) //再次判断是否有键按下
{
P2=0xf0; //行列反转,给列线送全0,行线送全1
scan2=P2; //读取行列电平并保存在变量scan2里
keycode=scan1 | scan2); //两次读入值按位或,合并后得到按键扫描码
for(j=0; j16; j++) //在扫描码表中查找键值
{
if(keycode = key_code[ j ] )
{ key=j; break; }
}
}
}
return(key); //返回键值
};4
您可能关注的文档
- 网络渗透与防护 课中学习 网络踩点-googlehacking(PPT).pptx
- 网络营销 网络市场调研初认识、网络营销 项目2 网络市场调研 1.pptx
- 网络营销基础 网络营销基础、搜索引擎营销技巧 关键词设计技巧.pptx
- 网页创意与艺术设计(拓展) 7 网页版式设计 中轴型网页_A3.pptx
- 网页创意与艺术设计(拓展) 7 网页版式设计 中轴型网页_F1.pptx
- 网页设计与制作(HTML+CSS+JS)-3期(KC003) JavaScirpt基础 3程序控制结构.pptx
- 微控制器应用基础 do while语句 do-while语句.pptx
- 微控制器应用基础 for语句 for语句.pptx
- 微控制器应用基础 while语句 while语句.pptx
- PHP+MySQL网站开发技术(拓展) 2 PHP编程基础 PHP动态网页基础试题-059.pptx
原创力文档

文档评论(0)