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

📄 cs22-2.lst

📁 C51驱动16X2点阵字符液晶模块.可以用的.供大家参考
💻 LST
字号:
C51 COMPILER V7.06   CS22_2                                                                02/20/2007 20:53:56 PAGE 1   


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

stmt level    source

   1          #include <REG51.H>      
   2          #include<INTRINS.H>             
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define DataPort P0             
   6          sbit LCM_RS=P2^0;               
   7          sbit LCM_RW=P2^1;               
   8          sbit LCM_EN=P2^2;               
   9          uchar code exampl[]="ForAnExample www.hlelectron.com ";
  10          void Delay400ms(void);  
  11          void Delay5ms(void);            
  12          void WaitForEnable(void);       
  13          void WriteDataLCM(uchar data W);
  14          void WriteCommandLCM(uchar CMD,uchar Attribc);
  15          void InitLcd(void);                     
  16          void Display(uchar dd); 
  17          void DisplayOneChar(uchar x,uchar y,uchar Wdata);
  18          void ePutstr(uchar x,uchar y,uchar code *ptr);
  19          //*******************************
  20          void main(void)                 
  21          {                                               
  22   1              uchar temp;                     
  23   1              Delay400ms();           
  24   1              InitLcd();              
  25   1              temp=32;                
  26   1              ePutstr(0,0,exampl);    
  27   1              Delay400ms();           
  28   1              Delay400ms();           
  29   1              Delay400ms();           
  30   1              Delay400ms();           
  31   1              Delay400ms();           
  32   1              Delay400ms();           
  33   1              Delay400ms();           
  34   1              Delay400ms();           
  35   1              while(1)        
  36   1              {                               
  37   2                      temp&=0x7f;             
  38   2                      if(temp<32)temp=32;
  39   2                      Display(temp++);        
  40   2                      Delay400ms();   
  41   2              }                                       
  42   1      }                                               
  43          /****************************************/
  44          void InitLcd(void)                      
  45          {                                       
  46   1      WriteCommandLCM(0x38,0);
  47   1      Delay5ms();             
  48   1      WriteCommandLCM(0x38,0);
  49   1      Delay5ms();             
  50   1      WriteCommandLCM(0x38,0);
  51   1      Delay5ms();                     
  52   1      WriteCommandLCM(0x38,1);
  53   1      WriteCommandLCM(0x08,1);
  54   1      WriteCommandLCM(0x01,1);
  55   1      WriteCommandLCM(0x06,1);
C51 COMPILER V7.06   CS22_2                                                                02/20/2007 20:53:56 PAGE 2   

  56   1      WriteCommandLCM(0x0c,1);
  57   1      }                       
  58          /*****************************************/
  59          void Delay5ms(void)             
  60          {                               
  61   1      uint i=5552;                    
  62   1      while(i--);
  63   1      }                               
  64          /****************************************/
  65          void Delay400ms(void)   
  66          {                                       
  67   1      uchar i=5;                              
  68   1      uint j;                                 
  69   1              while(i--)                      
  70   1              {                               
  71   2              j=7269;                         
  72   2              while(j--);                     
  73   2              }                                       
  74   1      }                               
  75          /*****************************************/
  76          void LocateXY(char posx,char posy)
  77          {                                               
  78   1      uchar temp;                             
  79   1              temp&=0x7f;                     
  80   1              temp=posx&0x0f; 
  81   1              posy&=0x01;                     
  82   1              if(posy)temp|=0x40;     
  83   1              temp|=0x80;                     
  84   1              WriteCommandLCM(temp,0);
  85   1      }                                               
  86          /*****************************************/
  87          void WaitForEnable(void)        
  88          {                               
  89   1      DataPort=0xff;          
  90   1      LCM_RS=0;LCM_RW=1;_nop_();
  91   1      LCM_EN=1;_nop_();_nop_();
  92   1      while(DataPort&0x80);   
  93   1      LCM_EN=0;               
  94   1      }               
  95          /*****************************************/
  96          void WriteDataLCM(uchar dataW)
  97          {                                       
  98   1      WaitForEnable();                        
  99   1      LCM_RS=1;LCM_RW=0;_nop_();
 100   1      DataPort=dataW;_nop_(); 
 101   1      LCM_EN=1;_nop_();_nop_();LCM_EN=0;
 102   1      }                       
 103          /*****************************************/
 104          void WriteCommandLCM(uchar CMD,uchar Attribc)
 105          {                               
 106   1      if(Attribc)WaitForEnable();     
 107   1      LCM_RS=0;LCM_RW=0;_nop_();
 108   1      DataPort=CMD;_nop_();   
 109   1      LCM_EN=1;_nop_();_nop_();LCM_EN=0;
 110   1      }                               
 111          /****************************************/
 112          void Display(uchar dd)          
 113          {                                               
 114   1      uchar i;                                        
 115   1              for(i=0;i<16;i++){              
 116   2              DisplayOneChar(i,1,dd++);
 117   2              dd&=0x7f;       
C51 COMPILER V7.06   CS22_2                                                                02/20/2007 20:53:56 PAGE 3   

 118   2              if(dd<32)dd=32;         
 119   2              }       
 120   1      }       
 121          /****************************************/
 122          void DisplayOneChar(uchar x,uchar y,uchar Wdata)
 123          {                                               
 124   1      LocateXY(x,y);          
 125   1      WriteDataLCM(Wdata);    
 126   1      }                      
 127          /****************************************/
 128          void ePutstr(uchar x,uchar y,uchar code *ptr)
 129          {                                       
 130   1      uchar i,l=0;                    
 131   1              while(ptr[l]>31){l++;}  
 132   1              for(i=0;i<l;i++){       
 133   2              DisplayOneChar(x++,y,ptr[i]);
 134   2              if(x==16){              
 135   3                      x=0;y^=1;       
 136   3              }                       
 137   2        }                             
 138   1      }                               
 139          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    382    ----
   CONSTANT SIZE    =     33    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      11
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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