×
单片机 > 单片机程序设计 > 详情

单片机检测矩阵键盘.c文件

发布时间:2020-05-29 发布时间:
|

这是电路图

仿真文件和完整源码下载:http://www.51hei.com/bbs/dpj-22586-1.html

下面是矩阵键盘.c文件:
#include
#include "delay_ms.h"//利用函数delay_ms(unsigned int x)延时 x ms 
#include " 矩阵键盘.h" //头文件中宏定义#define JPJK P3 
void baoj1();
unsigned char keyscan()
{
 unsigned char temp,key;
 key = 0xff;
 JPJK = 0xfe; //将第一行线置低电平
 temp = JPJK;//读JPJK的当前状态到 temp
 temp &= 0xf0;// temp = temp & 0xf0 按位与 
 if(temp != 0xf0)
 {
  delay_ms(10);//延时去抖
  temp = JPJK;
  temp &= 0xf0;
    if(temp != 0xf0)//第一行有键被按下
  {
   temp = JPJK;//读被按下的键
   baoj1();
   switch(temp)
   {
    case 0xee: key = 1;break;
    case 0xde: key = 2;break;
    case 0xbe: key = 3;break;
    case 0x7e: key = 0x0a;break;
   }
   while(temp != 0xf0)//等待按键释放
   {
    temp = JPJK;
    temp &= 0xf0;
   }
  }
 }
 JPJK = 0xfd; //将第二行线置低电平
 temp = JPJK;//读JPJK的当前状态到 temp
 temp &= 0xf0;// temp = temp & 0xf0
 if(temp != 0xf0)
 {
  delay_ms(10);//延时去抖
  temp = JPJK;
  temp &= 0xf0;
    if(temp != 0xf0)//第二行有键被按下
  {
   temp = JPJK;//读被按下的键
   baoj1();
   switch(temp)
   {
    case 0xed: key = 4;break;
    case 0xdd: key = 5;break;
    case 0xbd: key = 6;break;
    case 0x7d: key = 0x0b;break;
   }
   while(temp != 0xf0)//等待按键释放
   {
    temp = JPJK;
    temp &= 0xf0;
   }
  }
 }
 JPJK = 0xfb; //将第 三行线置低电平
 temp = JPJK;//读JPJK的当前状态到 temp
 temp &= 0xf0;// temp = temp & 0xf0
 if(temp != 0xf0)
 {
  delay_ms(10);//延时去抖
  temp = JPJK;
  temp &= 0xf0;
    if(temp != 0xf0)//第三行有键被按下
  {
   temp = JPJK;//读被按下的键
   baoj1();
   switch(temp)
   {
    case 0xeb: key = 7;break;
    case 0xdb: key = 8;break;
    case 0xbb: key = 9;break;
    case 0x7b: key = 0x0c;break;
   }
   while(temp != 0xf0)//等待按键释放
   {
    temp = JPJK;
    temp &= 0xf0;
   }
  }
 }
 JPJK = 0xf7; //将第四行线置低电平
 temp = JPJK;//读JPJK的当前状态到 temp
 temp &= 0xf0;// temp = temp & 0xf0
 if(temp != 0xf0)
 {
  delay_ms(10);//延时去抖
  temp = JPJK;
  temp &= 0xf0;
    if(temp != 0xf0)//第四行有键被按下
  {
   temp = JPJK;//读被按下的键
   baoj1();
   switch(temp)
   {
    case 0xe7: key = 0;break;
    case 0xd7: key = 0;break;
    case 0xb7: key = 0x0f;break;
    case 0x77: key = 0x0d;break;
   }
   while(temp != 0xf0)//等待按键释放
   {
    temp = JPJK;
    temp &= 0xf0;
   }
  }
 }
   return key; //返回按下的键 
}

关键字:单片机  矩阵键盘  c文件 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址