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

📄 lcd.lst

📁 51单片机使用之一 带密码的lcd 学习51编程
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   LCD                                                                   03/22/2008 17:36:51 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /***** LCD 12864 with KS0108B controller display driver *****/
   2          
   3          #define uchar unsigned char
   4          #include<drive_functions.h>
   5          #include<get_keys.h>
   6          bit verify=0;
   7          bit cursor=1;
   8          bit modify_flag=0,modify=0;
   9          uint time_counter=0;
  10          uchar counter=0,j=0,i,k;
  11          uchar PASS[8]={1,2,3,4,5,6,7,8};
  12          uchar PW[8]={0,0,0,0,0,0,0,0};
  13          uchar PW_NULL[8]={0,0,0,0,0,0,0,0};
  14          uchar MODIFY_BUF[8]={0,0,0,0,0,0,0,0};
  15          
  16          
  17          /****************************verify pw  ************************/
  18          bit VerifyAray(void)
  19          {
  20   1                      uchar i;
  21   1                      bit temp=FAULSE;
  22   1                      for(i=0;i<8;i++)
  23   1                              {
  24   2                              if(PW[i]==PASS[i])temp=TRUE;
  25   2      
  26   2                               else 
  27   2                                 {
  28   3                               temp=FAULSE;
  29   3                                       i=8;                       //end for loop
  30   3                                       }
  31   2                                       }
  32   1                              return(temp);
  33   1              }
  34          
  35          
  36          /*********************** main ************************/
  37          
  38          void main(void)
  39          {
  40   1              E=1;
  41   1              DspOn();
  42   1              ClearLCD();
  43   1      
  44   1      //      IT0=1;
  45   1      //      IT1=1;
  46   1      //      EX0=1;
  47   1      //      EX1=1;
  48   1      
  49   1              TMOD=0x10;
  50   1              ET1=1;
  51   1              EA=1;
  52   1              TH1=0x00;
  53   1              TL1=0x00;
  54   1              TR1=1;
  55   1              
C51 COMPILER V7.06   LCD                                                                   03/22/2008 17:36:51 PAGE 2   

  56   1              while(1)
  57   1              {
  58   2              /******************fist line****************************/
  59   2              uchar i;
  60   2              SetStartLine(0);
  61   2      re_input:
  62   2              for(i=0;i<4;i++)
  63   2              {
  64   3              SetPage(0);
  65   3              SetColumn(i<<4);                           // i*16
  66   3              DspUp(&QING_SHU[i-1][32],1);
  67   3              DspUp(&QING_SHU[i-1+4][32],2);
  68   3      
  69   3              SetPage(1);
  70   3              SetColumn(i<<4);                          // i*16
  71   3              DspDown(&QING_SHU[i-1][32],1);
  72   3              DspDown(&QING_SHU[i-1+4][32],2);
  73   3              }
  74   2      
  75   2          /**************second line***************************/
  76   2      
  77   2              for(i=0;i<4;i++)
  78   2              {
  79   3              SetPage(6);
  80   3              SetColumn(i<<4);                           // i*16
  81   3              DspUp(&QING_CHU[i-1][32],1);
  82   3              DspUp(&QING_CHU[i+4-1][32],2);
  83   3      
  84   3              SetPage(7);
  85   3              SetColumn(i<<4);                          // i*16
  86   3              DspDown(&QING_CHU[i-1][32],1);
  87   3              DspDown(&QING_CHU[i+4-1][32],2);
  88   3              }
  89   2      
  90   2      /***************************光标显示***********************************/
  91   2      if(counter<8)           //如果输入到第8位,光标不再显示
  92   2      {
  93   3      if(cursor)
  94   3      {
  95   4          i=counter;
  96   4              SetPage(2);
  97   4              SetColumn((i<4)?(i*16):((i-4)*16));                           
  98   4              DspUp(&GUANG_BIAO_KONG[-1][32],(i<4)?1:2);
  99   4      
 100   4              SetPage(3);
 101   4              SetColumn((i<4)?(i*16):((i-4)*16));                          
 102   4              DspDown(&GUANG_BIAO_KONG[-1][32],(i<4)?1:2);
 103   4              }
 104   3      
 105   3      else
 106   3      {
 107   4              i=counter;
 108   4              SetPage(2);
 109   4              SetColumn((i<4)?(i*16):((i-4)*16));                           
 110   4              DspUp(&GUANG_BIAO_KONG[0][32],(i<4)?1:2);
 111   4      
 112   4              SetPage(3);
 113   4              SetColumn((i<4)?(i*16):((i-4)*16));                          
 114   4              DspDown(&GUANG_BIAO_KONG[0][32],(i<4)?1:2);
 115   4              }  
 116   3              
 117   3      }
C51 COMPILER V7.06   LCD                                                                   03/22/2008 17:36:51 PAGE 3   

 118   2      
 119   2      /***********************get key's value**************************/
 120   2      
 121   2      if(CheckState())
 122   2                      {
 123   3                              delay();
 124   3                              
 125   3                              if(CheckState())
 126   3                              {
 127   4                                      key=GetKeys();
 128   4                                      
 129   4                                 if(key==0x82)                     //clear input
 130   4                                 {
 131   5                                        if(modify_flag){counter=0;MODIFY_BUF[8]=PW_NULL[8];}
 132   5                                    else {counter=0;PW[8]=PW_NULL[8];}
 133   5                                        
 134   5                                              for(i=0;i<8;i++)                 
 135   5                                               {      
 136   6                                                      SetPage(2);
 137   6                                                      SetColumn(i<<4);                           
 138   6                                                      DspUp(&GUANG_BIAO_KONG[0][32],1);
 139   6                                                      DspUp(&GUANG_BIAO_KONG[0][32],2);
 140   6      
 141   6                                                      SetPage(3);
 142   6                                                      SetColumn(i<<4);
 143   6                              DspDown(&GUANG_BIAO_KONG[0][32],1);
 144   6                                                      DspDown(&GUANG_BIAO_KONG[0][32],2);
 145   6                                                      
 146   6                                                      }
 147   5                                        }
 148   4      
 149   4                                else if(key==0x88)                       //verify password
 150   4                                {     
 151   5                                              if(modify_flag){modify=1;goto modify_operation;}
 152   5                                              else {verify=1;goto verify_password;}
 153   5                                              
 154   5                                              }
 155   4                                      
 156   4                                else if(counter<8)                      //get keys
 157   4                                              {
 158   5                                              switch(key)
 159   5                                                      {
 160   6                                                       case 0x84:
 161   6                                                                              if(modify_flag)MODIFY_BUF[counter]=0;
 162   6                                                                              else PW[counter]=0;
 163   6                                                                              break;
 164   6                                                       case 0x42:
 165   6                                                                              if(modify_flag)MODIFY_BUF[counter]=1;
 166   6                                                                              else PW[counter]=1;
 167   6                                                                              break;
 168   6                                                       case 0x44:
 169   6                                                                              if(modify_flag)MODIFY_BUF[counter]=2;
 170   6                                                                              else PW[counter]=2;
 171   6                                                                              break;
 172   6                                                       case 0x48:
 173   6                                                                              if(modify_flag)MODIFY_BUF[counter]=3;
 174   6                                                                              else PW[counter]=3;
 175   6                                                                              break;
 176   6                                                       case 0x22:
 177   6                                                                              if(modify_flag)MODIFY_BUF[counter]=4;
 178   6                                                                              else PW[counter]=4;
 179   6                                                                              break;
C51 COMPILER V7.06   LCD                                                                   03/22/2008 17:36:51 PAGE 4   

 180   6                                                       case 0x24:
 181   6                                                                              if(modify_flag)MODIFY_BUF[counter]=5;
 182   6                                                                              else PW[counter]=5;
 183   6                                                                              break;
 184   6                                                       case 0x28:
 185   6                                                                              if(modify_flag)MODIFY_BUF[counter]=6;
 186   6                                                                              else PW[counter]=6;
 187   6                                                                              break;
 188   6                                                       case 0x12:
 189   6                                                                              if(modify_flag)MODIFY_BUF[counter]=7;
 190   6                                                                              else PW[counter]=7;
 191   6                                                                              break;
 192   6                                                       case 0x14:
 193   6                                                                              if(modify_flag)MODIFY_BUF[counter]=8;
 194   6                                                                              else PW[counter]=8;
 195   6                                                                              break;
 196   6                                                       case 0x18:
 197   6                                                                              if(modify_flag)MODIFY_BUF[counter]=9;
 198   6                                                                              else PW[counter]=9;
 199   6                                                                              break;
 200   6                                                       default:
 201   6                                                                              break;
 202   6                                  }
 203   5                                                      counter++;
 204   5                                        }
 205   4      
 206   4                              
 207   4                         }
 208   3                         }
 209   2      
 210   2      /************************display password input **************************/
 211   2      
 212   2      for(i=0;i<counter;i++)  
 213   2        {     
 214   3              if(modify_flag==1)j=MODIFY_BUF[i];
 215   3              else j=PW[i];
 216   3              SetPage(2);
 217   3              SetColumn((i<4)?(i*16):((i-4)*16));                           

⌨️ 快捷键说明

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