⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.c

📁 这个例子同样是基于PROTEUS工作平台
💻 C
字号:
//对4X4按键进行编码。P1.3--P1.0作行扫描,P1.7--P1.4作列扫描
//P3输出编码到数码管,
//P3.7--A  P3.6--B  P3.5--C  P3.4--D
//P3.3--E  P3.2--F  P3.1--G
//P2作位控口。

#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
void dlms(void);                        /*延时函数*/
uchar kbscan(void);                     /*键扫描函数*/

void dlms()
  { uchar i;
    for(i=200;i>0;i--){}
  }
uchar kbscan(void)
{
    uchar sccode,recode;
    P1=0xf0;                           /*发全0行扫描码,列线输入*/
    if((P1&0xf0)!=0xf0)                /*判断读进来的P1是否有变化,既有无键按下*/
      { dlms();                        /*延时去抖*/
        if((P1&0xf0)!=0xf0)            /*再判断是否是误动作引起的键变化*/
          {sccode=0xfe;                /*逐行扫描码初值*/
           while((sccode&0x10)!=0)     /*判数行扫描码左移时,不超4位*/
            {P1=sccode;                /*输出行扫描码*/
              if((P1&0xf0)!=0xf0)      /*判断读进P1是否有变化,既本行有无键按下*/
               {recode=(P1&0xf0)|0x0f;
                return((~sccode)+(~recode));/*返回按键特征码*/
               }
              else
                sccode=(sccode<<1)|0x01;  /*行扫描码左移一位*/
            }
          }
        }
      return(0);
}

void todokey(j)
  uchar j;
{
  switch(j)
  {
   case 0x11: {P3=0xfc;P2=0x00;break;}   /*0*/
   case 0x21: {P3=0x60;P2=0x00;break;}   /*1*/
   case 0x41: {P3=0xda;P2=0x00;break;}   /*2*/
   case 0x81: {P3=0xf2;P2=0x00;break;}
   case 0x12: {P3=0x66;P2=0x00;break;}
   case 0x22: {P3=0xb6;P2=0x00;break;}
   case 0x42: {P3=0xbe;P2=0x00;break;}
   case 0x82: {P3=0xe0;P2=0x00;break;}
   case 0x14: {P3=0xfe;P2=0x00;break;}
   case 0x24: {P3=0xf6;P2=0x00;break;}
   case 0x44: {P3=0xee;P2=0x00;break;}
   case 0x84: {P3=0x3e;P2=0x00;break;}
   case 0x18: {P3=0x9c;P2=0x00;break;}
   case 0x28: {P3=0x7a;P2=0x00;break;}
   case 0x48: {P3=0x9e;P2=0x00;break;}   /*E*/
   case 0x88: {P3=0x8e;P2=0x00;break;}   /*F*/
   default:break;
  }
}


void main()
{ 
  uchar key;
 while(1)
  {
  key=kbscan();
  dlms();
  todokey(key);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -