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

📄 lcd.lst

📁 51开发板调试程序
💻 LST
字号:
C51 COMPILER V7.50   LCD                                                                   03/28/2007 11:36:58 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #include "Define.h"
   4          #include "Set.h"
   5          
   6          sbit dc=P0^6; /*P2.0 LCD 的RS  21*/
   7          sbit rw=P0^7; /*P2.1 LCD 的R/W 22*/
   8          sbit cs=P1^4; /*P2.4 LCD 的E   25*/
   9          sfr  lcdbus=0xA0; /*p0LCD 数据 D0=P0.0*/
  10          
  11          unsigned int sys10mscounter;
  12          unsigned char syslimitcounter;
  13          
  14          char path1[8]={0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f};/*自定义符号横1*/
  15          char path2[8]={0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00};/*自定义符号横2*/
  16          char pats1[8]={0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15};/*自定义符号竖1*/
  17          char pats2[8]={0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a};/*自定义符号竖2*/
  18          
  19          void soft_nop()
  20          {
  21   1          ;
  22   1      }
  23          
  24          void soft_10ms()/***********12MHZ 提供10MS 软件延时************/
  25          { 
  26   1          register int i;
  27   1          for(i=0;i<711;i++)
  28   1              {
  29   2                  ;
  30   2              }
  31   1      }
  32          
  33          void soft_20ms()/***********12MHZ 提供20MS 软件延时************/
  34          { 
  35   1          soft_10ms();
  36   1          soft_10ms();
  37   1      }
  38          
  39          void hard_10ms(unsigned int delaytime) /*基于10MS 的硬件延时*/
  40          { 
  41   1          sys10mscounter=delaytime;
  42   1          while(sys10mscounter);
  43   1      }
  44          
  45          //////////////////////////////////////
  46          unsigned char data lcdcounter;
  47          bit lcdusing1,lcdusing2;
  48          
  49          bit lcd_checkbusy()/*检查LCD 忙*/
  50          { 
  51   1          register lcdstate;
  52   1          dc=0; /*dc=1为数据,=0 为命令.*/
  53   1          rw=1; /*rw=1为读,=0为写.*/
  54   1          cs=1; /*cs=1选通.*/
  55   1          soft_nop();
C51 COMPILER V7.50   LCD                                                                   03/28/2007 11:36:58 PAGE 2   

  56   1          lcdstate=lcdbus;
  57   1          cs=0;
  58   1      
  59   1          return((bit)(lcdstate&0x80));
  60   1      }
  61          
  62          void lcd_wrcmd(unsigned char lcdcmd) /*写LCD命令*/
  63          { 
  64   1          lcdusing1=1;
  65   1      
  66   1          while(lcd_checkbusy());
  67   1      
  68   1          lcdbus=lcdcmd;
  69   1          dc=0; /*dc=1为数据,=0 为命令.*/
  70   1          rw=0; /*rw=1为读,=0为写.*/
  71   1          cs=1; /*cs=1选通.*/
  72   1          soft_nop();
  73   1          cs=0;
  74   1          lcdbus=0xff;
  75   1          lcdusing1=0;
  76   1      }
  77          
  78          void lcd_moveto(char position) /*移动光标到指定位.0-79*/
  79          { 
  80   1          register cmd=0x80;
  81   1          lcdcounter=position;
  82   1              
  83   1              if (position > 59)
  84   1              {
  85   2              position += 0x18;
  86   2              }
  87   1          else
  88   1          {   
  89   2                  if (position > 39)
  90   2                      {
  91   3                          position -= 0x14;
  92   3                      }
  93   2              else
  94   2              {       
  95   3                          if (position > 19)position += 0x2c;
  96   3              }
  97   2          }
  98   1      
  99   1          cmd=cmd|position;
 100   1          lcd_wrcmd(cmd);
 101   1      }
 102          void lcd_wrdata(char lcddata) /*在当前显示位置显示数据*/
 103          { 
 104   1          //char i;
 105   1          lcdusing2=1;
 106   1      
 107   1          while(lcd_checkbusy());
 108   1      
 109   1          if(lcdcounter==20)
 110   1              {
 111   2              lcd_moveto(20);
 112   2              while(lcd_checkbusy());
 113   2          }
 114   1          if(lcdcounter==40)
 115   1              {
 116   2              lcd_moveto(40);
 117   2              while(lcd_checkbusy());
C51 COMPILER V7.50   LCD                                                                   03/28/2007 11:36:58 PAGE 3   

 118   2          }
 119   1          if(lcdcounter==60)
 120   1              {
 121   2              lcd_moveto(60);
 122   2              while(lcd_checkbusy());
 123   2          }
 124   1          if(lcdcounter==80)
 125   1              {
 126   2              lcd_moveto(0);
 127   2              while(lcd_checkbusy());
 128   2              lcdcounter=0;
 129   2          } /*为通用而如此*/
 130   1      
 131   1              lcdcounter++;
 132   1          lcdbus=lcddata;
 133   1          dc=1; /*dc=1为数据,=0 为命令.*/
 134   1          rw=0; /*rw=1为读,=0为写.*/
 135   1          cs=1; /*cs=1选通.*/
 136   1          soft_nop();
 137   1          cs=0;
 138   1      
 139   1          lcdbus=0xff;
 140   1          lcdusing2=0;
 141   1      }
 142          
 143          void lcd_string(char *strpoint) /*在当前显示位置显示LCD 字符串*/
 144          { 
 145   1          register i=0;
 146   1          while(strpoint[i]!=0)
 147   1              {
 148   2              lcd_wrdata(strpoint[i]);
 149   2              i++;
 150   2          }
 151   1      }
 152          
 153          void lcd_init()/*初始化*/
 154          { 
 155   1          lcd_wrcmd(0x38); /*设置8 位格式,2行,5*7*/
 156   1          lcd_wrcmd(0x0c); /*整体显示,关光标,不闪烁*/
 157   1          lcd_wrcmd(0x06); /*设定输入方式,增量不移位*/
 158   1          lcd_wrcmd(0x01); /*清除显示*/
 159   1          lcdcounter=0;
 160   1      }
 161          
 162          void lcd_cls()/*清除显示*/
 163          { 
 164   1          lcd_wrcmd(0x01);
 165   1          lcdcounter=0;
 166   1      }
 167          
 168          
 169          
 170          
 171          /****************************************************************/
 172          /*
 173          main()
 174          {
 175              unsigned char j;
 176          
 177              IE=0;
 178                  P0=0xff;
 179                  P1=0xff;
C51 COMPILER V7.50   LCD                                                                   03/28/2007 11:36:58 PAGE 4   

 180                  P2=0xff;
 181                  P3=0xff; /*初始化T*/
 182              //lcd_init();
 183                  //soft_20ms();
 184          
 185              /*TMOD=0x51;
 186              TH0=0xd8; /*12M,10ms*/
 187              /*TL0=0xf6;
 188              TR0=1;
 189                  ET0=1;
 190                  EA=1;
 191          
 192                  lcd_moveto(4);
 193          
 194                  lcd_wrcmd(0x40);
 195          
 196              while(1)
 197              {
 198                  /*全黑横一横二竖一竖二U Q ABCD... */
 199                  /*lcd_init(); /*全黑*/
 200          
 201                  /*for(j=0;j<80;j++)
 202                          {
 203                              lcd_wrdata(0xff);
 204                          }
 205          
 206                          
 207                  hard_10ms(50);
 208                  lcd_init(); /*横一可参考自行设计符号*/
 209                  /*lcd_wrcmd(0x40);
 210                  
 211                  for(j=0;j<8;j++)
 212                          {
 213                              lcd_wrdata(path1[j]);
 214                          }
 215          
 216                  for(j=0;j<100;j++)
 217                          {
 218                              lcd_wrdata(0);
 219                          }
 220          
 221                  hard_10ms(50);
 222          
 223                  lcd_init(); /*横二*/
 224                  /*lcd_wrcmd(0x40);
 225                  for(j=0;j<8;j++)
 226                          {
 227                              lcd_wrdata(path2[j]);
 228                          }
 229                  for(j=0;j<100;j++)
 230                          {
 231                              lcd_wrdata(0);
 232                          }
 233          
 234                  hard_10ms(50);
 235          
 236                  lcd_init(); /*竖一*/
 237                  /*lcd_wrcmd(0x40);
 238          
 239                  for(j=0;j<8;j++)
 240                          {
 241                              lcd_wrdata(pats1[j]);
C51 COMPILER V7.50   LCD                                                                   03/28/2007 11:36:58 PAGE 5   

 242                          }
 243          
 244                  for(j=0;j<100;j++)
 245                          {
 246                              lcd_wrdata(0);
 247                          }
 248          
 249                  hard_10ms(50);
 250                  lcd_init(); /*竖二*/
 251                  /*lcd_wrcmd(0x40);
 252          
 253                  for(j=0;j<8;j++)
 254                          {
 255                              lcd_wrdata(pats2[j]);
 256                          }
 257                  for(j=0;j<100;j++)
 258                          {
 259                              lcd_wrdata(0);
 260                          }
 261                  hard_10ms(50);
 262          
 263                  lcd_init();
 264                  lcd_string("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU");
 265                  hard_10ms(50);
 266          
 267                  lcd_init();
 268                  lcd_string("QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ");
 269                  hard_10ms(50);
 270          
 271                  lcd_init();
 272                  lcd_string("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789+-!#$%&?");
 273                  hard_10ms(50);
 274          
 275              }
 276          }
 277          */
 278          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    306    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     36       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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