51单片机矩阵键盘按键C语言程序

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71} ;
uchar smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78} ;
//有一篇74HC573必须为高电平
//*************************8
便民用品
//12M频率下大约50US延时
wsrd//**************************
void delay_50us(uint t)
{
  uchar j;
  for(;t>0;t--)
    for(j=19;j>0;j--) ;
}
void delay_50ms(uint t)
{
  uchar j;
  for(;t>0;t--)
    for(j=6245;j>0;j--);
}
/*这个程序可以不用松手检测,因为我们程序首选判断键是否按下
然后发现按下后我们延时5MS,然后再检测。确实是按下啦。我们再执行
在第二个循环假如我们继续检测,那么消耗时间10MS这个短时间中
我们的按键已经松手啦。不会在执行后面的。
*/
void main()
温湿度控制系统
{
过滤膜    uchar key_l,key_h;
    uchar key;
    while(1)
    {
    P3=0xf0;    //首先给P3口赋值
幼猪
    key_l=P3;      //从p3口读一个数据到key_l
    key_l=key_l&0xf0;
    if(key_l!=0xf0) //如果不等于的话,说明有按键按下去
    {
        delay_50us(100);//稍微延时一下
          if(key_l!=0xf0)
      {
          key_l=P3&0xf0;//  11100000  再读一次P3的值然后和0xf0相与
          key_l=key_l|0x0f;            //  11101111
          P3=key_l;    //在把key_l的值送给P3口
    //此时P3口的值为11101111,而正在此时我们把键按下啦因此按下的键为11101110与11101111
    // 相与还是11101110;
        key_h=P3; //再读一次P3口,键还是按下,可以得到行的值。
          key_h=key_h&0x0f; //00001110
        key_l=key_l&0xf0; //11100000
        key=key_l+key_h;    //11101110
      }
    }
    switch(key)
    {
      case 0xee:P1=smg_du[0];break;
    case 0xde:P1=smg_du[1];break;
    case 0xbe:P1=smg_du[2];break;
    case 0x7e:P1=smg_du[3];break;
    case 0xed:P1=smg_du[4];break;
    case 0xdd:P1=smg_du[5];break;
    case 0xbd:P1=smg_du[6];break;
    case 0x7d:P1=smg_du[7];break;
    case 0xeb:P1=smg_du[8];break;
    case 0xdb:P1=smg_du[9];break;
    case 0xbb:P1=smg_du[10];break;
天然气调压撬    case 0x7b:P1=smg_du[11];break;
    case 0xe7:P1=smg_du[12];break;
    case 0xd7:P1=smg_du[13];break;
    case 0xb7:P1=smg_du[14];break;
    case 0x77:P1=smg_du[15];break;
    }
    }
}

本文发布于:2024-09-21 15:41:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/329606.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:检测   程序   松手
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议