📄 lcd1302.lst
字号:
181 /*************************以下是函数的申明部*************************/
182 void LCD_init(void); //LCD1602初始化
183 void LCD_send_command(uchar command); //
184 void LCD_send_data(uchar dat);
185 void LCD_write_char(uchar x,uchar y,uchar dat);
186 void LCD_disp_string(uchar x,uchar y,uchar *Data);
187 void LCD_disp_string_code(uchar x,uchar y,uchar code *Data);//mingadd
188 void delay_ms(uint n);
189 void LCD_check_busy(void);
190 void GotoXY(unsigned char x, unsigned char y);
191 void Print(unsigned char *str);
192 #endif
193 /******************************************************************
194
195 /#include <reg51.h>
196 #include "LCD1602.h"
197 /*******************主函数**********************************/
198
199 /**************LCD1602的初始化***************************/
200 void LCD_init(void)
201 {LCD_EN=0;
*** ERROR C202 IN LINE 201 OF LCD1302.C: 'LCD_EN': undefined identifier
202 1 LCD_send_command(LCD_DISPLAY_DOUBLE_LINE);
203 1 LCD_send_command(LCD_DISPLAY_DOUBLE_LINE);
204 1 LCD_send_command(LCD_AC_AUTO_INCREMENT|LCD_MOVE_DISENABLE);
205 1 LCD_send_command(LCD_DISPLAY_ON|LCD_CURSOR_OFF);
206 1 LCD_send_command(LCD_CLEAR_SCREEN);
207 1 }
208 /********************************************************/
209
210 void LCD_check_busy(void) //检测LCD状态,看它是不是还在忙呢
211 {
212 1 do
213 1 {
214 2 LCD_EN=0;
*** ERROR C202 IN LINE 214 OF LCD1302.C: 'LCD_EN': undefined identifier
215 2 LCD_RS=0;
*** ERROR C202 IN LINE 215 OF LCD1302.C: 'LCD_RS': undefined identifier
216 2 LCD_RW=1;
*** ERROR C202 IN LINE 216 OF LCD1302.C: 'LCD_RW': undefined identifier
217 2 LCDIO=0xff;
*** ERROR C202 IN LINE 217 OF LCD1302.C: 'P0': undefined identifier
218 2 LCD_EN=1;
*** ERROR C202 IN LINE 218 OF LCD1302.C: 'LCD_EN': undefined identifier
219 2 }
220 1 // while(1);
221 1 while(LCD_BUSY==1);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,
*** ERROR C202 IN LINE 221 OF LCD1302.C: 'LCD_BUSY': undefined identifier
222 1 //可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80
223 1 //实际硬件时打开此语句
224 1
225 1 LCD_EN=0;
226 1 }
227 /************LCD1602写命令*******************************/
228 void LCD_send_command(uchar command)
229 {
230 1 LCD_check_busy();
C51 COMPILER V7.50 LCD1302 03/15/2007 23:40:45 PAGE 5
231 1 LCD_RS=LOW;
*** ERROR C202 IN LINE 231 OF LCD1302.C: 'LCD_RS': undefined identifier
232 1 LCD_RW=LOW;
*** ERROR C202 IN LINE 232 OF LCD1302.C: 'LCD_RW': undefined identifier
233 1 LCD_EN=HIGH;
*** ERROR C202 IN LINE 233 OF LCD1302.C: 'LCD_EN': undefined identifier
234 1 LCDIO=command;
*** ERROR C202 IN LINE 234 OF LCD1302.C: 'P0': undefined identifier
235 1 LCD_EN=LOW;
*** ERROR C202 IN LINE 235 OF LCD1302.C: 'LCD_EN': undefined identifier
236 1 }
237 /********************************************************/
238 /*****************LCD1602写数据**************************/
239 void LCD_send_data(uchar dat)
240 {
241 1 LCD_check_busy();
242 1 LCD_RS=HIGH;
*** ERROR C202 IN LINE 242 OF LCD1302.C: 'LCD_RS': undefined identifier
243 1 LCD_RW=LOW;
*** ERROR C202 IN LINE 243 OF LCD1302.C: 'LCD_RW': undefined identifier
244 1 LCD_EN=HIGH;
*** ERROR C202 IN LINE 244 OF LCD1302.C: 'LCD_EN': undefined identifier
245 1 LCDIO=dat;
*** ERROR C202 IN LINE 245 OF LCD1302.C: 'P0': undefined identifier
246 1 LCD_EN=LOW;
*** ERROR C202 IN LINE 246 OF LCD1302.C: 'LCD_EN': undefined identifier
247 1 }
248 /********************************************************/
249 void LCD_write_char(uchar x,uchar y,uchar dat)
250 {
251 1 unsigned char address;
252 1 if(dat!=KEY_NOTHING+0x30) //this if is my add for when the time no key down to do not display anythi
-ng
*** ERROR C202 IN LINE 252 OF LCD1302.C: 'KEY_NOTHING': undefined identifier
253 1 {
254 2 if (y == LINE1)
255 2 address = LINE1_HEAD + x;
256 2 else
257 2 address = LINE2_HEAD + x;
258 2 LCD_send_command(address);
259 2 LCD_send_data(dat);
260 2 }
261 1 }
262
263 void GotoXY(unsigned char x, unsigned char y)
264 {
265 1 if(y==0)
266 1 LCD_send_command(0x80|x);
267 1 if(y==1)
268 1 LCD_send_command(0x80|(x-0x40));
269 1 }
270
271
272 void Print(unsigned char *str)
273 {
274 1 while(*str!='\0')
275 1 {
276 2 LCD_send_data(*str);
277 2 str++;
278 2 }
279 1 }
280 /******************LCD1602显示字符串*********************/
C51 COMPILER V7.50 LCD1302 03/15/2007 23:40:45 PAGE 6
281 void LCD_disp_string(uchar x,uchar y,uchar *Data)
282 {
283 1 if(y==LINE1)
284 1 {
285 2 if(x<LINE_LENGTH)
286 2 {
287 3 LCD_send_command(LINE1_HEAD+x);
288 3 for(;x<LINE_LENGTH&&*Data!='\0';x++)
289 3 {
290 4 LCD_send_data(*(Data++));
291 4 }
292 3 if(*Data!='\0')
293 3 {
294 4 x=0;
295 4 y=LINE2;
296 4 }
297 3 }
298 2 }
299 1 if(y==LINE2)
300 1 {
301 2 LCD_send_command(LINE2_HEAD+x);
302 2 for(;x<LINE_LENGTH&&*Data!='\0';x++)
303 2 {
304 3 LCD_send_data(*(Data++));
305 3 }
306 2 }
307 1 }
308 /****************************************************************/
309
310 //ming add display code string
311 /******************LCD1602显示字符串*********************/
312 void LCD_disp_string_code(uchar x,uchar y,uchar code *Data)
313 {
314 1 if(y==LINE1)
315 1 {
316 2 if(x<LINE_LENGTH)
317 2 {
318 3 LCD_send_command(LINE1_HEAD+x);
319 3 for(;x<LINE_LENGTH&&*Data!='\0';x++)
320 3 {
321 4 LCD_send_data(*(Data++));
322 4 }
323 3 if(*Data!='\0')
324 3 {
325 4 x=0;
326 4 y=LINE2;
327 4 }
328 3 }
329 2 }
330 1 if(y==LINE2)
331 1 {
332 2 LCD_send_command(LINE2_HEAD+x);
333 2 for(;x<LINE_LENGTH&&*Data!='\0';x++)
334 2 {
335 3 LCD_send_data(*(Data++));
336 3 }
337 2 }
338 1 }
339 /****************************************************************/
340 /********************延时函数***********************************/
341
342 /***************************************************************/
C51 COMPILER V7.50 LCD1302 03/15/2007 23:40:45 PAGE 7
343 void delay_ms(uint n)
344 {
345 1 uint i,j;
346 1 for(i=n;i>0;i--)
347 1 for(j=0;j<1140;j++)
348 1 ;
349 1 }
350 /*********************************************************************/
C51 COMPILATION COMPLETE. 0 WARNING(S), 22 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -