微控制器应用基础 行列反转法 行列反转法.pptxVIP

  • 43
  • 0
  • 约1.45千字
  • 约 10页
  • 2020-09-10 发布于北京
  • 举报

微控制器应用基础 行列反转法 行列反转法.pptx

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

文档评论(0)

1亿VIP精品文档

相关文档