电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

一个stc89c52单片机下的矩阵键盘程序

来源:-- 作者:-- 浏览:622

标签:

摘要: 下面是一个stc89c52单片机下的矩阵键盘程序,P0口接键盘,显示在P2口. #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit key1=P3^2; &nb

 

    下面是一个stc89c52单片机下的矩阵键盘程序,P0口接键盘,显示在P2口.

     #include<reg52.h>
 #define uchar unsigned char
 #define uint unsigned int
 sbit key1=P3^2;
 sbit key2=P3^3;
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};  //定义八个灯的工作状态。
uchar code wep[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
 void yanshi(uint t)
  {
  while(--t);
 }

     
 void main()
 {
 
    uchar han,lei,key;
 while(1)
 {
  P0=0xf0;    //初始化为开关状态。11110000
  han=P0;    //han变量读取P0口的值。第一次扫描键盘。
  han=han&0xf0; //对han变量与0xf0与.
                //如果结果等于P0口初值(0xf0)说明没有键被按下.
                //如果结果不等于P0(0xf0)口初值,说明有键按下.
  if(han!=0xf0)
    yanshi(125*5); //延时消抖.
    if(han!=0xf0)  //语句执行到这里说明真的有键按下.
    {        //例如按下S1键.则P0=1110 0000
  lei=P0&0xf0;  //lei读取P0口的值.
  lei=lei|0x0f; //lei=11101111
  P0=lei;    //P0=11101111
  han=P0;    //han=11101110 第二次扫描键盘,
          //因为这里按键S1还是闭合的状态。
  han=han&0x0f; //han=00001110
  lei=lei&0xf0; //lei=11100000
  key=han+lei; 
  }
  switch(key) 
  {
  case 0xee: P2=tab[0]; break;
  case 0xde: P2=tab[1]; break;
  case 0xbe: P2=tab[2]; break;
  case 0x7e: P2=tab[3]; break;
  case 0xed: P2=tab[4]; break;
  case 0xdd: P2=tab[5]; break;
  case 0xbd: P2=tab[6]; break;
  case 0x7d: P2=tab[7]; break;
  case 0xeb: P2=tab[8]; break;
  case 0xdb: P2=tab[9]; break;
  case 0xbb: P2=tab[10]; break;
  case 0x7b: P2=tab[11]; break;
  case 0xe7: P2=tab[12]; break;
  case 0xd7: P2=tab[13]; break;
  case 0xb7: P2=tab[14]; break;
  case 0x77: P2=tab[15]; break;
  }
  }
 
  }
 

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67