4*4矩阵键盘的扫描原理

发布者:VelvetWhisper最新更新时间:2015-01-15 来源: 51hei关键字:阵键盘  扫描原理 手机看文章 扫描二维码
随时随地手机看文章

    初学者肯定要经历的一个实验就是4*4矩阵键盘的代码编写,大部分都是在学校里面,有现成的实验箱,基本不需要自己动脑子。上次遇到一个哥们,他说他用的是8031的实验箱,我当时就晕了。8031是8051的前身,那个芯片连ROM都没有,可以想象我们的学校都在拿什么教育祖国的花朵。废话少说,先上图:

 

    对初学者来说这篇文章会有点难,可以先研究一下如何用51单片机点亮一个发光二极管和基于CPLD-EPF10K10LC84-4(84)的交通灯设计。首先要说明的一点,矩阵键盘的动态扫描确实略显复杂,不可能就是读一个端口数据,然后马上就出来结果。这需要对依次每一行的按键进行扫描、判断,然后得出结果。如上图所示,先扫描第一行,也就是S1,S2,S3,S4四个按键的状态。在PA口输入0XFE。

    0XFE变成二进制是1111 1110,为了方便使用,记得每四个数之间加一个空格。1111 1110这个数据放到PA口上,假设这个时候S1被按下了,会出现什么情况?因为PA0是低电平,S1被按下之后S1导通,导致PA4的电平从1降到0,于是PA端口的数据就变成了1110 1110,换算成16进制就是0XEE。于是我们知道S1被按下了。

    假设是S3被按下,会出现什么情况?没错,PA6的电平被拉低,PA的端口数据变成了1011 1110,也就是0XBE。这样,我们就知道了,每一行的每一个按键被按下的时候,都会有一个对应的独一无二的值。这就是矩阵键盘的扫描原理!送上一段源码,大家看着玩吧:

void matrixkeyscan()

{

uchar temp,key;

    P3=0xfe;

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

      delayms(10);

 temp=P3;

 temp=temp&0xf0;

      if(temp!=0xf0)

      {

        temp=P3;

        switch(temp)

        {

          case 0xee:

               key=0;

               break;

          case 0xde:

               key=1;

               break;

          case 0xbe:

               key=2;

               break;

          case 0x7e:

               key=3;

               break;

         }

         while(temp!=0xf0)

         {

           temp=P3;

           temp=temp&0xf0;

         }

        display(key);

      }

    }

    P3=0xfd;

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

      delayms(10);

      temp=P3;

      temp=temp&0xf0;

      if(temp!=0xf0)

      {

        temp=P3;

        switch(temp)

        {

          case 0xed:

               key=4;

               break;

          case 0xdd:

               key=5;

               break;

          case 0xbd:

               key=6;

               break;

          case 0x7d:

               key=7;

               break;

         }

         while(temp!=0xf0)

         {

           temp=P3;

           temp=temp&0xf0;

         }

         display(key);

      }

      }

    P3=0xfb;

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

      delayms(10);

     temp=P3;

      temp=temp&0xf0;

      if(temp!=0xf0)

      {

        temp=P3;

        switch(temp)

        {

          case 0xeb:

               key=8;

               break;

          case 0xdb:

               key=9;

               break;

          case 0xbb:

               key=10;

               break;

          case 0x7b:

               key=11;

               break;

         }

         while(temp!=0xf0)

         {

           temp=P3;

           temp=temp&0xf0;

         }

        display(key);

      }

      }

    P3=0xf7;

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

      delayms(10);

      temp=P3;

      temp=temp&0xf0;

      if(temp!=0xf0)

      {

        temp=P3;

        switch(temp)

        {

          case 0xe7:

               key=12;

               break;

          case 0xd7:

               key=13;

               break;

          case 0xb7:

               key=14;

               break;

          case 0x77:

               key=15;

               break;

         }

         while(temp!=0xf0)

         {

           temp=P3;

           temp=temp&0xf0;

         }

        display(key);

      }

    }

}

关键字:阵键盘  扫描原理 引用地址:4*4矩阵键盘的扫描原理

上一篇:运用定时器中断写的交通灯
下一篇:智能寻迹小车制作

推荐阅读最新更新时间:2024-03-16 13:51

扫描电子显微镜的特点及工作原理
    扫描电镜的特点     与光学显微镜及透射电镜相比,扫描电镜具有以下特点: (一) 能够直接观察样品表面的结构,样品的尺寸可大至120mm×80mm×50mm。 (二) 样品制备过程简单,不用切成薄片。 (三) 样品可以在样品室中作三度空间的平移和旋转,因此,可以从各种角度对样品进行观察。 (四) 景深大,图象富有立体感。扫描电镜的景深较光学显微镜大几百倍,比透射电镜大几十倍。 (五) 图象的放大范围广,分辨率也比较高。可放大十几倍到几十万倍,它基本上包括了从放大镜、光学显微镜直到透射电镜的放大范围。分辨率介于光学显微镜与透射电镜之间,可达3nm。 (六) 电子束对样品的损伤与污染程度较小。 (七) 在观察形貌的同时
[电源管理]
<font color='red'>扫描</font>电子显微镜的特点及工作<font color='red'>原理</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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