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

📄 lcd.lst

📁 RTL8019以太网开发板资料
💻 LST
字号:
C51 COMPILER V8.18   LCD                                                                   06/19/2010 21:01:39 PAGE 1   


C51 COMPILER V8.18, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.C LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************************ 
   2          *  Copyright (c) 2007,重庆优易特电子 
   3          *            All rights reserved. 
   4          * 
   5          * 文件名称: main.c 
   6          * 文件标识: none 
   7          * 适用器件: STC89C51RC 
   8          * 
   9          * 摘 要:   1602液晶显示程序,显示简单的字母,也可以显示数字,但是不能显示汉字 
  10          * 
  11          * 当前版本:1.0 
  12          * 作 者:行卫军 
  13          * 完成日期:2007年12月10日 
  14          * 
  15          *************************************************************************************/ 
  16          #include "STC89C54RD.h" 
  17          #include "lcd.h" 
  18          
  19          #define LCM_Data  P1   //数据端口 
  20          #define Busy    0x80 //用于检测LCM状态字中的Busy标识 
  21          
  22          sbit LCM_RW= P3^4; //定义信号引脚 
  23          sbit LCM_RS= P3^3 ; 
  24          sbit LCM_E=  P4^2 ; 
  25          
  26          //unsigned char code uctech[] = {"QZC_NET IP:"}; 
  27          //unsigned char code net[] = {"IP: 192.168.1.100"}; 
  28          
  29          /*********************************************************************
  30          函数名:  void LCD_WriteData(unsigned char WDLCM) 
  31          功能:       //写数据  
  32          输入:         ucTick 
  33          输出:         None
  34          返回:         None
  35          日期:         2004/02/04
  36          *********************************************************************/
  37          void LCD_WriteData(unsigned char WDLCM) 
  38          { 
  39   1           WDTCONTR |= CLR_WDT;   //复位看门狗定时器    
  40   1              LCD_ReadStatus(); //检测忙 
  41   1              LCM_Data = WDLCM; 
  42   1              LCM_RS = 1; 
  43   1              LCM_RW = 0; 
  44   1              LCM_E = 0;      //若晶振速度太高可以在这后加小的延时 
  45   1              LCM_E = 0;      //延时 
  46   1              LCM_E = 1; 
  47   1      }
  48          /*********************************************************************
  49          函数名:  void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测 
  50          功能:       //写指令
  51          输入:         ucTick 
  52          输出:         None
  53          返回:         None
  54          日期:         2004/02/04
  55          *********************************************************************/
C51 COMPILER V8.18   LCD                                                                   06/19/2010 21:01:39 PAGE 2   

  56          
  57          void LCD_WriteCom(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测 
  58          { 
  59   1              if (BuysC) LCD_ReadStatus();    //根据需要检测忙 
  60   1              LCM_Data = WCLCM; 
  61   1              LCM_RS = 0; 
  62   1              LCM_RW = 0; 
  63   1              LCM_E = 0; 
  64   1              LCM_E = 0; 
  65   1              LCM_E = 1; 
  66   1      }
  67          /*********************************************************************
  68          函数名:   unsigned char LCD_ReadByte(void)
  69          功能:       读数据    
  70          输入:         ucTick 
  71          输出:         None
  72          返回:         None
  73          日期:         2004/02/04
  74          *********************************************************************
  75          unsigned char LCD_ReadByte(void) 
  76          { 
  77                  LCM_RS = 1; 
  78                  LCM_RW = 1; 
  79                  LCM_E = 0; 
  80                  LCM_E = 0; 
  81                  LCM_E = 1; 
  82                  return(LCM_Data); 
  83          }
  84          */
  85          /*********************************************************************
  86          函数名:  unsigned char LCD_ReadStatus(void)
  87          功能:       读状态  
  88          输入:         ucTick 
  89          输出:         None
  90          返回:         None
  91          日期:         2004/02/04
  92          *********************************************************************/
  93           
  94          unsigned char LCD_ReadStatus(void) 
  95          { 
  96   1              LCM_Data = 0xFF; 
  97   1              LCM_RS = 0; 
  98   1              LCM_RW = 1; 
  99   1              LCM_E = 0; 
 100   1              LCM_E = 0; 
 101   1              LCM_E = 1; 
 102   1              LCD_Delay5Ms();
 103   1              WDTCONTR |= CLR_WDT;   //复位看门狗定时器
 104   1      
 105   1      //      while (LCM_Data & Busy)    //检测忙信号 
 106   1      //      {
 107   1      //                WDTCONTR |= CLR_WDT;   //复位看门狗定时器    
 108   1      //      } 
 109   1              return(LCM_Data); 
 110   1      }
 111          /*********************************************************************
 112          函数名:    void LCD_Init(void) 
 113          功能:        //LCM初始化   
 114          输入:         ucTick 
 115          输出:         None
 116          返回:         None
 117          日期:         2004/02/04
C51 COMPILER V8.18   LCD                                                                   06/19/2010 21:01:39 PAGE 3   

 118          *********************************************************************/
 119          void LCD_Init(void) 
 120          { 
 121   1              LCM_Data = 0; 
 122   1              LCD_WriteCom(0x38,0); //三次显示模式设置,不检测忙信号 
 123   1              LCD_Delay5Ms(); 
 124   1              LCD_WriteCom(0x38,0); 
 125   1              LCD_Delay5Ms(); 
 126   1              LCD_WriteCom(0x38,0); 
 127   1              LCD_Delay5Ms(); 
 128   1              LCD_WriteCom(0x38,1); //显示模式设置,开始要求每次检测忙信号 
 129   1              LCD_WriteCom(0x08,1); //关闭显示 
 130   1              LCD_WriteCom(0x01,1); //显示清屏 
 131   1              LCD_WriteCom(0x06,1); // 显示光标移动设置 
 132   1              LCD_WriteCom(0x0C,1); // 显示开及光标设置 
 133   1      }
 134          /*********************************************************************
 135          函数名:     void LCD_DisplayByte(unsigned char X, unsigned char Y, unsigned char DData) 
 136          功能:        按指定位置显示一个字符  
 137          输入:         ucTick 
 138          输出:         None
 139          返回:         None
 140          日期:         2004/02/04
 141          *********************************************************************/
 142          void LCD_DisplayByte(unsigned char X, unsigned char Y, unsigned char DData)   
 143                                             //x表示列、y 表示行 
 144          { 
 145   1              Y &= 0x1; 
 146   1              X &= 0xF;               //限制X不能大于15,Y不能大于1 
 147   1              if (Y) X |= 0x40;       //当要显示第二行时地址码+0x40; 
 148   1              X |= 0x80;              // 算出指令码 
 149   1              LCD_WriteCom(X, 0);  //这里不检测忙信号,发送地址码 
 150   1              LCD_WriteData(DData); 
 151   1      }
 152          /*********************************************************************
 153          函数名:      void LCD_DisplayString(unsigned char X, unsigned char Y, unsigned char code *DData) 
 154          功能:        按指定位置显示一串字符 
 155          输入:         ucTick 
 156          输出:         None
 157          返回:         None
 158          日期:         2004/02/04
 159          *********************************************************************/
 160          
 161          void LCD_DisplayString(unsigned char X, unsigned char Y, unsigned char code *DData) 
 162          { 
 163   1              unsigned char ListLength; 
 164   1              ListLength = 0; 
 165   1              Y &= 0x1; 
 166   1              X &= 0xF;                      //限制X不能大于15,Y不能大于1 
 167   1           WDTCONTR |= CLR_WDT;   //复位看门狗定时器    
 168   1              while (DData[ListLength]>0x20) //若到达字串尾则退出,字符长度小于32 
 169   1              { 
 170   2                      if (X <= 0xF)                //X坐标应小于0xF(15) 
 171   2                      { 
 172   3                           WDTCONTR |= CLR_WDT;   //复位看门狗定时器    
 173   3                              LCD_DisplayByte(X, Y, DData[ListLength]); //显示单个字符 
 174   3                              ListLength++; 
 175   3                              X++; 
 176   3                      } 
 177   2              } 
 178   1      } 
 179          /*********************************************************************
C51 COMPILER V8.18   LCD                                                                   06/19/2010 21:01:39 PAGE 4   

 180          函数名:      void LCD_Delay5Ms(void)
 181          功能:        延时5ms 
 182          输入:         ucTick 
 183          输出:         None
 184          返回:         None
 185          日期:         2004/02/04
 186          *********************************************************************/
 187          void LCD_Delay5Ms(void) //延时5ms 
 188          { 
 189   1              unsigned int i; 
 190   1              for(i=0;i<500;i++) 
 191   1              ;; 
 192   1      }
 193          


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