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

📄 lcd_drv.lst

📁 这是atmel公司的89C51SND1C的mp3源程序
💻 LST
字号:
C51 COMPILER V6.20c  LCD_DRV                                                               07/10/2002 15:17:34 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE LCD_DRV
OBJECT MODULE PLACED IN ..\obj\lcd_drv.obj
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE ..\..\..\lib_demob\lcd\lcd_drv.c BROWSE INCDIR(..\src\system;..\..\..\lib) 
                    -DEFINE(KEIL) DEBUG OBJECTEXTEND PRINT(.\lcd_drv.lst) OBJECT(..\obj\lcd_drv.obj) 

stmt level    source

   1          /*C**************************************************************************
   2          * $RCSfile: lcd_drv.c,v $
   3          *----------------------------------------------------------------------------
   4          * Copyright (c) 2002 Atmel.
   5          *----------------------------------------------------------------------------
   6          * RELEASE:      $Name: DEMO_FAT_1_2_5 $      
   7          * REVISION:     $Revision: 1.5 $     
   8          * FILE_CVSID:   $Id: lcd_drv.c,v 1.5 2002/05/24 09:51:15 njourdan Exp $       
   9          *----------------------------------------------------------------------------
  10          * PURPOSE:
  11          * This file contains the 8-bit lcd driver routines
  12          *
  13          * NOTES:
  14          * Driver Configuration:
  15          *   - LCD_CMD_ADD in board.h
  16          *   - LCD_DAT_ADD in board.h
  17          *   - FPER defined in config.h
  18          * Global Variables:
  19          *   - None
  20          *****************************************************************************/
  21          
  22          /*_____ I N C L U D E S ____________________________________________________*/
  23          
  24          #include "config.h"                         /* lib configuration header */
  25          #include "..\board.h"                       /* board definition */
  26          #include "lcd_drv.h"                        /* lcd driver definition */
  27          
  28          /*_____ M A C R O S ________________________________________________________*/
  29          
  30          
  31          /*_____ D E F I N I T I O N ________________________________________________*/
  32          
  33          xdata   Byte lcd_cmd At(LCD_CMD_ADD);
  34          xdata   Byte lcd_data At(LCD_DAT_ADD);
  35          
  36          static  Byte    lcd_line;               /* save the cursor position */
  37          
  38          /*_____ D E C L A R A T I O N ______________________________________________*/
  39          
  40          static  void    lcd_wr_cmd (char);
  41          static  void    lcd_wr_data (char);
  42          
  43          
  44          /*F**************************************************************************
  45          * NAME: lcd_init
  46          *----------------------------------------------------------------------------
  47          * PARAMS:
  48          *
  49          * return:
  50          *----------------------------------------------------------------------------
  51          * PURPOSE: 
  52          *   LCD controller initialization and configuration
  53          *----------------------------------------------------------------------------
  54          * EXAMPLE:
C51 COMPILER V6.20c  LCD_DRV                                                               07/10/2002 15:17:34 PAGE 2   

  55          *----------------------------------------------------------------------------
  56          * NOTE:
  57          *   This function is called once to initialize the LCD display
  58          *----------------------------------------------------------------------------
  59          * REQUIREMENTS:
  60          *****************************************************************************/
  61          void lcd_init (void)
  62          {
  63   1      Uint16  data  i;
  64   1      
  65   1        for (i = 0; i < TEMPO_30MS; i++);     /* initialization delay */
  66   1      
  67   1        lcd_wr_cmd(LCD_FCTSET | LCD_8BIT | LCD_2_LINE | LCD_5x8DOTS);
  68   1        lcd_wr_cmd(LCD_DISPLAY | LCD_DISP_ON | LCD_CURS_OFF | LCD_BLINK_OFF);
  69   1        lcd_wr_cmd(LCD_SET | LCD_INC | LCD_RIGHT);
  70   1        lcd_wr_cmd(LCD_CLR);
  71   1        for (i = 0; i < TEMPO_1_5MS; i++);    /* clear delay */
  72   1        lcd_line = LCD_LINE0;
  73   1      }
  74          
  75          
  76          /*F**************************************************************************
  77          * NAME: lcd_clr
  78          *----------------------------------------------------------------------------
  79          * PARAMS:
  80          *
  81          * return:
  82          *----------------------------------------------------------------------------
  83          * PURPOSE: 
  84          *   Clear display and set cusor to home
  85          *----------------------------------------------------------------------------
  86          * EXAMPLE:
  87          *----------------------------------------------------------------------------
  88          * NOTE:
  89          *   No delay is performed, it is to the attention of the user to take care
  90          *   of the clear time
  91          *----------------------------------------------------------------------------
  92          * REQUIREMENTS:
  93          *****************************************************************************/
  94          void lcd_clr (void)
  95          {
  96   1        lcd_wr_cmd(LCD_CLR);
  97   1        lcd_line = LCD_LINE0;
  98   1      }
  99          
 100          
 101          /*F**************************************************************************
 102          * NAME: lcd_set_cur
 103          *----------------------------------------------------------------------------
 104          * PARAMS:
 105          *   line:   LCD_LINE0: cursor on line 0
 106          *           LCD_LINE1: cursor on line 1
 107          *   column: column number of the new position of the cursor
 108          *
 109          * return:
 110          *----------------------------------------------------------------------------
 111          * PURPOSE: 
 112          *   Set the cursor position
 113          *----------------------------------------------------------------------------
 114          * EXAMPLE:
 115          *----------------------------------------------------------------------------
 116          * NOTE:
C51 COMPILER V6.20c  LCD_DRV                                                               07/10/2002 15:17:34 PAGE 3   

 117          *   Columns start from 0 (LCD_LINE0, 0) is home
 118          *----------------------------------------------------------------------------
 119          * REQUIREMENTS:
 120          *****************************************************************************/
 121          void lcd_set_cur (Byte line, Byte column)
 122          {
 123   1        lcd_line = line;                      /* update the line position */
 124   1        lcd_wr_cmd(line | column);            /* write the new cursor position */
 125   1      }
 126          
 127          
 128          /*F**************************************************************************
 129          * NAME: lcd_putchar
 130          *----------------------------------------------------------------------------
 131          * PARAMS:
 132          *   c: character to display
 133          *
 134          * return:
 135          *----------------------------------------------------------------------------
 136          * PURPOSE: 
 137          *   LCD display interpreter
 138          *----------------------------------------------------------------------------
 139          * EXAMPLE:
 140          *----------------------------------------------------------------------------
 141          * NOTE:
 142          *----------------------------------------------------------------------------
 143          * REQUIREMENTS:
 144          *****************************************************************************/
 145          void lcd_putchar (char c)
 146          {
 147   1        switch (c)
 148   1        {
 149   2          case C_R:                   /* Carriage Return */
 150   2          {
 151   3            lcd_set_cur(lcd_line, 0);
 152   3            break;
 153   3          }
 154   2      
 155   2          case L_F:                   /* Line Feed + Carriage Return */
 156   2          {
 157   3            lcd_set_cur((lcd_line + LCD_LINE_OFFSET), 0);
 158   3            break;
 159   3          }
 160   2      
 161   2          default:
 162   2          {
 163   3            lcd_wr_data(c);           /* write the character to the display */
 164   3            break;
 165   3          }
 166   2        }
 167   1      }
 168          
 169          
 170          /*F**************************************************************************
 171          * NAME: lcd_wr_cmd
 172          *----------------------------------------------------------------------------
 173          * PARAMS:
 174          *   cmd: command to write on the LCD driver
 175          *
 176          * return:
 177          *----------------------------------------------------------------------------
 178          * PURPOSE: 
C51 COMPILER V6.20c  LCD_DRV                                                               07/10/2002 15:17:34 PAGE 4   

 179          *   Write command on LCD 
 180          *----------------------------------------------------------------------------
 181          * EXAMPLE:
 182          *----------------------------------------------------------------------------
 183          * NOTE:
 184          *----------------------------------------------------------------------------
 185          * REQUIREMENTS:
 186          *****************************************************************************/
 187          void lcd_wr_cmd (char cmd)
 188          {
 189   1      Byte  data  i;
 190   1      
 191   1        lcd_cmd = cmd;
 192   1        for (i = 0; i < TEMPO_40US; i++);
 193   1      }
 194          
 195          
 196          /*F**************************************************************************
 197          * NAME: lcd_wr_data
 198          *----------------------------------------------------------------------------
 199          * PARAMS:
 200          *   dat: data to write on the LCD driver
 201          *
 202          * return:
 203          *----------------------------------------------------------------------------
 204          * PURPOSE: 
 205          *   Write data on LCD
 206          *----------------------------------------------------------------------------
 207          * EXAMPLE:
 208          *----------------------------------------------------------------------------
 209          * NOTE:
 210          *----------------------------------------------------------------------------
 211          * REQUIREMENTS:
 212          *****************************************************************************/
 213          void lcd_wr_data (char dat)
 214          {
 215   1      Byte  data  i;
 216   1      
 217   1        lcd_data = dat;
 218   1        for (i = 0; i < TEMPO_40US - 4; i++);
 219   1      }
 220          
 221          
 222          /*F**************************************************************************
 223          * NAME: lcd_wr_cgram
 224          *----------------------------------------------------------------------------
 225          * PARAMS:
 226          *   dat: data to write on the LCD driver
 227          *
 228          * return:
 229          *----------------------------------------------------------------------------
 230          * PURPOSE: 
 231          *   Write data on LCD CGRAM
 232          *----------------------------------------------------------------------------
 233          * EXAMPLE:
 234          *----------------------------------------------------------------------------
 235          * NOTE:
 236          *----------------------------------------------------------------------------
 237          * REQUIREMENTS:
 238          *****************************************************************************/
 239          void lcd_wr_cgram (char dat)
 240          {
C51 COMPILER V6.20c  LCD_DRV                                                               07/10/2002 15:17:34 PAGE 5   

 241   1      Byte  data  i;
 242   1      
 243   1        lcd_data = dat;
 244   1        for (i = 0; i < TEMPO_40US; i++);
 245   1      }
 246          
 247          
 248          /*F**************************************************************************
 249          * NAME: lcd_cgram
 250          *----------------------------------------------------------------------------
 251          * PARAMS:
 252          *   address:    character address in cgram
 253          *   pt_pattern: pointer on pattern in code segment
 254          *
 255          * return:
 256          *----------------------------------------------------------------------------
 257          * PURPOSE: 
 258          *   LCD controller Character Graphic RAM set-up
 259          *----------------------------------------------------------------------------
 260          * EXAMPLE:
 261          *----------------------------------------------------------------------------
 262          * NOTE:
 263          *   This function is called to re-define a graphic character
 264          *   The HD44780 controller contains 8 locations in RAM where user's
 265          *   characters can be defined
 266          *----------------------------------------------------------------------------
 267          * REQUIREMENTS:
 268          *****************************************************************************/
 269          void lcd_cgram (Byte address, Byte code *pt_pattern)
 270          {
 271   1      
 272   1        lcd_wr_cmd(LCD_CGRAM | address);      /* select character in graphic RAM */
 273   1      
 274   1        lcd_wr_cgram(pt_pattern[0]);          /* load symbols */
 275   1        lcd_wr_cgram(pt_pattern[1]);
 276   1        lcd_wr_cgram(pt_pattern[2]);
 277   1        lcd_wr_cgram(pt_pattern[3]);
 278   1        lcd_wr_cgram(pt_pattern[4]);
 279   1        lcd_wr_cgram(pt_pattern[5]);
 280   1        lcd_wr_cgram(pt_pattern[6]);
 281   1        lcd_wr_cgram(pt_pattern[7]);
 282   1      
 283   1        lcd_wr_cmd(lcd_line);                 /* select display data RAM */
 284   1      }
 285          
 286          
 287          


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