lcd.lst

来自「基于51单片机实现UART通信 SPI通信 和IIC通信」· LST 代码 · 共 215 行

LST
215
字号
C51 COMPILER V7.50   LCD                                                                   05/24/2008 19:43:51 PAGE 1   


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

line level    source

   1          #include "Includes.h"
   2          
   3          
   4          /*************************************************
   5              模块级变量申明                 
   6          *************************************************/
   7          static void     LCD_WriteDat(int8u lcd_dat);
   8          static void     LCD_WriteCmd(int8u lcd_cmd);
   9          static int8u    LCD_ReadStatus(void);
  10          static void     LCD_Goto(int8u x,int8u y);
  11          
  12          /*******************************************************************************
  13          *** 函 数 名: void main(void)
  14          *** 功能描述: 
  15          *** 全局变量: 
  16          *** 输          入: 
  17          *** 输          出: 
  18          *** 创 建 人:huangtiexiong                       日期:2006-11-28
  19          *** 修 改 人:                                                                          日期:2006-11-28
  20          *** 函数说明: 
  21          /******************************************************************************/
  22          extern void     LCD_Init(void)
  23          {
  24   1              Delay20ms();
  25   1        LCD_WriteCmd(0x38);   //功能设置:8位机接口、双行显示、5×7字符点阵;
  26   1              LCD_WriteCmd(0x0c);     //显示控制:光标开启、字符不闪烁;
  27   1              LCD_WriteCmd(0x01);     //清屏;
  28   1              LCD_WriteCmd(0x06);     //访问模式:光标右移一位、整屏不移动;
  29   1        LCD_Goto(0,0);
  30   1              }
  31          static void     LCD_WriteDat(int8u lcd_dat)
  32          {
  33   1              int8u tmp;
  34   1              tmp = LCD_ReadStatus();         //读状态;
  35   1              while((tmp & 0x80))                     //是否忙 ?
  36   1                      {
  37   2                              tmp = LCD_ReadStatus();
  38   2                              }
  39   1              #if 0
                      LCD_RS = 1;
                      LCD_RW = 0;
                      LCD_EN = 1;
                _nop_();
                _nop_();
                      LCD_DATA = lcd_dat;
                _nop_();
                _nop_();
                      LCD_EN = 0;             
                      #endif
  50   1              LCD_RS = 1;
  51   1              LCD_RW = 0;
  52   1              LCD_DATA = lcd_dat;
  53   1              _nop_();
  54   1              LCD_EN = 0;
  55   1              _nop_();
C51 COMPILER V7.50   LCD                                                                   05/24/2008 19:43:51 PAGE 2   

  56   1              _nop_();
  57   1              LCD_EN = 1;
  58   1              
  59   1              }
  60          static void     LCD_WriteCmd(int8u lcd_cmd)
  61          {
  62   1              int8u tmp;
  63   1              tmp = LCD_ReadStatus();
  64   1              while((tmp & 0x80))
  65   1              {
  66   2                      tmp = LCD_ReadStatus();
  67   2                      }
  68   1              #if 0
                      LCD_RS = 0;
                      LCD_RW = 0;
                      LCD_EN = 1;
                _nop_();
                _nop_();
                      LCD_DATA = lcd_cmd;
                _nop_();
                _nop_();
                      LCD_EN = 0;     
                      #endif
  79   1              LCD_RS = 0;
  80   1              LCD_RW = 0;
  81   1              LCD_DATA = lcd_cmd;
  82   1              _nop_();
  83   1              LCD_EN = 0;
  84   1              _nop_();
  85   1              _nop_();
  86   1              LCD_EN = 1;
  87   1              }
  88          static int8u    LCD_ReadStatus(void)
  89          {
  90   1              int8u tmp;
  91   1              #if 0
                      LCD_RS = 0;
                      LCD_RW = 1;
                      LCD_EN = 1;
                      tmp = LCD_DATA;
                      LCD_EN = 0;
                      #endif
  98   1              LCD_DATA = 0xff;
  99   1              LCD_RS = 0;
 100   1              LCD_RW = 1;
 101   1              LCD_EN = 0;
 102   1              _nop_();
 103   1              _nop_();
 104   1              LCD_EN = 1;
 105   1              tmp = LCD_DATA;
 106   1              return tmp;
 107   1              }
 108          static void     LCD_Goto(int8u x,int8u y)
 109          {
 110   1              int8u tmp;
 111   1              if(y)                           //若是第二行;
 112   1                      {
 113   2                              tmp = 0xc0 + x;
 114   2                              LCD_WriteCmd(tmp);
 115   2                              }
 116   1              else
 117   1                      {
C51 COMPILER V7.50   LCD                                                                   05/24/2008 19:43:51 PAGE 3   

 118   2                              tmp = 0x80 + x;
 119   2                              LCD_WriteCmd(tmp);
 120   2                              }               
 121   1              }
 122          
 123          
 124          #if 0
              extern void LCD_DisplayShiftR(void)                             //整屏右移;
              {
                      LCD_WriteCmd(0x1f);
                      }
              
              extern void LCD_DisplayShiftL(void)                             //整屏左移;
              {
                      LCD_WriteCmd(0x18);
                      }
              #endif
 135                  
 136          extern void LCD_Display(int8u row,int8u *str)
 137          {
 138   1              if(row)
 139   1                      {
 140   2                              LCD_Goto(0,1);
 141   2                              }
 142   1        else 
 143   1              {
 144   2                      LCD_Goto(0,0);
 145   2                      }
 146   1        while(*str != '\0')
 147   1        {
 148   2              LCD_WriteDat(*str++);
 149   2              }
 150   1              }
 151          
 152          #if 0
              extern void LCD_Display(int8u x,int8u y,int8u disp_dat)
              {
                      LCD_Goto(x,y);
                      LCD_WriteDat(disp_dat);
                      }
              #endif
 159          
 160          #if 0   
              extern void     LCD_Display(int8u disp_dat)
              {
                      int8u tmp;
                      tmp = LCD_ReadStatus();
                      tmp &= 0x7f;  
                      if(tmp == 0x10)                 //第一行显示满则转向第二行;
                              {
                                      LCD_Goto(0,1);
                                      }
                      if(tmp == 0x50)                 //全屏显示满则清屏;
                              {
                                      LCD_WriteCmd(0x01);
                                      }
                      LCD_WriteDat(disp_dat);         //将接收字符显示在LCD屏上;
                      }
              #endif
 177          
 178          extern void Delay20ms()   //粗略延时;
 179          {
C51 COMPILER V7.50   LCD                                                                   05/24/2008 19:43:51 PAGE 4   

 180   1        int16u tmp = 50000;
 181   1        while(tmp--);
 182   1        }
 183          /*******************************************************************************
 184          ****                              End Of File
 185          *******************************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    189    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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