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