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