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

📄 8x8 lcd.lst

📁 51单片机1602液晶屏应用
💻 LST
字号:
C51 COMPILER V8.02   8X8_LCD                                                               12/13/2008 03:46:21 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 8X8_LCD
OBJECT MODULE PLACED IN 8x8 lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 8x8 lcd.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //******** 小波电子工作室 All rights reserved******
   2          //******** 个人主页:http://hi.baidu.com/niejinbo **
   3          //******** 文 件 名:   lcd_key.1.c     ************
   4          //******** 功能概要:   4*4矩阵键盘扫描 ***********
   5          //******** MCU: STC89C52 晶振:11.0592Mhz **********
   6          //******** 设 计 者:   聂金波          ************
   7          //******** 完成日期:   2008-07-14      ************
   8          //******** 当前版本:   0714.1          ************
   9          //******** 改进说明:   暂无            ************
  10          //******** 补充说明:    从键盘输入0-F,在LCD上显示出来
  11          //*********头文件区*******************
  12          #include<reg52.h>
  13          #include<math.h>
  14          #include<absacc.h>
  15          #define uchar unsigned char
  16          #define uint unsigned int
  17          //*********定义变量区*******************
  18          sbit e=P2^7;      //LCD使能信号
  19          sbit rs=P2^5;      //LCD数据/命令选择信号
  20          sbit rw=P2^6;
  21          uchar tab_key[50];
  22          uchar code tab[]="0123456789abcdef";   
  23          uchar n=0,temp,key;
  24          //*********函数声明区********************
  25          void lcd_disp();          //LCD显示函数
  26          void lcd_init();          //LCD初始化函数
  27          void write_com(uchar);    //写命令函数
  28          void write_data(uchar);   //写数据函数
  29          void delay(uint);         //延迟函数
  30          void key_scan();          //键盘扫描函数
  31          void key_manage1();       //键盘功能分配函数
  32          void key_manage2(); 
  33          void key_manage3(); 
  34          void key_manage4(); 
  35          void key_manage5(); 
  36          void key_manage6(); 
  37          void key_manage7(); 
  38          void key_manage8(); 
  39          void key_manage9(); 
  40          void key_manage10();
  41          void key_manage11(); 
  42          void key_manage12(); 
  43          void key_manage13(); 
  44          void key_manage14(); 
  45          void key_manage15(); 
  46          void key_manage16();
  47          
  48          //**********主函数开始**********
  49          void main()
  50          {
  51   1      lcd_init();
  52   1      write_com();
*** WARNING C209 IN LINE 52 OF 8X8 LCD.C: '_write_com': too few actual parameters
  53   1      while(1)
  54   1      {
C51 COMPILER V8.02   8X8_LCD                                                               12/13/2008 03:46:21 PAGE 2   

  55   2      key_scan();
  56   2      lcd_disp(); 
  57   2      }
  58   1      }
  59          
  60          //**********LCD显示函数开始***********
  61          void lcd_disp()
  62          {
  63   1      uchar j,i=0;
  64   1      write_com(0x80);
  65   1      for(i=0;i<n;i++)
  66   1      {
  67   2      j=tab_key[i];
  68   2      write_data(tab[j]);
  69   2      }
  70   1      }
  71          /*void key_manage16()
  72          {
  73          tab_key[n]=15;
  74          n++;
  75          }  */
  76          
  77          //**********LCD初始化函数开始*********
  78          void lcd_init()
  79          {
  80   1      e=0;
  81   1      write_com(0x38);      //设置显示模式:16X2,5X7,8位数据接口
  82   1      write_com(0x0c);      //开显示,显示光标,光标闪烁
  83   1      write_com(0x06);      //读写一个字符后,地址指针及光标加一,且光标加一整屏显示不移动
  84   1      write_com(0x80);    //设置光标指针
  85   1      }
  86          
  87          //**********写命令函数开始************
  88          void write_com(uchar com)
  89          {
  90   1              rs=0;
  91   1              rw=0;
  92   1              e=0;
  93   1      P0=com;       //写入命令
  94   1      delay(3);     //延时约3ms
  95   1      e=1;      //LCD使能端置高电平
  96   1      delay(5);     //延时约5ms
  97   1      e=0;      //LCD使能端拉低电平
  98   1      }
  99          //**********写数据函数开始************
 100          void write_data(uchar dat)
 101          {
 102   1         rs=1;      //低电平写数据
 103   1      
 104   1              rw=0;
 105   1      
 106   1         P0=dat;       //写入命令
 107   1         delay(3);     //延时约3ms
 108   1         e=1;      //LCD使能端置高电平
 109   1         delay(5);     //延时约5ms
 110   1         e=0;      //LCD使能端拉低电平
 111   1      }
 112          //**********键盘扫描函数开始****
 113          void key_scan()
 114          {
 115   1      //**********扫描第一行*********
 116   1      P3=0xfe;          
C51 COMPILER V8.02   8X8_LCD                                                               12/13/2008 03:46:21 PAGE 3   

 117   1      temp=P3;
 118   1      temp=temp&0xf0;
 119   1      if(temp!=0xf0)
 120   1      {
 121   2      delay(100);
 122   2      if(temp!=0xf0)
 123   2         {
 124   3          temp=P3;
 125   3          switch(temp)
 126   3           {
 127   4            case 0xee:
 128   4                 key_manage1();
 129   4                 break;
 130   4            case 0xde:
 131   4                 key_manage2();
 132   4                 break;
 133   4             case 0xbe:
 134   4                  key_manage3();
 135   4                  break;
 136   4             case 0x7e:
 137   4                  key_manage4();
 138   4                  break;
 139   4            }
 140   3           while(temp!=0xf0)
 141   3            {
 142   4             temp=P3;
 143   4             temp=temp&0xf0;
 144   4            }
 145   3           }
 146   2         }
 147   1      //**********扫描第二行*********
 148   1      P3=0xfd;         
 149   1      temp=P3;
 150   1      temp=temp&0xf0;
 151   1         if(temp!=0xf0)
 152   1          {
 153   2           delay(100);
 154   2           if(temp!=0xf0)
 155   2            {
 156   3             temp=P3;
 157   3             switch(temp)
 158   3              {
 159   4               case 0xed:
 160   4                    key_manage5();
 161   4                    break;
 162   4               case 0xdd:
 163   4                    key_manage6();
 164   4                    break;
 165   4               case 0xbd:
 166   4                    key_manage7();
 167   4                    break;
 168   4               case 0x7d:
 169   4                    key_manage8();
 170   4                    break;
 171   4               }
 172   3             while(temp!=0xf0)
 173   3              {
 174   4               temp=P3;
 175   4               temp=temp&0xf0;
 176   4              }
 177   3            }
 178   2          }
C51 COMPILER V8.02   8X8_LCD                                                               12/13/2008 03:46:21 PAGE 4   

 179   1      //**********扫描第三行*********   
 180   1      P3=0xfb;      
 181   1      temp=P3;
 182   1      temp=temp&0xf0;
 183   1      if(temp!=0xf0)
 184   1         {
 185   2          delay(100);
 186   2          if(temp!=0xf0)
 187   2           {
 188   3            temp=P3;
 189   3            switch(temp)
 190   3            {
 191   4              case 0xeb:
 192   4                   key_manage9();
 193   4                   break;
 194   4              case 0xdb:
 195   4                   key_manage10();
 196   4                   break;
 197   4               case 0xbb:
 198   4                    key_manage11();
 199   4                    break;
 200   4               case 0x7b:
 201   4                    key_manage12();
 202   4                    break;
 203   4              }
 204   3            while(temp!=0xf0)
 205   3               {
 206   4                temp=P3;
 207   4                temp=temp&0xf0;
 208   4               }
 209   3              }
 210   2           }
 211   1      
 212   1      //**********扫描第四行*********
 213   1      P3=0xf7;
 214   1      temp=P3;
 215   1      temp=temp&0xf0;
 216   1      if(temp!=0xf0)
 217   1         {
 218   2          delay(100);
 219   2          if(temp!=0xf0)
 220   2           {
 221   3            temp=P3;
 222   3            switch(temp)
 223   3             {
 224   4              case 0xe7:
 225   4                   key_manage13();
 226   4                   break;
 227   4              case 0xd7:
 228   4                   key_manage14();
 229   4                   break;
 230   4              case 0xb7:
 231   4                   key_manage15();
 232   4                   break;
 233   4              case 0x77:
 234   4                   key_manage16();
 235   4                   break;
 236   4            }
 237   3          while(temp!=0xf0)
 238   3           {
 239   4            temp=P3;
 240   4            temp=temp&0xf0;
C51 COMPILER V8.02   8X8_LCD                                                               12/13/2008 03:46:21 PAGE 5   

 241   4           }
 242   3          }
 243   2      }
 244   1      }  
 245          //*********延时函数开始**************
 246          void delay(uint k)
 247          {
 248   1      uint i,j;
 249   1      for(i=k;i>0;i--)
 250   1         for(j=50;j>0;j--);
 251   1      }
 252          
 253          //******键盘功能分配函数群开始********
 254          //       键盘功能示意图
 255          //       设计者:聂金波
 256          //** 1 ** 2 ** 3 ** 4 **  
 257          //** 5 ** 6 ** 7 ** 8 **
 258          //** 9 ** 0 ** s ** c **
 259          //** M1** M2** M3** M4**  
 260          void key_manage1()
 261          {
 262   1      tab_key[n]=0;
 263   1      n++;
 264   1      }
 265          void key_manage2()
 266          {
 267   1      
 268   1      tab_key[n]=1;
 269   1      n++;
 270   1      
 271   1      }
 272          void key_manage3()
 273          {
 274   1      tab_key[n]=2;
 275   1      n++;
 276   1      }
 277          void key_manage4()
 278          {
 279   1      tab_key[n]=3;
 280   1      n++;
 281   1      }
 282          void key_manage5()
 283          {
 284   1      tab_key[n]=4;
 285   1      n++;
 286   1      }
 287          void key_manage6()
 288          {
 289   1      tab_key[n]=5;
 290   1      n++;
 291   1      }
 292          void key_manage7()
 293          {
 294   1      tab_key[n]=6;
 295   1      n++;
 296   1      }
 297          void key_manage8()
 298          {
 299   1      tab_key[n]=7;
 300   1      n++;
 301   1      }
 302          void key_manage9()
C51 COMPILER V8.02   8X8_LCD                                                               12/13/2008 03:46:21 PAGE 6   

 303          {
 304   1      tab_key[n]=8;
 305   1      n++;
 306   1      }
 307          void key_manage10()
 308          {
 309   1      tab_key[n]=9;
 310   1      n++;
 311   1      }
 312          void key_manage11()
 313          {
 314   1      tab_key[n]=10;
 315   1      n++;
 316   1      }
 317          void key_manage12()
 318          {
 319   1      tab_key[n]=11;
 320   1      n++;
 321   1      }
 322          void key_manage13()
 323          {
 324   1      tab_key[n]=12;
 325   1      n++;
 326   1      }
 327          void key_manage14()
 328          {
 329   1      tab_key[n]=13;
 330   1      n++;
 331   1      }
 332          void key_manage15()
 333          {
 334   1      tab_key[n]=14;
 335   1      n++;
 336   1      }
 337          void key_manage16()
 338          {
 339   1      tab_key[n]=15;
 340   1      n++;
 341   1      }
 342          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    630    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     53       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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