⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 矩阵键盘.lst

📁 单片机的实用程序代码
💻 LST
字号:
C51 COMPILER V7.50   __阵键盘                                                              08/24/2011 11:40:31 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE __阵键盘
OBJECT MODULE PLACED IN 矩阵键盘.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 矩阵键盘.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2          * 文件名  : 矩阵键盘.c
   3          * 描述    :  该文件实现了 4 * 4 键盘的试验。通过数码管的最后一位来显示
   4                                   当前的按键值。          
   5          * 创建人  : 东流,2009年4月10日
   6          * 版本号  : 2.0
   7          *********************************************************************/
   8          #include<reg51.h>
   9          #include<intrins.h>
  10          
  11          #define uint unsigned int
  12          #define uchar unsigned char
  13          
  14          uchar code table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  15          
  16          /********************************************************************
  17          * 名称 : Delay_1ms()
  18          * 功能 : 延时子程序,延时时间为 1ms * x
  19          * 输入 : x (延时一毫秒的个数)
  20          * 输出 : 无
  21          ***********************************************************************/
  22          void Delay_1ms(uint i)//1ms延时
  23          {
  24   1              uchar x,j;
  25   1              for(j=0;j<i;j++)
  26   1              for(x=0;x<=148;x++);    
  27   1      }
  28           
  29          
  30          /********************************************************************
  31          * 名称 : Keyscan()
  32          * 功能 : 实现按键的读取。下面这个子程序是按处理 矩阵键盘 的基本方法处理的。
  33          * 输入 : 无
  34          * 输出 : 按键值
  35          ***********************************************************************/
  36          uchar Keyscan(void)
  37          {
  38   1              uchar i,j, temp, Buffer[4] = {0xfe, 0xfd, 0xfb, 0xf7};                  //给矩阵键盘的每行分别付低电平
  39   1              for(j=0; j<4; j++)
  40   1              {
  41   2                      P1 = Buffer[j];
  42   2                      temp = 0x10;                                                                                            
             -                                                                        
  43   2                      for(i=0; i<4; i++)
  44   2                      {
  45   3                              if(!(P1 & temp))                //判断P1口高4位某一行为低电平
  46   3                              {
  47   4                                      return (i+j*4);         //返回键码
  48   4                              }
  49   3                              temp <<= 1;
  50   3                      }       
  51   2              }
  52   1      }
  53          
  54          /********************************************************************
C51 COMPILER V7.50   __阵键盘                                                              08/24/2011 11:40:31 PAGE 2   

  55          * 名称 : Main()
  56          * 功能 : 主函数
  57          * 输入 : 无
  58          * 输出 : 无
  59          ***********************************************************************/
  60          void Main(void)
  61          {
  62   1              uchar Key_Value;  //读出的键值
  63   1              while(1)
  64   1              {
  65   2                      P1 = 0xf0;                              
  66   2                      if(P1 != 0xf0)                  //判断有无按键按下
  67   2                      {
  68   3                              Delay_1ms(20);          //按键消抖
  69   3                              if(P1 != 0xf0)          //第二次判断有无按键按下
  70   3                              {
  71   4                                      Delay_1ms(20);  //按键消抖
  72   4                                      if(P1 != 0xf0)  //第三次判断有无按键按下
  73   4                                      {
  74   5                                              Key_Value = Keyscan();          
  75   5                                      }
  76   4                              }
  77   3                      }
  78   2                      P0 = table[Key_Value];
  79   2                      P2 = 0x07;      
  80   2              }
  81   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    129    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -