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

📄 lcd.lst

📁 KeilC51开发,51单片机与E2PROM的接口程序,并且有串口与液晶的输出.
💻 LST
字号:
C51 COMPILER V7.06   LCD                                                                   07/28/2005 18:33:04 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          #include <reg51.h>
   2          #include <intrins.h>
   3          #include <8255A.h>
   4          #include <LCD.h>
   5          
   6          #define Busy    0x80
   7          
   8          #define SetRS() SetCBit(0,1)
   9          #define ClrRS() SetCBit(0,0)
  10          #define SetRW() SetCBit(1,1)
  11          #define ClrRW() SetCBit(1,0)
  12          #define SetE()  SetCBit(2,1)
  13          #define ClrE()  SetCBit(2,0)
  14          
  15          /*
  16          static void SetRS();
  17          static void ClrRS();
  18          static void SetRW();
  19          static void ClrRW();
  20          static void SetE();
  21          static void ClrE();
  22          */
  23          //static void LcdWriteData(char);
  24          //static void LcdWriteCommand(Uchar, Uchar);
  25          //static void WaitForEnable();
  26          //static void Delay5Ms();
  27          //static void Delay400Ms();
  28          
  29          
  30          void WaitForEnable()
  31          {
  32   1      
  33   1              //PortA = 0xff;
  34   1      
  35   1              SelectForm0(1, 0, 0, 0);
  36   1              ClrRS();
  37   1              SetRW();
  38   1              _nop_();
  39   1      
  40   1              SetE();
  41   1              _nop_();
  42   1              _nop_();
  43   1              
  44   1              
  45   1              while( PortA & Busy );
  46   1              
  47   1              SelectForm0(0, 0, 0, 0);
  48   1              ClrE();
  49   1      }
  50          
  51          
  52          void LcdWriteCommand(Uchar CMD, Uchar AttribC )
  53          {
  54   1              if (AttribC) WaitForEnable();
  55   1              ClrRS();
C51 COMPILER V7.06   LCD                                                                   07/28/2005 18:33:04 PAGE 2   

  56   1              ClrRW();
  57   1              _nop_();
  58   1              PortA = CMD;
  59   1              _nop_();
  60   1              
  61   1              SetE();
  62   1              _nop_();
  63   1              _nop_();
  64   1              ClrE(); 
  65   1      }
  66                  
  67          /*=======================================================
  68           当前位置写字符子程序: E =1 RS=1 RW=0
  69          =======================================================*/
  70          void LcdWriteData( char dataW )
  71          {
  72   1      
  73   1              WaitForEnable();
  74   1              SetRS();
  75   1              ClrRW();
  76   1              _nop_();
  77   1      
  78   1          PortA = dataW;
  79   1              _nop_();
  80   1      
  81   1              SetE();
  82   1              _nop_();
  83   1              _nop_();
  84   1              ClrE();         // 操作允许脉冲信号             
  85   1      
  86   1      }
  87          
  88          void LocateXY( char posx,char posy) 
  89          {
  90   1              Uchar temp;
  91   1      
  92   1              temp = posx & 0xf;
  93   1              posy &= 0x1;
  94   1              if ( posy ) temp |= 0x40;
  95   1              temp |= 0x80;
  96   1              LcdWriteCommand(temp,0);
  97   1      }
  98          
  99          void Delay5Ms(void)
 100          {
 101   1              Uint i = 5552;
 102   1              while(i--);
 103   1      }
 104          
 105          //长延时
 106          void Delay400Ms(void)
 107          {
 108   1              Uchar i = 5;
 109   1              Uint j;
 110   1              while(i--)
 111   1              {
 112   2                      j=7269;
 113   2                      while(j--);
 114   2              }
 115   1      }
 116          
 117          void DisplayOneChar(Uchar x,Uchar y,Uchar Wdata) 
C51 COMPILER V7.06   LCD                                                                   07/28/2005 18:33:04 PAGE 3   

 118          {
 119   1      
 120   1              LocateXY( x, y );                               // 定位显示地址
 121   1              LcdWriteData( Wdata );                  // 写字符
 122   1              Delay5Ms();
 123   1      
 124   1      }
 125          
 126          void DisplayXString(Uchar x, Uchar y, Uchar* pStr)
 127          {
 128   1              int i, tempy=y;
 129   1              
 130   1              for(i=0;*(pStr+i)!=0;i++)
 131   1              {       
 132   2                      if(x+i>15) tempy=y+1;
 133   2                      LocateXY(x+i, tempy);
 134   2                      LcdWriteData( *(pStr+i) );                      // 写字符
 135   2              }
 136   1      }
 137          
 138          void DisplayString(Uchar x, Uchar y, Uchar* pStr, Uint len)
 139          {
 140   1              Uint i, tempy=y;
 141   1              
 142   1              for(i=0;i<len;i++)
 143   1              {       
 144   2                      if(x+i>15) tempy=y+1;
 145   2                      LocateXY(x+i, tempy);
 146   2                      LcdWriteData( *(pStr+i) );                      // 写字符
 147   2              }
 148   1      }
 149          
 150          /*=======================================================
 151           初始化程序, 必须按照产品资料介绍的初始化过程进行
 152          =======================================================*/
 153          void LcdReset( void )
 154          {
 155   1      
 156   1              Init8255A();
 157   1              LcdWriteCommand( 0x38, 0);                      // 显示模式设置(不检测忙信号)
 158   1                      Delay5Ms();
 159   1              LcdWriteCommand( 0x38, 0);                      // 共三次
 160   1                      Delay5Ms();
 161   1              LcdWriteCommand( 0x38, 0);
 162   1                      Delay5Ms();
 163   1      
 164   1              LcdWriteCommand( 0x38, 1);                      // 显示模式设置(以后均检测忙信号)
 165   1        //  LcdWriteCommand( 0x08, 1);                        // 显示关闭
 166   1              LcdWriteCommand( CLR_SCREEN, 1);                // 显示清屏
 167   1              LcdWriteCommand( CURSOR_MOVE, 1);                       // 显示光标移动设置
 168   1              LcdWriteCommand( CURSOR_OFF, 1);                        // 显示开及光标设置
 169   1      }
 170          
 171          void LcdRightShift()
 172          {
 173   1              LcdWriteCommand( 0x1c, 1);
 174   1      
 175   1      }
 176          
 177          
 178          
 179          
C51 COMPILER V7.06   LCD                                                                   07/28/2005 18:33:04 PAGE 4   

 180          
 181          
 182          
 183          
 184          
 185          
 186          
 187          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    489    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      23
   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 + -