📄 lcd1602.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 + -