电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

扫描法和翻转法VIP专享VIP免费

扫描法和翻转法_第1页
扫描法和翻转法_第2页
扫描法和翻转法_第3页
扫描法:以4*4 矩阵按键为例,将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是: 依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低, 则该列线与置为低电平的行线交叉处的按键就是闭合的按键。#include "reg52.h" #define uchar unsigned char #define uint unsigned int void Delay_1ms(uint i); uchar keyScan(void); void Main(void) { uchar keyValue; //存放键值,第一行的第一个为1第二行第一个为5,依次排列while(1) { P1 = 0xf0; if(P1 != 0xf0) //判断是否有键按下{ Delay_1ms(20); //消除键抖动if(P1 != 0xf0) //在此判断是否有键按下{ keyValue = keyScan(); //逐行扫描,判断是哪个按键按下} } //此处用于对不同键值做出不同反应} } uchar keyScan(void) { uchar temp,i,j,lineSelect[4]={0xef, 0xdf, 0xbf, 0x7f}; //数组用于线选for(j=0;j<4;j++) //循环四次用于四个行线依次拉低{ P1=lineSelect[j]; //每根行线依次拉低temp=1; for(i=0;i<4;i++) //循环四次用于判断哪列有键按下{ if(!(P1&temp)) //判断此列是否有键按下return (i+j*4); //返回键值,行 *4+ 列,行和列的交叉处temp<<=1; //将目标移为下一列} } } void Delay_1ms(uint i) //延时函数{ uchar x,j; for(j=0;j

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群