4X4键盘扫描程序

发布者:SereneGardener最新更新时间:2016-07-15 来源: eefocus关键字:4X4键盘  扫描程序 手机看文章 扫描二维码
随时随地手机看文章
4X4键盘扫描程序,采用查表方式,适用于AVR单片机。

此处为4X4键盘软件部分,硬件部分设计请参照:

此程序对应的键盘电路为:

4X4键盘扫描程序 - zhaojun_xf - ARM-实践者

/*
键盘扫描函数
 读取当前键盘的状态
 有按键按下返回相应按键值
 无按键按下返回"0x00"
*/
unsigned char key_read(void){
 unsigned char i;
 
 DDRA = 0x00;/*获取列地址*/
 PORTA = 0x0F;
 DDRA = 0xF0;
 i = PINA;
 
 DDRA = 0x00;/*获取行地址*/
 PORTA = 0xF0;
 DDRA = 0x0F;
 i |= PINA;
 
 DDRA = 0x00;/*输出复位*/
 PORTA = 0xFF;
 
 switch (i) {/*将按键码转换成键值*/
  case  0x00: return 0x00;
  case  0xEE: return '1';
  case  0xDE: return '2';
  case  0xBE: return '3';
  case  0x7E: return 'A';
  case  0xED: return '4';
  case  0xDD: return '5';
  case  0xBD: return '6';
  case  0x7D: return 'B';
  case  0xEB: return '7';
  case  0xDB: return '8';
  case  0xBB: return '9';
  case  0x7B: return 'C';
  case  0xE7: return '*';
  case  0xD7: return '0';
  case  0xB7: return '#';
  case  0x77: return 'D';
  default : return 0x00;
  } 
}

/*
按键获取函数
 获取按键信号,其中包含有状态记录及按键去颤抖。
 有正确按键按下返回相应按键值
 无正确按键按下返回"0x00"
*/
unsigned char get_key(void){
 unsigned char i;
 static unsigned char j;/*按键记录*/
 i = key_read();
 if (i == 0x00){/*无有效按键按下*/
  j = 0x00;/*清除按键记录*/
  return 0x00;/*程序退出*/
  }
 if (j == 0x00) {/*为新按键*/
  j = i;/*保存本次采样结果*/
  delay_ms(10);/*去按键颤抖*/
  i = key_read();
  if(i == j) {
   return i;
   }
  }
 return 0x00;
}
关键字:4X4键盘  扫描程序 引用地址:4X4键盘扫描程序

上一篇:一个AVR的SD卡接口程序
下一篇:PC键盘与AVR单片机连接的C语言源程序

推荐阅读最新更新时间:2024-03-16 15:00

简单的4*4矩阵键盘扫描程序
/* 程序效果:按下任意键,LED显示P0读回的数据其中4*4的矩阵键盘接P0口 */ #include reg52.h //头文件 unsigned char key=0xff; //定义一个变量用于存放按键值 void readkey(); //读按键子函数,获取键值 void main() //主函数 { while(1) { readkey(); //读按键值 if(key!=0xff) //判断是否有按键按下 P2=~key;//这里取反:是因为LED为共阴,显示所按下的值 } } void readkey() //读键盘子函数 { P0=0xfe; //将第一列拉低,扫描是否有按键按下,第一列键值为:0,4,
[单片机]
简单的4*4矩阵<font color='red'>键盘</font><font color='red'>扫描</font><font color='red'>程序</font>
感觉比较好的矩阵键盘扫描程序
这个程序是我在写一个计算器的程序的时候想出来的,总感觉常用的键盘扫描程序用起来很麻烦,总是要一行一行的进行扫描,看起来也很繁琐,于是自己想了一个矩阵键盘的扫描程序,原理很简单的! 这个程序的基本思路是两条相交直线只有一个交点的原理,说白了就是先检测行,再检测列,或者倒过来也可以。 这个键盘扫描子程序是一个有返回值的无参函数,需要之前计算好一个数组就OK了! 下面是子函数的实现,我在这里只用一个3*4的矩阵键盘为例,原理都是一样的! ================================================================= uchar code key_table = { 0x77, 0x7
[单片机]
4X4键盘测试程序
/***********************Copyright(c)************************** **------------------------------------------------------------ **Created by: 康利平 **Descriptions: The original version **Descriptions: 键盘测试程序1 **------------------------------------------------------------*/ #include reg51.h #define uchar unsigned char
[单片机]
<font color='red'>4X4</font><font color='red'>键盘</font>测试<font color='red'>程序</font>
缩短PLC程序扫描周期的方法
  提高plc运行效率,缩短完成相同任务时的执行时间。   提醒:初学者不必在意本文归纳的做法,以程序易读、规范为目标,完成功能要求即可。   1、可以用“字”的时候尽量避免用“双字”,可以用整数时,尽量避免用实数。   2、优先使用富余的(硬件连接以外的)IB、IW、ID、QB、QW、QD,其次是M,S;   3、尽量避免数据类型转换,不得不用时,尽量用AC存放中间变量,减少转换次数。或者编程时先预留出存储空间,比如:用VW2存整数时,VW0空出不用,就可以直接以VD0的形式来进行访问VW2中的数据;   4、减少非必要网络扫描,把可以设条件执行的网络(特别是AIW、AQW),归类到子程序中作条件调用(例如定时中断);
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved