📄 lcd1602func.lst
字号:
C51 COMPILER V8.02 LCD1602FUNC 01/07/2007 20:42:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD1602FUNC
OBJECT MODULE PLACED IN lcd1602func.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1602func.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************
2 **函数功能:LCD的驱动函数 **
3 **创建人:xingyuegu **
4 **创建日期:2006-7-12 **
5 **版本:1.0 **
6 **修改日期:2006-10-30 **
7 **版本:2.0 **
8 *******************************************************************/
9
10 #include "lcd1602.h>
11 //unsigned char data ac=0;
12
13 /*************************************************************
14 **功能:延时1.64ms **
15 **参数:无 **
16 *************************************************************/
17
18 void delay1_64ms(void)
19 {
20 1 uint i;
21 1 for(i = 0;i < 255;i++)
22 1 {
23 2 ;
24 2 }
25 1 }
26 /*************************************************************
27 **功能:延时40us **
28 **参数:无 **
29 *************************************************************/
30
31 void delay40us(void)
32 {
33 1 uchar i;
34 1 for(i = 0;i < 20;i++)
35 1 {
36 2 ;
37 2 }
38 1 }
39 /*************************************************************
40 **功能:判断LCD忙 **
41 **参数:无 **
42 *************************************************************/
43
44 unsigned char Lcd_Wait(void)
45 {
46 1 LcdRs=0;
47 1 LcdRw=1;
48 1
49 1 LcdEn=1;
50 1 _nop_();
51 1 _nop_();
52 1 DBPort=0xff;
53 1 //while(DBPort&0x80);
54 1 //LcdEn=0;
55 1 delay40us();
C51 COMPILER V8.02 LCD1602FUNC 01/07/2007 20:42:12 PAGE 2
56 1 return DBPort;
57 1 }
58 /**************************************************************
59 **功能:写LCD函数 **
60 **参数:style为写命令/数据,0-命令,1-数据;input为写入的8位 **
61 ** 命令/数据 **
62 **************************************************************/
63
64
65 void Lcd_Write(bit style,unsigned char input)
66 {
67 1 LcdEn=0;
68 1 LcdRs=style;
69 1 LcdRw=0;
70 1 DBPort=input;
71 1 _nop_();
72 1 _nop_();
73 1 LcdEn=1;
74 1 _nop_();
75 1 _nop_();
76 1 _nop_();
77 1 LcdEn=0;
78 1 _nop_();
79 1 Lcd_Wait();
80 1 }
81 /****************************************************************
82 **功能:LCD清屏函数 **
83 **参数:无 **
84 ****************************************************************/
85 void ClrScreen(void)
86 {
87 1
88 1 Lcd_Write(Lcd_Command,Lcd_Clear_Screen);
89 1 delay1_64ms(); //必须有,LCD清屏要1.64ms
90 1
91 1 }
92
93 /****************************************************************
94 **功能:LCD归位函数 **
95 **参数:无 **
96 ****************************************************************/
97 void Screen_home(void)
98 {
99 1
100 1 Lcd_Write(Lcd_Command,Lcd_Home);
101 1 delay1_64ms(); //必须有,LCD清屏要1.64ms
102 1
103 1 }
104 /***************************************************************
105 **功能:设置显示模式 **
106 **参数: **
107 ***************************************************************/
108
109 void Lcd_SetDisplay(unsigned char DisplayMode)
110 {
111 1 Lcd_Write(Lcd_Command,0x08|DisplayMode);
112 1 delay40us(); //在真硬件时不需要
113 1 }
114 /***************************************************************
115 **功能:LCD移动设置 **
116 **参数:取值如下 **
117 ***************************************************************/
C51 COMPILER V8.02 LCD1602FUNC 01/07/2007 20:42:12 PAGE 3
118
119
120 void Lcd_Move(unsigned char MoveMode)
121 {
122 1 Lcd_Write(Lcd_Command,0x10|MoveMode);
123 1 delay40us(); //在真硬件时不需要
124 1 }
125
126 /****************************************************************
127 **功能:LCD输入设置 **
128 **参数:取值如下 **
129 ****************************************************************/
130 //
131 void Lcd_SetInput(unsigned char InputMode)
132 {
133 1 Lcd_Write(Lcd_Command,0x04|InputMode);
134 1 delay40us(); //在真硬件时不需要
135 1 }
136 /****************************************************************
137 **功能:LCD初始化 **
138 **参数:取值如下 **
139 ****************************************************************/
140 void Lcd_Init(void)
141 {
142 1
143 1 Lcd_Write(Lcd_Command,0x38); //8位数据端口,2行显示,5*7点阵
144 1 //Lcd_Write(Lcd_Command,0x38);
145 1 delay40us();
146 1 Lcd_SetDisplay(Lcd_Display_On|Lcd_Cursor|Lcd_Flash); //开启显示, 无光标
147 1 Lcd_Move(Lcd_CursorMove|Lcd_Left);
148 1 // Lcd_Write(Lcd_Command,Lcd_Clear_Screen); //清屏
149 1 //ClrScreen();
150 1 Lcd_SetInput(Lcd_Ac_Up|Lcd_No_Move); //AC递增, 画面不动_To
151 1 //delay1_64ms(); //在真硬件时不需要
152 1
153 1 }
154
155 /****************************************************************
156 **功能:显示位置设置 **
157 **参数:x-行;y-列 **
158 ****************************************************************/
159 void GotoXY(unsigned char x,unsigned char y)
160 {
161 1 if(y==0)
162 1 {Lcd_Write(Lcd_Command,0x80|x);
163 2 }
164 1 if(y==1)
165 1 {Lcd_Write(Lcd_Command,0x80|(x+0x40));
166 2 }
167 1 delay40us();
168 1 }
169
170 /****************************************************************
171 **功能:LCD显示函数 **
172 **参数:str-要显示的字符串指针 **
173 ****************************************************************/
174 void Print(unsigned char *str)
175 {
176 1 while(*str!='\0')
177 1 {
178 2
179 2 Lcd_Write(Lcd_Data,*str);
C51 COMPILER V8.02 LCD1602FUNC 01/07/2007 20:42:12 PAGE 4
180 2
181 2 str++;
182 2 delay40us();
183 2 }
184 1 }
185
186
187
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 208 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
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 + -