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

📄 lcd.lst

📁 ds18b20的一个完整程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   LCD                                                                   01/17/2007 08:38:51 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.C BROWSE DEBUG OBJECTEXTEND CODE TABS(2)

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 main(void)
  25          *** 功能描述: 
  26          *** 全局变量: 
  27          *** 输    入: 
  28          *** 输    出: 
  29          *** 创 建 人:huangtiexiong       日期:2006-11-28
  30          *** 修 改 人:                    日期:2006-11-28
  31          *** 函数说明: 
  32          /******************************************************************************/
  33          extern void   LCD_Init(void)
  34          {
  35   1        Delay20ms();
  36   1        LCD_WriteCmd(0x38); //功能设置:8位机接口、双行显示、5×7字符点阵;
  37   1        LCD_WriteCmd(0x0c); //显示控制:光标开启、字符不闪烁;
  38   1        LCD_WriteCmd(0x01); //清屏;
  39   1        LCD_WriteCmd(0x06); //访问模式:光标右移一位、整屏不移动;
  40   1        LCD_Goto(0,0);
  41   1        }
  42          static void   LCD_WriteDat(int8u lcd_dat)
  43          {
  44   1        int8u tmp;
  45   1        tmp = LCD_ReadStatus();   //读状态;
  46   1        while((tmp & 0x80))     //是否忙 ?
  47   1          {
  48   2            tmp = LCD_ReadStatus();
  49   2            }
  50   1        #if 0
                LCD_RS = 1;
                LCD_RW = 0;
                LCD_EN = 1;
                _nop_();
                _nop_();
C51 COMPILER V8.02   LCD                                                                   01/17/2007 08:38:51 PAGE 2   

                LCD_DATA = lcd_dat;
                _nop_();
                _nop_();
                LCD_EN = 0;   
                #endif
  61   1        LCD_RS = 1;
  62   1        LCD_RW = 0;
  63   1        LCD_DATA = lcd_dat;
  64   1        _nop_();
  65   1        LCD_EN = 0;
  66   1        _nop_();
  67   1        _nop_();
  68   1        LCD_EN = 1;
  69   1        
  70   1        }
  71          static void   LCD_WriteCmd(int8u lcd_cmd)
  72          {
  73   1        int8u tmp;
  74   1        tmp = LCD_ReadStatus();
  75   1        while((tmp & 0x80))
  76   1        {
  77   2          tmp = LCD_ReadStatus();
  78   2          }
  79   1        #if 0
                LCD_RS = 0;
                LCD_RW = 0;
                LCD_EN = 1;
                _nop_();
                _nop_();
                LCD_DATA = lcd_cmd;
                _nop_();
                _nop_();
                LCD_EN = 0; 
                #endif
  90   1        LCD_RS = 0;
  91   1        LCD_RW = 0;
  92   1        LCD_DATA = lcd_cmd;
  93   1        _nop_();
  94   1        LCD_EN = 0;
  95   1        _nop_();
  96   1        _nop_();
  97   1        LCD_EN = 1;
  98   1        }
  99          static int8u  LCD_ReadStatus(void)
 100          {
 101   1        int8u tmp;
 102   1        #if 0
                LCD_RS = 0;
                LCD_RW = 1;
                LCD_EN = 1;
                tmp = LCD_DATA;
                LCD_EN = 0;
                #endif
 109   1        LCD_DATA = 0xff;
 110   1        LCD_RS = 0;
 111   1        LCD_RW = 1;
 112   1        LCD_EN = 0;
 113   1        _nop_();
 114   1        _nop_();
 115   1        LCD_EN = 1;
 116   1        tmp = LCD_DATA;
 117   1        return tmp;
C51 COMPILER V8.02   LCD                                                                   01/17/2007 08:38:51 PAGE 3   

 118   1        }
 119          static void   LCD_Goto(int8u x,int8u y)
 120          {
 121   1        int8u tmp;
 122   1        if(y)       //若是第二行;
 123   1          {
 124   2            tmp = 0xc0 + x;
 125   2            LCD_WriteCmd(tmp);
 126   2            }
 127   1        else
 128   1          {
 129   2            tmp = 0x80 + x;
 130   2            LCD_WriteCmd(tmp);
 131   2            }   
 132   1        }
 133          
 134          
 135          #if 0
              extern void LCD_DisplayShiftR(void)       //整屏右移;
              {
                LCD_WriteCmd(0x1f);
                }
              
              extern void LCD_DisplayShiftL(void)       //整屏左移;
              {
                LCD_WriteCmd(0x18);
                }
              #endif
 146            
 147          extern void LCD_Display(int8u row,int8u *str)
 148          {
 149   1        if(row)
 150   1          {
 151   2            LCD_Goto(0,1);
 152   2            }
 153   1        else 
 154   1          {
 155   2            LCD_Goto(0,0);
 156   2            }
 157   1        while(*str != '\0')
 158   1        {
 159   2          LCD_WriteDat(*str++);
 160   2          }
 161   1        }
 162          
 163          #if 0
              extern void LCD_Display(int8u x,int8u y,int8u disp_dat)
              {
                LCD_Goto(x,y);
                LCD_WriteDat(disp_dat);
                }
              #endif
 170          
 171          #if 0 
              extern void   LCD_Display(int8u disp_dat)
              {
                int8u tmp;
                tmp = LCD_ReadStatus();
                tmp &= 0x7f;  
                if(tmp == 0x10)     //第一行显示满则转向第二行;
                  {
                    LCD_Goto(0,1);
C51 COMPILER V8.02   LCD                                                                   01/17/2007 08:38:51 PAGE 4   

                    }
                if(tmp == 0x50)     //全屏显示满则清屏;
                  {
                    LCD_WriteCmd(0x01);
                    }
                LCD_WriteDat(disp_dat);   //将接收字符显示在LCD屏上;
                }
              #endif
 188          
 189          extern void Delay20ms()   //粗略延时;
 190          {
 191   1        int16u tmp = 50000;
 192   1        while(tmp--);
 193   1        }
 194          /*******************************************************************************
 195          ****                              End Of File
 196          *******************************************************************************/
C51 COMPILER V8.02   LCD                                                                   01/17/2007 08:38:51 PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION LCD_Init (BEGIN)
                                           ; SOURCE LINE # 33
                                           ; SOURCE LINE # 34
                                           ; SOURCE LINE # 35
0000 120000      R     LCALL   Delay20ms
                                           ; SOURCE LINE # 36
0003 7F38              MOV     R7,#038H
0005 120000      R     LCALL   _LCD_WriteCmd
                                           ; SOURCE LINE # 37
0008 7F0C              MOV     R7,#0CH
000A 120000      R     LCALL   _LCD_WriteCmd
                                           ; SOURCE LINE # 38
000D 7F01              MOV     R7,#01H
000F 120000      R     LCALL   _LCD_WriteCmd
                                           ; SOURCE LINE # 39
0012 7F06              MOV     R7,#06H
0014 120000      R     LCALL   _LCD_WriteCmd
                                           ; SOURCE LINE # 40

⌨️ 快捷键说明

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