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

📄 多功能密码锁.lst

📁 单片机开发液晶显示万年历计算器电子琴电子音乐字母输入
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   禵功能密码薩                                                          03/05/2009 19:15:02 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 禵功能密码薩
OBJECT MODULE PLACED IN 多功能密码锁.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE 多功能密码锁.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"REGX51.h"
   2          /************************************************         宏定义       ***********************************
             -***********************/
   3          
   4          /* LCD commend */
   5          
   6          #define TwoLine_8bit 56
   7          #define CLEAR            1
   8          #define CURSOR_HOME  2
   9          #define CURSOR_LEFT  4
  10          #define CURSOR_RIGHT 6
  11          #define CURSOR_OFF   12
  12          #define CURSOR_ON    14
  13          #define CURSOR_BLINK 15
  14          #define GOTO_LINE_2  192
  15          #define GOTO_LINE_1  128
  16          
  17          /* LCD control lines */
  18          
  19          #define ENABLE       1
  20          #define DISABLE          0
  21          #define RADE             1
  22          #define WRITE            0
  23          #define COMMAND          0
  24          #define DATA             1
  25          #define rs                       P1_0
  26          #define rw                       P1_1
  27          #define enable       P1_2
  28          sbit DQ=             P1^3;
  29          sbit LOCKOUT=            P1^4;
  30          sbit TEMPOUT=            P1^5;
  31          sbit LOCK=           P1^6;
  32          sbit BELL=           P1^7;
  33          sbit LEFT=           P3^5;
  34          sbit ENTER=          P3^6;
  35          sbit RIGHT=          P3^7;
  36          /************************************************          END          **********************************
             -************************/
  37          
  38          
  39          
  40          
  41          /************************************************        键盘扫描       **********************************
             -************************/
  42          code char key_code[]={0xDD,0x7E,0x7D,0x7B,0x77,0xBE,0xBD,0xBB,0xB7,0xDE,0xDB,0xD7,0xEE,0xED,0xEB,0xE7};
  43          code ksp[4]={0x7F,0xBF,0xDF,0xEF};
  44          
  45          
  46          void delay( void )
  47          {
  48   1         unsigned char i,j;
  49   1         for(i=0;i<5;i++)
  50   1             for(j=0;j<255;j++)
  51   1                     ;  
  52   1      }
C51 COMPILER V8.02   禵功能密码薩                                                          03/05/2009 19:15:02 PAGE 2   

  53          
  54          
  55          char keypad_scan( void )                                                
  56          {
  57   1              char key,i;
  58   1              P2=0xF0;
  59   1              while(P2!=0xF0)
  60   1                  ;
  61   1              do{
  62   2                      for(i=0;i<=3;i++)
  63   2                      {
  64   3                              P2=ksp[i];
  65   3                              if(P2!=ksp[i])
  66   3                              {
  67   4                                      delay();
  68   4                                      key=P2;
  69   4                                      if(key!=ksp[i])
  70   4                                      {
  71   5                                              return(key);
  72   5                                      }
  73   4                              } 
  74   3                      }
  75   2              }while(ENTER);
  76   1      }
  77          
  78          
  79          char gotkey( void )
  80          {
  81   1              char temp,i;
  82   1              temp=keypad_scan();
  83   1              for(i=0;i<=15;i++)
  84   1              {
  85   2                      if(temp==key_code[i])
  86   2                      return(i);
  87   2              }
  88   1      }
  89          /************************************************          END          **********************************
             -************************/
  90          
  91          
  92          
  93          
  94          /************************************************      1602液晶控制     **********************************
             -**************************/
  95          char code int2charLCD[]="0123456789"; 
  96          
  97          
  98          void delay100us( unsigned char j )
  99          {   
 100   1              unsigned char i;
 101   1              i=10*j;
 102   1              while(i--);
 103   1      }
 104          
 105          
 106          void write_LCD_command( unsigned command )
 107          {       
 108   1          rw=WRITE;
 109   1              rs=COMMAND;
 110   1          enable=ENABLE;
 111   1              P0=command;
 112   1              delay100us(20);
C51 COMPILER V8.02   禵功能密码薩                                                          03/05/2009 19:15:02 PAGE 3   

 113   1              enable=DISABLE;
 114   1              rw=1;
 115   1      }
 116          
 117          
 118          void write_LCD_data( unsigned LCDdata )
 119          {
 120   1              rw=WRITE;
 121   1              rs=DATA;
 122   1          enable=ENABLE;
 123   1              P0=LCDdata;
 124   1              delay100us(20);
 125   1              enable=DISABLE;
 126   1              rw=1;
 127   1      }
 128          
 129          
 130          void init_LCD( void )
 131          {
 132   1              write_LCD_command(TwoLine_8bit);
 133   1              write_LCD_command(CURSOR_OFF);
 134   1              write_LCD_command(CURSOR_RIGHT);   
 135   1      }
 136          
 137          
 138          void clear_LCD( void )
 139          {
 140   1              write_LCD_command(CLEAR);
 141   1              write_LCD_command(CURSOR_HOME); 
 142   1      }
 143          
 144          
 145          void display_LCD_string( char *p )
 146          {
 147   1              while(*p)
 148   1              {
 149   2                  write_LCD_data(*p);
 150   2                  p++;
 151   2              }
 152   1      }
 153          
 154          void display_LCD_int( char number )
 155          {
 156   1          unsigned char x;
 157   1              x=number;
 158   1              write_LCD_data(int2charLCD[x]);
 159   1      }
 160          
 161          
 162          void gotoxy( unsigned x , unsigned y )
 163          {
 164   1              if(x==1)
 165   1                      write_LCD_command(GOTO_LINE_1+y);
 166   1              else
 167   1                      write_LCD_command(GOTO_LINE_2+y);
 168   1      }
 169          /************************************************          END          **********************************
             -************************/
 170          
 171          
 172          
 173          /************************************************         计算器        **********************************
C51 COMPILER V8.02   禵功能密码薩                                                          03/05/2009 19:15:02 PAGE 4   

             -************************/
 174          unsigned long dat1=0,dat2=0,dat3=0;
 175          
 176          
 177          void print_num( unsigned long dat )
 178          {
 179   1              unsigned char x;
 180   1          if(dat<10)
 181   1                  x=1;
 182   1              if(dat>=10&&dat<100)
 183   1                  x=2;
 184   1              if(dat>=100&&dat<1000)
 185   1                  x=3;
 186   1              if(dat>=1000&&dat<10000)
 187   1                  x=4;
 188   1              if(dat>=10000&&dat<100000)
 189   1                  x=5;
 190   1              if(dat>=100000&&dat<1000000)
 191   1                  x=6;
 192   1              if(dat>=1000000&&dat<10000000)
 193   1                  x=7;
 194   1              if(dat>=10000000&&dat<100000000)
 195   1                  x=8;
 196   1              if(dat>=100000000&&dat<1000000000)
 197   1                  x=9;
 198   1              if(dat>=1000000000&&dat<10000000000)

⌨️ 快捷键说明

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