基于51单片机矩阵键盘点亮对应LED

描述

51单片机结构简单,架构体系完备,学习资料丰富,应用领域广泛。通过对51单片机的学习,可帮助小白实现快速入门电子设计,理解电路系统工作原理,为高级嵌入式芯片的学习及开发打下坚实基础。

本篇描述

 

1、51+Proteus8.10;

2、学习矩阵键盘电路及驱动;

仿真设计

  采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,真正实现了从概念到产品的完整设计。

软件设计

 

采用Keil作为软件设计工具。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。

#include
#define uchar unsigned char
#define uint unsigned int
#define KEY P1


uchar uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F};
uchar KeyScan()
{
  uchar Temp=0;          
  uchar ucRow=0,ucLine=0;      


  for(ucLine=0;ucLine<4;ucLine++)  
    {
      KEY=uca_LineScan[ucLine];         
      Temp=KEY & 0x0F;           
      if(Temp!=0x0F)     
        {                   
        switch(Temp)
          {
          case 0x0E: ucRow=10;break;     
          case 0x0D: ucRow=20;break;
          case 0x0B: ucRow=30;break;
          case 0x07: ucRow=40;break;
          default:   ucRow=50;break;
          }
        break;
        }
    }


  KEY=0x0F;            
  return ucRow+ucLine+1;       
}


void KEY_CTRL(unsigned char KeyCode)
{
  switch(KeyCode)
    {
    case 11:P2=0xff;P3=0x7f;break;  
    case 12:P2=0xff;P3=0x3f;break;  
    case 13:P2=0xff;P3=0x1f;break;
    case 14:P2=0xff;P3=0x0f;break;
    case 21:P2=0xff;P3=0x07;break;  
    case 22:P2=0xff;P3=0x03;break;  
    case 23:P2=0xff;P3=0x01;break;
    case 24:P2=0xff;P3=0x00;break;
    case 31:P3=0x00;P2=0x7f;break;  
    case 32:P3=0x00;P2=0x3f;break;  
    case 33:P3=0x00;P2=0x1f;break;
    case 34:P3=0x00;P2=0x0f;break;
    case 41:P3=0x00;P2=0x07;break;  
    case 42:P3=0x00;P2=0x03;break;
    case 43:P3=0x00;P2=0x01;break;  
    case 44:P3=0x00;P2=0x00;break;  


    default:break;
    }
}


void main()
{
  while(1)
  {
    KEY_CTRL(KeyScan());
  }
}

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分