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

📄 lcd.lst

📁 PCF8563的驱动程序
💻 LST
字号:
C51 COMPILER V7.50   LCD                                                                   12/01/2007 19:20:00 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          /******************************************************************************/
   2          /**
   3          /** 模 块 名: -------------------Virtual_UART.C-----------------------------
   4          /**            -----------------虚拟串口调试------------------------------*/
   5          /** 功能描述: 
   6          /**
   7          /** 创 建 人: huangtiexiong    日期:2006-11-28   */
   8          /** 修 改 人:                  日期:2006-11-28   */ 
   9          /** 其他说明: 
  10          /******************************************************************************/
  11          
  12          #include "Includes.h"
  13          
  14          
  15          /*************************************************
  16              模块级变量申明                 
  17          *************************************************/
  18          static void     LCD_WriteDat(int8u lcd_dat);
  19          static void     LCD_WriteCmd(int8u lcd_cmd);
  20          static int8u    LCD_ReadStatus(void);
  21          static void     LCD_Goto(int8u x,int8u y);
  22          
  23          /*******************************************************************************
  24          *** 函 数 名: void LCD_Init(void)
  25          *** 功能描述: 
  26          *** 全局变量: 
  27          *** 输          入: 
  28          *** 输          出: 
  29          *** 创 建 人:huangtiexiong                       日期:2006-11-28
  30          *** 修 改 人:                                                                          日期:2006-11-28
  31          *** 函数说明: 字符LCD初始化;
  32          /******************************************************************************/
  33          extern void     LCD_Init(void)
  34          {
  35   1              Delay20ms();
  36   1              /*************************************************
  37   1               功能设置:     DB5=1;DB6...=0;
  38   1                                                              DB4=1:8位接口; 0:4位接口;
  39   1                                                              DB3=1:双行显示;0:单行显示;
  40   1                                                              DB3=1:5×10点阵;0:5×7点阵;                
  41   1              *************************************************/
  42   1        LCD_WriteCmd(0x38);   //8位机接口、双行显示、5×7字符点阵;
  43   1              /*************************************************
  44   1                显示控制:DB3=1;DB4...=0;
  45   1                                                      DB2=1:开启显示;0:关闭LCD显示;
  46   1                                                      DB1=1:显示光标;0:光标隐藏;
  47   1                                                      DB0=1:光标闪烁;0:光标闪烁关闭;
  48   1              *************************************************/
  49   1              LCD_WriteCmd(0x0c);     //显示开启、光标不显示也不闪烁;
  50   1              /*************************************************
  51   1                清屏指令:DB0=1;DB1...=0;
  52   1              *************************************************/
  53   1              LCD_WriteCmd(0x01);     //清屏;
  54   1              /****************************************************************
  55   1                访问模式:DB2=1;DB3...=0;
C51 COMPILER V7.50   LCD                                                                   12/01/2007 19:20:00 PAGE 2   

  56   1                                                      DB1=1:对内部Ram读写后AC自增,否则自减;
  57   1                                                      DB0=1:与DB1设置有关,对DD RAM写时同时整屏移动1位;
  58   1              *****************************************************************/
  59   1              LCD_WriteCmd(0x06);     //光标右移一位、整屏不移动;
  60   1        
  61   1        LCD_Goto(0,0);
  62   1              }
  63          static void     LCD_WriteDat(int8u lcd_dat)
  64          {
  65   1              int8u tmp;
  66   1              tmp = LCD_ReadStatus();         //读状态;
  67   1              while((tmp & 0x80))                     //是否忙 ?
  68   1                      {
  69   2                              tmp = LCD_ReadStatus();
  70   2                              }
  71   1              #if 0
                      LCD_RS = 1;
                      LCD_RW = 0;
                      LCD_EN = 1;
                _nop_();
                _nop_();
                      LCD_DATA = lcd_dat;
                _nop_();
                _nop_();
                      LCD_EN = 0;             
                      #endif
  82   1              LCD_RS = 1;
  83   1              LCD_RW = 0;
  84   1              LCD_DATA = lcd_dat;
  85   1              _nop_();
  86   1              LCD_EN = 0;
  87   1              _nop_();
  88   1              _nop_();
  89   1              LCD_EN = 1;
  90   1              
  91   1              }
  92          static void     LCD_WriteCmd(int8u lcd_cmd)
  93          {
  94   1              int8u tmp;
  95   1              tmp = LCD_ReadStatus();
  96   1              while((tmp & 0x80))
  97   1              {
  98   2                      tmp = LCD_ReadStatus();
  99   2                      }
 100   1              #if 0
                      LCD_RS = 0;
                      LCD_RW = 0;
                      LCD_EN = 1;
                _nop_();
                _nop_();
                      LCD_DATA = lcd_cmd;
                _nop_();
                _nop_();
                      LCD_EN = 0;     
                      #endif
 111   1              LCD_RS = 0;
 112   1              LCD_RW = 0;
 113   1              LCD_DATA = lcd_cmd;
 114   1              _nop_();
 115   1              LCD_EN = 0;
 116   1              _nop_();
 117   1              _nop_();
C51 COMPILER V7.50   LCD                                                                   12/01/2007 19:20:00 PAGE 3   

 118   1              LCD_EN = 1;
 119   1              }
 120          static int8u    LCD_ReadStatus(void)
 121          {
 122   1              int8u tmp;
 123   1              #if 0
                      LCD_RS = 0;
                      LCD_RW = 1;
                      LCD_EN = 1;
                      tmp = LCD_DATA;
                      LCD_EN = 0;
                      #endif
 130   1              LCD_DATA = 0xff;
 131   1              LCD_RS = 0;
 132   1              LCD_RW = 1;
 133   1              LCD_EN = 0;
 134   1              _nop_();
 135   1              _nop_();
 136   1              LCD_EN = 1;
 137   1              tmp = LCD_DATA;
 138   1              return tmp;
 139   1              }
 140          static void     LCD_Goto(int8u x,int8u y)
 141          {
 142   1              int8u tmp;
 143   1              if(y)                           //若是第二行;
 144   1                      {
 145   2                              tmp = 0xc0 + x;
 146   2                              LCD_WriteCmd(tmp);
 147   2                              }
 148   1              else
 149   1                      {
 150   2                              tmp = 0x80 + x;
 151   2                              LCD_WriteCmd(tmp);
 152   2                              }               
 153   1              }
 154          
 155          #if 0
              extern void LCD_DisplayShiftR(void)                             //整屏右移;
              {
                      LCD_WriteCmd(0x1f);
                      }
              
              extern void LCD_DisplayShiftL(void)                             //整屏左移;
              {
                      LCD_WriteCmd(0x18);
                      }
              #endif  
 166                  
 167          extern void LCD_Display(int8u row,int8u *str)
 168          {
 169   1              if(row)
 170   1                      {
 171   2                              LCD_Goto(0,1);
 172   2                              }
 173   1        else 
 174   1              {
 175   2                      LCD_Goto(0,0);
 176   2                      }
 177   1        while(*str != '\0')
 178   1        {
 179   2              LCD_WriteDat(*str++);
C51 COMPILER V7.50   LCD                                                                   12/01/2007 19:20:00 PAGE 4   

 180   2              }
 181   1              }
 182          
 183          #if 0
              extern void LCD_Display(int8u x,int8u y,int8u disp_dat)
              {
                      LCD_Goto(x,y);
                      LCD_WriteDat(disp_dat);
                      }
              #endif
 190          
 191          #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
 208          
 209          extern void Delay20ms()   //粗略延时;
 210          {
 211   1        int16u tmp = 50000;
 212   1        while(tmp--);
 213   1        }
 214          /*******************************************************************************
 215          ****                              End Of File
 216          *******************************************************************************/


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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -