单片机c语言之矩阵按键

发布者:Delightful789最新更新时间:2015-07-09 来源: 51hei关键字:单片机  c语言  矩阵按键 手机看文章 扫描二维码
随时随地手机看文章
程序为当按下第一个矩阵按键,数码管显示1,按第2个矩阵按键,数码管显示2,以此类推,直到第十五个按键显示F。第十六个按键显示o为止
#include
    #define uint unsigned int
    #define uchar unsigned char
       sbit dula=P2^6;
    sbit wela=P2^7;
    uchar code table[]={
      0x00,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
      0x39,0x5e,0x79,0x71,0
    };
    uchar num,temp,num1;    
     void delay(uint z) 
           {
              uint x,y;
        for(x=z;x>0;x--)
           for(y=110;y>0;y--);    
                 }
     uchar keyscan(); 
              void main()
    { num1=17;
       dula=1;
       P0=0;
       dula=0;
    wela=1;
    P0=0x00;
    wela=0;
    while(1)
     {
      num1=keyscan(); 
      dula=1;
      P0=table[num1];
      dula=0;         
      }
      }
     uchar keyscan()
     { 
       P3=0xfe;
     temp=P3;
     temp=temp&0xf0;
     while(temp!=0xf0)
      {  
       delay(5);
       temp=P3;
       temp=temp&0xf0;
       while(temp!=0xf0)
          {   
                  temp=P3;// 退出循环
         switch(temp)
             {
             case 0x7e:num=1;
                break;
             case 0xbe:num=2;
                break;
          case 0xde:num=3;
                break;
          case 0xee:num=4;
                break; 
                      }
          while(temp!=0xf0)
          {
            temp=P3;
            temp=temp&0xf0;
           }      // 松手检测
              
         }
             }
         P3=0xfd;
         temp=P3;
         temp=temp&0xf0;
                      while(temp!=0xf0)
      {  
       delay(5);
       temp=P3;
       temp=temp&0xf0;
       while(temp!=0xf0)
          {   
                  temp=P3;
         switch(temp)
             {
             case 0x7d:num=5;
                break;
             case 0xbd:num=6;
                break;
          case 0xdd:num=7;
                break;
          case 0xed:num=8;
                break; 
                      }
           while(temp!=0xf0)
          {
            temp=P3;
            temp=temp&0xf0;
           }      // 松手检测
                 
        }
    
                       }
     P3=0xfb;
     temp=P3;
     temp=temp&0xf0;
     while(temp!=0xf0)
      {  
       delay(5);
       temp=P3;
       temp=temp&0xf0;
       while(temp!=0xf0)
          {   
                  temp=P3;
         switch(temp)
             {
             case 0x7b:num=9;
                break;
             case 0xbb:num=10;
                break;
          case 0xdb:num=11;
                break;
          case 0xeb:num=12;
                break; 
                      }
           while(temp!=0xf0)
          {
            temp=P3;
            temp=temp&0xf0;
           }      // 松手检测
             
                 }
    
                       } 
            P3=0xf7;
             temp=P3;
             temp=temp&0xf0;
          while(temp!=0xf0)
      {  
       delay(5);
       temp=P3;
       temp=temp&0xf0;
       while(temp!=0xf0)
          {   
                  temp=P3;
         switch(temp)
             {
             case 0x77:num=13;
                break;
             case 0xb7:num=14;
                break;
          case 0xd7:num=15;
                break;
          case 0xe7:num=16;
                break; 
                      }
         while(temp!=0xf0)
          {
            temp=P3;
            temp=temp&0xf0;
           }      // 松手检测
              }
    
                       }
        return num;
     }
关键字:单片机  c语言  矩阵按键 引用地址:单片机c语言之矩阵按键

上一篇:单片机C语言(0到100计时器)
下一篇:dth11温湿度传感器的单片机程序

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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