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

📄 4x4key+led.lst

📁 51单片机的4*4键盘程序,实现键盘控制
💻 LST
字号:
C51 COMPILER V7.50   4X4KEY_LED                                                            06/19/2008 02:53:33 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 4X4KEY_LED
OBJECT MODULE PLACED IN 4X4KEY+LED.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE 4X4KEY+LED.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          ///////////////////////////////////////////////////
   2          //4X4键盘演示程序
   3          //精英团队提供
   4          //位选信号    :由右到左为P20、P21、P22、P23、P24、P33
   5          //LED数据线   :P0口
   6          //数码管数字码:0 0xC0 1 0xF9 2 0xA4 3 0xB0 4 0x99 5 0x92 6 0x82 7 0xF8 8 0x80 9 0x90
   7          //键盘数据线  :P1口
   8          ///////////////////////////////////////////////////
   9          #include<reg52.h>
  10          sbit wei1=P2^0;
  11          sbit wei2=P2^1;
  12          sbit wei3=P2^2;
  13          sbit wei4=P2^3;
  14          sbit wei5=P2^4;
  15          sbit wei6=P3^3;
  16          
  17          unsigned char keyvalue;//定义键值
  18          
  19          ///////////////////////////////////////////////////
  20          void delay(unsigned long time)
  21          {
  22   1          while(time--);
  23   1      }
  24          //////////////////////////////////////////////////
  25          void KEY4X4_scan(void)
  26          {
  27   1          keyvalue=0x00;//无按键时返回Ox00
  28   1              P1=0xFE;//扫描第1行
  29   1              delay(1);
  30   1              if((P1&0xF0)!=0xF0)
  31   1                      keyvalue=(P1>>4)|0x10;//返回键值
  32   1              P1=0xFD;//扫描第2行
  33   1              delay(1);
  34   1              if((P1&0xF0)!=0xF0)
  35   1                      keyvalue=(P1>>4)|0x20;//返回键值
  36   1              P1=0xFB;//扫描第3行
  37   1              delay(1);
  38   1              if((P1&0xF0)!=0xF0)
  39   1                      keyvalue=(P1>>4)|0x30;//返回键值
  40   1              P1=0xF7;//扫描第4行
  41   1              delay(1);
  42   1              if((P1&0xF0)!=0xF0)
  43   1                      keyvalue=(P1>>4)|0x40;//返回键值
  44   1      }
  45          //////////////////////////////////////////////////
  46          void LEDdisplay(unsigned char numb,unsigned char wei)//显示子函数
  47          {
  48   1         switch(numb)
  49   1            {
  50   2              case 0:P0=0xC0;break;
  51   2                      case 1:P0=0xF9;break;
  52   2                      case 2:P0=0xA4;break;
  53   2                      case 3:P0=0xB0;break;
  54   2                      case 4:P0=0x99;break;
  55   2                      case 5:P0=0x92;break;
C51 COMPILER V7.50   4X4KEY_LED                                                            06/19/2008 02:53:33 PAGE 2   

  56   2                      case 6:P0=0x82;break;
  57   2                      case 7:P0=0xF8;break;
  58   2                      case 8:P0=0x80;break;
  59   2                      case 9:P0=0x90;break;
  60   2                }
  61   1         switch(wei)
  62   1            {
  63   2              case 1:wei1=1;wei2=0;wei3=0;wei4=0;wei5=0;wei6=0;break;
  64   2                      case 2:wei1=0;wei2=1;wei3=0;wei4=0;wei5=0;wei6=0;break;
  65   2                      case 3:wei1=0;wei2=0;wei3=1;wei4=0;wei5=0;wei6=0;break;
  66   2                      case 4:wei1=0;wei2=0;wei3=0;wei4=1;wei5=0;wei6=0;break;
  67   2                      case 5:wei1=0;wei2=0;wei3=0;wei4=0;wei5=1;wei6=0;break;
  68   2                      case 6:wei1=0;wei2=0;wei3=0;wei4=0;wei5=0;wei6=1;break;
  69   2            }
  70   1         
  71   1      }
  72          ////////////////////////////////////////////////// 
  73          void main(void)
  74          {
  75   1          unsigned char numb=0;
  76   1              while(1)//动态显示
  77   1              {
  78   2                 
  79   2                      KEY4X4_scan();
  80   2                      switch(keyvalue)
  81   2                      {
  82   3                              case 0x1E:numb=1;break;
  83   3                              case 0x1D:numb=2;break;
  84   3                              case 0x1B:numb=3;break;
  85   3                              case 0x17:numb=4;break;
  86   3      
  87   3                              case 0x2E:numb=5;break;
  88   3                              case 0x2D:numb=6;break;
  89   3                              case 0x2B:numb=7;break;
  90   3                              case 0x27:numb=8;break;
  91   3      
  92   3                              case 0x3E:numb=9;break;
  93   3                              case 0x3D:numb=10;break;
  94   3                              case 0x3B:numb=11;break;
  95   3                              case 0x37:numb=12;break;
  96   3      
  97   3                              case 0x4E:numb=13;break;
  98   3                              case 0x4D:numb=14;break;
  99   3                              case 0x4B:numb=15;break;
 100   3                              case 0x47:numb=16;break;
 101   3                      }
 102   2                      LEDdisplay(numb%10,1);delay(50);
 103   2                      LEDdisplay(numb/10,2);delay(50);
 104   2                      
 105   2                 
 106   2              }
 107   1      }
 108          //////////////////////////////////////////////////


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    486    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       5
   IDATA SIZE       =   ----    ----
C51 COMPILER V7.50   4X4KEY_LED                                                            06/19/2008 02:53:33 PAGE 3   

   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 + -