LCD1602.rar

源代码在线查看: keyscan.lst

软件大小: 2859 K
上传用户: ranli
关键词: 1602 LCD
下载地址: 免注册下载 普通下载 VIP

相关代码

				C51 COMPILER V8.05a   KEYSCAN                                                              07/30/2007 13:24:31 PAGE 1   
				
				
				C51 COMPILER V8.05a, COMPILATION OF MODULE KEYSCAN
				OBJECT MODULE PLACED IN KeyScan.obj
				COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\KeyScan.c BROWSE DEBUG OBJECTEXTEND PRINT(.\KeyScan.lst) OBJECT(Key
				                    -Scan.obj)
				
				line level    source
				
				   1          //*************************************************************************************************
				   2          //*************************************************************************************************
				   3          //**:键盘扫描子程序                                                                                                                                     **
				   4          //**:当有外部中断0时调用此函数,使用列扫描的方式获取键码,键码由2位数字组成。高位为行号   **
				   5          //**            低位为列号。                                                                                                                                             **
				   6          //*************************************************************************************************
				   7          //*************************************************************************************************
				   8          
				   9          
				  10          //*************************************************************************************************
				  11          //*                                                                                                                                                                                               *
				  12          //*                      ******************************头文件及宏定义**************************                           *
				  13          //*                                                                                                                                                                                               *
				  14          //*************************************************************************************************
				  15          #include 
				  16          
				  17          #define SCANPORT P2                               //4×4键盘扫描端口,低4位是行线,高4位是列线。
				  18                                                                            //采用逐列扫描的方法,无按键时,低4位输出1,高4位输出0。
				  19                                                                            //当有按键时,高4位输出扫描电位,低4位输入扫描结果。
				  20          
				  21          //*************************************************************************************************
				  22          //*                                                                                                                                                                                               *
				  23          //*                       ********************************全局变量******************************                          *
				  24          //*                                                                                                                                                                                               *
				  25          //*************************************************************************************************
				  26          unsigned char uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F};            //列线扫描电压,分为第1,2,3,4根列线
				  27                                                                                                                                  //为低电平,其他为高电平。
				  28          
				  29          
				  30          //*************************************************************************************************
				  31          //*                                                                                                                                                                                               *
				  32          //*                       ********************************函数实现******************************                          *
				  33          //*                                                                                                                                                                                               *
				  34          //*************************************************************************************************
				  35          unsigned char ucKeyScan()
				  36          {
				  37   1              unsigned char ucTemp=0;                         //扫描状态暂存。
				  38   1              unsigned char ucRow=0,ucLine=0;     //行号,列号。
				  39   1      
				  40   1              for(ucLine=0;ucLine				  41   1                      {
				  42   2                              SCANPORT=uca_LineScan[ucLine];                     //输出扫描电位。
				  43   2                              ucTemp=SCANPORT&0x0F;                                      //输入扫描电位,并屏蔽高4位。
				  44   2                              if(ucTemp!=0x0F)                 
				  45   2                                      {                                                                         //判断该列是否有按键按下。
				  46   3                                      switch(ucTemp)
				  47   3                                              {
				  48   4                                              case 0x0E: ucRow=10;break;                //如果有,则判断行号。
				  49   4                                              case 0x0D: ucRow=20;break;
				  50   4                                              case 0x0B: ucRow=30;break;
				  51   4                                              case 0x07: ucRow=40;break;
				  52   4                                              default:   ucRow=50;break;
				  53   4                                              }
				  54   3                                      break;
				C51 COMPILER V8.05a   KEYSCAN                                                              07/30/2007 13:24:31 PAGE 2   
				
				  55   3                                      }
				  56   2                      }
				  57   1              return ucRow+ucLine+1;                   //返回按键编码。格式为2位数,高位为行号,低位为列号。
				  58   1      }
				
				
				MODULE INFORMATION:   STATIC OVERLAYABLE
				   CODE SIZE        =     64    ----
				   CONSTANT SIZE    =   ----    ----
				   XDATA SIZE       =   ----    ----
				   PDATA SIZE       =   ----    ----
				   DATA SIZE        =      4    ----
				   IDATA SIZE       =   ----    ----
				   BIT SIZE         =   ----    ----
				END OF MODULE INFORMATION.
				
				
				C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)
							

相关资源