好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

51单片机_矩阵按键检测.docx

6页
  • 卖家[上传人]:云****
  • 文档编号:213050685
  • 上传时间:2021-11-20
  • 文档格式:DOCX
  • 文档大小:17.13KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 51单片机_矩阵按键检测 《51系列单片机_矩阵按键检测》此程序使用 单片机89SC52// 1、 此程序实现矩阵按键的检测功能,按下按键时,数码管显示按键的相应键值 《51系列单片机_矩阵按键检测》 此程序使用 单片机89SC52 // 1、 此程序实现矩阵按键的检测功能,按下按键时,数码管显示按键的相应键值 #includereg52.h void delay_ms(int n) //延时函数,延时n毫秒 { int i, j; for(i=0; in; i++) for(j=0; j110; j++); } void display(int num) //掌握数码管按位输出显示数值num { char BitSet[8] = { 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe }; //用于设置(低电平位选)数码管的位选信号,从低到高对应8个数码管 char NumberCode[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, }; //用于设置(共阴极)数码管的段选信号,从0~f共16个数值 int n = num, i = 0; while(n=0) { P0 = 0xff; //关闭数码管当前位的显示,共阳极关闭显示段选信号 P2 = BitSet[i]; //选中数码管对应的位 P0 = ~NumberCode[n%10]; //向数码管的对应位中送入该位数值对应的段选信号 delay_ms(2); //每一位延时显示2ms P2 = 0xff; //关闭全部位选 i++; //位标记 n=n/10; //取数值n的商 if(n==0) break; //当取得的商为0时退出while循环 } } 《51系列单片机_矩阵按键检测》此程序使用 单片机89SC52// 1、 此程序实现矩阵按键的检测功能,按下按键时,数码管显示按键的相应键值 int MatrixKeyscan() //4*4矩阵键盘键值扫描函数,返回按下的第一个按键对应的键值 { char key[16] = //行扫描对应的键值数组 { 0xee, 0xde, 0xbe, 0x7e, 0xed, 0xdd, 0xbd, 0x7d, 0xeb, 0xdb, 0xbb, 0x7b, 0xe7, 0xd7, 0xb7, 0x77 }; char line[4] = {0xfe, 0xfd, 0xfb, 0xf7}; //行扫描值,将各行信号分别置0,列值全1 char tmp; int i, j, k=-1; for(i=0; i4; i++) { P1 = line[i]; //将行扫描值逐个送至P1端口 tmp = P1; //再读取P1口的值 if(tmp != line[i]) //若读取的数值不等于送入的行扫描值,表示有按键被按下 { delay_ms(10); //延时,重新读取推断,确认有键按下 tmp = P1; if(tmp != line[i]) { for(j=0; j4; j++) //当有键按下时,依据变化后的P1端口值确定对应的行列值 i和j,并给k给予键值 { if(tmp == key[4*i+j]) { k = 4*i+j; return k; } } } while(tmp != line[i]) tmp = P1; //(等待按键释放)循环直到读取的P1端口值与行扫描值相同,此时按键释放 } } return k; //返回扫描到的键值 《51系列单片机_矩阵按键检测》此程序使用 单片机89SC52// 1、 此程序实现矩阵按键的检测功能,按下按键时,数码管显示按键的相应键值 void main() { int num=0, tmp; while(1) { tmp = MatrixKeyscan(); if(tmp != -1) num = tmp; //扫描键盘推断是否有按键按下 //当有按键按下时,将键值赋给num(无键按下时扫描键盘返回值-1) display(num); } } //数码管显示按下按键对应的数值 6Word版本。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.