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

📄 lcd1602.lst

📁 基于51单片机
💻 LST
字号:
C51 COMPILER V6.12  LCD1602                                                                04/23/2008 15:12:07 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN D:\FSGUDO~1\单片机~1\DS1302~1\LCD1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\FSGUDO~1\单片机~1\DS1302~1\LCD1602.C DB SB OE

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          
   4          
   5          /*************************宏定义******************************/
   6          #define uchar unsigned char
   7          #define uint  unsigned int
   8          
   9          /************************管脚定义******************************/
  10          sbit LcdRs		= P1^1;     //rs
  11          sbit LcdRw		= P1^2;    //vo1.2
  12          sbit LcdEn  	= P1^0;   //1.0
  13          sfr  DBPort 	= 0x80;		//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
  14          
  15          /************************LCD写入命令或数据************************/
  16          #define LCD_COMMAND			0      // Command
  17          #define LCD_DATA			   1      // Data
  18          #define LCD_CLEAR_SCREEN	0x01   // 清屏
  19          #define LCD_HOMING  		   0x02   // 光标返回原点
  20          #define LCD_SHOW			   0x04   //显示开
  21          #define LCD_HIDE			   0x00   //显示关	  
  22          #define LCD_CURSOR			0x02 	 //显示光标
  23          #define LCD_NO_CURSOR		0x00   //无光标		     
  24          #define LCD_FLASH			   0x01   //光标闪动
  25          #define LCD_NO_FLASH		   0x00   //光标不闪动
  26          #define LCD_AC_UP			   0x02
  27          #define LCD_AC_DOWN			0x00   // 
  28          #define LCD_MOVE			   0x01   // 画面可平移
  29          #define LCD_NO_MOVE			0x00    //default
  30          
  31          int swap(int i)
  32          {
  33   1        int tmp1,tmp2,k;
  34   1      
  35   1        for(k=0;k<4;k++)
  36   1       {
  37   2         tmp1=i&(1<<k);
  38   2         tmp2=i&(1<<(7-k));
  39   2        if(tmp1==0)
  40   2        {
  41   3         i=i&(~(1<<(7-k)));
  42   3        }
  43   2        else
  44   2        {
  45   3        i=i|(1<<(7-k));
  46   3        }
  47   2        if(tmp2==0)
  48   2        {
  49   3         i=i&(~(1<<k));
  50   3        }
  51   2        else
  52   2        {
  53   3        i=i|(1<<k);
  54   3        }
  55   2       }
C51 COMPILER V6.12  LCD1602                                                                04/23/2008 15:12:07 PAGE 2   

  56   1       return i;
  57   1      }
  58          
  59          /************************内部等待函数******************************/
  60          unsigned char LCD_Wait(void)
  61          {
  62   1      	LcdRs=0;
  63   1      	LcdRw=1;	_nop_();
  64   1      	LcdEn=1;	_nop_();
  65   1      //	while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,
  66   1      						 //可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80
  67   1      						 //实际硬件时打开此语句
  68   1      	LcdEn=0;
  69   1      	return DBPort;		
  70   1      }
  71          
  72          /************************LCD_Write()******************************/
  73          void LCD_Write(bit style, uchar input)
  74          {
  75   1      	LcdEn=0;
  76   1      	LcdRs=style;
  77   1      	LcdRw=0;		_nop_();
  78   1      	DBPort=swap(input);	_nop_();//注意顺序
  79   1      	LcdEn=1;		_nop_();//注意顺序
  80   1      	LcdEn=0;		_nop_();
  81   1      	LCD_Wait();	
  82   1      }
  83          
  84          /************************LCD_SetDisplay()******************************/
  85          void LCD_SetDisplay(uchar DisplayMode)
  86          {
  87   1      	LCD_Write(LCD_COMMAND, 0x08|DisplayMode);	
  88   1      }
  89          
  90          /***********************设置输入模式***********************************/
  91          void LCD_SetInput(uchar InputMode)
  92          {
  93   1      	LCD_Write(LCD_COMMAND, 0x04|InputMode);
  94   1      }
  95          
  96          /************************初始化LCD******************************/
  97          void LCD_Initial()
  98          {
  99   1      	LcdEn=0;
 100   1      	LCD_Write(LCD_COMMAND,0x38);           //8位数据端口,2行显示,5*7点阵
 101   1      	LCD_Write(LCD_COMMAND,0x38);
 102   1      	LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //开启显示, 无光标
 103   1      	LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
 104   1      	LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);       //AC递增, 画面不动
 105   1      }
 106          
 107          /****************************GotoXY()**********************************/
 108          void GotoXY(uchar x, uchar y)
 109          {
 110   1      	if(y==0)
 111   1      		LCD_Write(LCD_COMMAND,0x80|x);
 112   1      	if(y==1)
 113   1      		LCD_Write(LCD_COMMAND,0x80|(x-0x40));
 114   1      }
 115          
 116          /****************************Print()**********************************/
 117          void Print(uchar *str)
C51 COMPILER V6.12  LCD1602                                                                04/23/2008 15:12:07 PAGE 3   

 118          {
 119   1         for(;*str!='\0';str++)
 120   1         LCD_Write(LCD_DATA,*str);
 121   1      }
C51 COMPILER V6.12  LCD1602                                                                04/23/2008 15:12:07 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
LCD_Initial. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
T0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
AC . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D6H  1
T1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
RD . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
RI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0098H  1
INT0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
CY . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D7H  1
_LCD_SetDisplay. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  DisplayMode. . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
_swap. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0004H  2
  tmp1 . . . . . . . . . . . . . . . .  AUTO     DATA   INT      0000H  2
  tmp2 . . . . . . . . . . . . . . . .  AUTO     DATA   INT      0002H  2
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0002H  2
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
INT1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
PS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BCH  1
OV . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D2H  1
WR . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
_GotoXY. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  x. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  y. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
DBPort . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
IE0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0089H  1
IE1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008BH  1
LCD_Write. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  style. . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
  input. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
LcdEn. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
ET1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ABH  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
LCD_Wait . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
TF1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008FH  1
RB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009AH  1
EX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A8H  1
IT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0088H  1
TB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009BH  1
EX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AAH  1
IT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008AH  1
P. . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D0H  1
SM0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009FH  1
SM1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009EH  1
SM2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009DH  1
PT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B9H  1
_LCD_SetInput. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  InputMode. . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
PT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BBH  1
RS0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D3H  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
RS1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D4H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
C51 COMPILER V6.12  LCD1602                                                                04/23/2008 15:12:07 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


PX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BAH  1
LcdRs. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0091H  1
LcdRw. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0092H  1
REN. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009CH  1
RXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
_Print . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  str. . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  3
TXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    357    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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