4*4矩阵键盘模块程序的调用

发布者:GHR2596最新更新时间:2016-09-22 来源: eefocus关键字:4*4矩阵  键盘模块程序 手机看文章 扫描二维码
随时随地手机看文章
产生.lib文件的方法:选择“工程”——“目标target属性”——“输出”——产生库文件*.lib,修改完后,编译一下程序,无措后,就在工程目录下产生一个.lib文件,到时要用到这个模块程序时,直接把.c和.lib文件拷贝到所在的目录下,再把.c的文件加载到工程文件里就OK了。

/*
***************************************************************************************
摘    要: 4*4小键盘模块程序,供以后其他程序调用.其中P2口高四位接键盘列,P2口低四位接键盘行,
版    本: V1.0
完成日期: 2008.4.28
作    者: ZHOUSFE
***************************************************************************************
修改日期: 2008.5.6
版    本: V1.2
****************************************************************************************
*/

#i nclude
#define uchar unsigned char
#define keyport  P2
//uchar code seg[16]=

{0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E}; //0~f,

共阳极
uchar code keycode[16]=

{0xEE,0XDE,0XBE,0X7E,0XED,0XDD,0XBD,0X7D,0XEB,0XDB,0XBB,0X7B,0XE7,0XD7,0XB7,0X77};//待查询的

键码值

/*
*******************************************************************************************
函数名称:delay()
功能描述:延时ms个微妙
入口参数:unsigned int ms
出口参数:无
*******************************************************************************************
*/

void delay(unsigned int ms)  
{
  unsigned char a;
  while(!ms--)
  for(a=0;a<124;a++);  
}

/*
*******************************************************************************************
函数名称:keyscan()
功能描述:键盘扫描程序,利用行扫描方式,得到键值
入口参数:无
出口参数:扫描得到的键值~((~sm)+(~fh))
*******************************************************************************************
*/

uchar keyscan(void)         
{
  uchar sm;                  //存放行扫描代码,该函数的返回值的低四位
  uchar fh;                  //该函数的返回值的高四位
  keyport=0xf0;
  if((keyport&0xf0)!=0xf0)        //判断是否有按键按下   
  {
    delay(2);                //去抖动延时(1~10ms)
    if((keyport&0xf0)!=0xf0)  
    {
      sm=0xfe;                //行扫描初值
      while((sm&0x10)!=0)
    {
        keyport=sm;
        if((keyport&0xf0)!=0xf0)       //若本行有键按下,则执行读取键值信息
        {
          fh=(keyport&0xf0)|0x0f;    
          return(~((~sm)+(~fh))); //返回扫描的键值 
        }
         else   sm=(sm<<1)|0x01;   //若本行没有键按下,则扫描下一行
       }
     }
   }
   return 0xff;                   //若没有按键按下,则返回0xff
}

/*
*******************************************************************************************
函数名称:getkey()
功能描述:将扫描得到的键值转化为对应的0~f
入口参数:无
出口参数:显示的数字0~f
*******************************************************************************************
*/

uchar getkey()
{
  uchar key;
  uchar temp;
  uchar j;
  while(1)
  {
    key=keyscan();        
    delay(2);
    for(j=0;j<16;j++)
    {
      if(key==keycode[j])   //通过查询方式,得到按下的按键值
      {
        temp=j;             //按键值先保存于temp中
        if(key==0xff)       //若没有按下下一个键,则一直显示上一个键值
      {
          return temp;   
      }
      else
      {
         return j;
         temp=j;          //更新temp里的值
      }
       }
     }
   }
}
/*
*******************************************************************************************
测试用函数
*******************************************************************************************
*/
/*void main(void)
{
 uchar ch;
 P3&=0xfe;
 while(1)
 {
  ch=getkey();
  P0=~seg[ch];  //P0口接数码管
 }
}*/

关键字:4*4矩阵  键盘模块程序 引用地址:4*4矩阵键盘模块程序的调用

上一篇:51单片机中断入口地址在c语言中的表示
下一篇:51单片机C和汇编指令对比

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

利用两个I/O引脚将4×3矩阵键盘连接至微控制器
在基于微控制器(MCU)的项目中,矩阵式键盘常被用作输入设备。将矩阵键盘连接至微控制器的常规做法需使用微控制器的多个I/O引脚。然后MCU运用扫描算法来确认按住了哪些键。这种办法的一个弊端就是需要大量MCU的I/O引脚来连接键盘。例如,连接一个4×3键盘需7个数字I/O引脚。而当项目采用的是低引脚数MCU,或使用的MCU不具备足够的可用I/O引脚数时,就出现了问题。 对于这一问题,有两个解决办法:使用现成的I/O扩展器,或用一只电阻排,为每个键设定一个唯一的电压,然后使用模拟引脚来读取电压值,判断按住了哪个键。每个方案都有其不足之处。 由于在大多数情况下,I/O扩展器需通过特殊的通信协议(如I2C协议或SPI协议)
[单片机]
利用两个I/O引脚将<font color='red'>4</font>×3<font color='red'>矩阵</font><font color='red'>键盘</font>连接至微控制器
4*4矩阵按键《行列反转法》扫描依次显示0-f
数码管采用共阴数码管; proteus电路接法如下: 程序如下: void key_scan() //按键扫描函数 { unsigned char code table = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; P2 = 0xf0; //列扫描 if(P2 != 0xf0) { delay(1000); if(P2 != 0xf0) { P2 = 0
[单片机]
<font color='red'>4</font>*<font color='red'>4</font><font color='red'>矩阵</font>按键《行列反转法》扫描依次显示0-f
4×4矩阵键盘+1602液晶显示
//这是51hei单片机开发板附带的一个程序,矩阵键盘接p3口,其中p3.0-p3.4为行,P3.5- p3.7为列 //每按一下键数字便可显示在1602液晶上面,并且蜂鸣器会发出响声. //全部源代码下载: http://www.51hei.com/f/jz1602.rar #include reg52.h #include Intrins.h #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit rs=P2^2; sbit lcden=P2^0; sbit rw=P2^1; sbit BEEP=P2
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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