📄 parallel port.lst
字号:
244 1 _nop_();
245 1 _nop_();
246 1 P0 = cmd;
247 1 delayNOP();
248 1 LCD_EN = 1;
249 1 delayNOP();
250 1 LCD_EN = 0;
251 1 }
252 /*******************************************************************/
253 /* */
254 /*写显示数据到LCD */
255 /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
256 /* */
257 /*******************************************************************/
258 void lcd_wdat(uchar dat)
259 {
260 1 while(lcd_busy());
261 1 LCD_RS = 1;
262 1 LCD_RW = 0;
263 1 LCD_EN = 0;
264 1 P0 = dat;
265 1 delayNOP();
266 1 LCD_EN = 1;
267 1 delayNOP();
268 1 LCD_EN = 0;
269 1 }
270 /*******************************************************************/
271 /* */
272 /* LCD初始化设定 */
273 /* */
274 /*******************************************************************/
275 void lcd_init()
276 {
277 1 LCD_PSB = 1; //并口方式
278 1
279 1 LCD_RST = 0; //液晶复位
280 1 delay(3);
281 1 LCD_RST = 1;
282 1 delay(3);
283 1
284 1 lcd_wcmd(0x34); //扩充指令操作
285 1 delay(5);
286 1 lcd_wcmd(0x30); //基本指令操作
287 1 delay(5);
288 1 lcd_wcmd(0x0C); //显示开,关光标
289 1 delay(5);
290 1 lcd_wcmd(0x01); //清除LCD的显示内容
291 1 delay(5);
292 1 }
293
294 /*********************************************************/
295 /* */
296 /* 设定显示位置 */
297 /* */
298 /*********************************************************/
299 void lcd_pos(uchar X,uchar Y)
300 {
301 1 uchar pos;
302 1 if (X==1)
303 1 {X=0x80;}
C51 COMPILER V7.08 PARALLEL_PORT 12/19/2006 21:06:07 PAGE 6
304 1 else if (X==2)
305 1 {X=0x90;}
306 1 else if (X==3)
307 1 {X=0x88;}
308 1 else if (X==4)
309 1 {X=0x98;}
310 1 pos = X+Y ;
311 1
312 1 lcd_wcmd(pos); //显示地址
313 1 }
314
315 /*********************************************************
316 * *
317 * 闪烁函数 *
318 * *
319 *********************************************************/
320 void lcdflag()
321 {
322 1 lcd_wcmd(0x08);
323 1 delay(400);
324 1 lcd_wcmd(0x0c);
325 1 delay(400);
326 1 lcd_wcmd(0x08);
327 1 delay(400);
328 1 lcd_wcmd(0x0c);
329 1 delay(400);
330 1 lcd_wcmd(0x08);
331 1 delay(200);
332 1 lcd_wcmd(0x0c);
333 1 delay(5);
334 1 lcd_wcmd(0x01);
335 1 delay(5);
336 1 }
337
338 /*********************************************************
339 * *
340 * 图形显示 *
341 * *
342 *********************************************************/
343 void photodisplay(uchar *bmp)
344 {
345 1 uchar i,j;
346 1
347 1 lcd_wcmd(0x34); //写数据时,关闭图形显示
348 1
349 1 for(i=0;i<32;i++)
350 1 {
351 2 lcd_wcmd(0x80+i); //先写入水平坐标值
352 2 lcd_wcmd(0x80); //写入垂直坐标值
353 2 for(j=0;j<16;j++) //再写入两个8位元的数据
354 2 lcd_wdat(*bmp++);
355 2 delay1(1);
356 2 }
357 1
358 1 for(i=0;i<32;i++)
359 1 {
360 2 lcd_wcmd(0x80+i);
361 2 lcd_wcmd(0x88);
362 2 for(j=0;j<16;j++)
363 2 lcd_wdat(*bmp++);
364 2 delay1(1);
365 2 }
C51 COMPILER V7.08 PARALLEL_PORT 12/19/2006 21:06:07 PAGE 7
366 1 lcd_wcmd(0x36); //写完数据,开图形显示
367 1 }
368
369 /*********************************************************
370 * *
371 * 清屏函数 *
372 * *
373 *********************************************************/
374 void clr_screen()
375 {
376 1 lcd_wcmd(0x34); //扩充指令操作
377 1 delay(5);
378 1 lcd_wcmd(0x30); //基本指令操作
379 1 delay(5);
380 1 lcd_wcmd(0x01); //清屏
381 1 delay(5);
382 1 }
383
384 /**********************************************************
385
386 ; 显示字符表代码
387
388 **********************************************************/
389 void bytecode()
390 {
391 1 uchar s;
392 1
393 1 clr_screen(); //清屏
394 1
395 1 lcd_wcmd(0x80); //设置显示位置为第一行
396 1 for(s=0;s<16;s++)
397 1 {
398 2 lcd_wdat(0x30+s);
399 2 }
400 1
401 1 lcd_wcmd(0x90); //设置显示位置为第二行
402 1 for(s=0;s<16;s++)
403 1 {
404 2 lcd_wdat(0x40+s);
405 2 }
406 1
407 1 lcd_wcmd(0x88); //设置显示位置为第三行
408 1 for(s=0;s<16;s++)
409 1 {
410 2 lcd_wdat(0x50+s);
411 2 }
412 1
413 1 lcd_wcmd(0x98); //设置显示位置为第四行
414 1 for(s=0;s<16;s++)
415 1 {
416 2 lcd_wdat(0x60+s);
417 2 }
418 1 }
419
420 /*********************************************************
421 * *
422 * 主函数 *
423 * *
424 *********************************************************/
425 void main()
426 {
427 1 uchar i;
C51 COMPILER V7.08 PARALLEL_PORT 12/19/2006 21:06:07 PAGE 8
428 1 delay(100); //上电,等待稳定
429 1 lcd_init(); //初始化LCD
430 1 while(1)
431 1 {
432 2 lcd_pos(1,0); //设置显示位置为第一行
433 2 for(i=0;i<16;i++)
434 2 {
435 3 lcd_wdat(DIS1[i]);
436 3 delay(30);
437 3 }
438 2
439 2 lcd_pos(2,0); //设置显示位置为第二行
440 2 for(i=0;i<16;i++)
441 2 {
442 3 lcd_wdat(DIS2[i]);
443 3 delay(30);
444 3 }
445 2
446 2 lcd_pos(3,0); //设置显示位置为第三行
447 2 for(i=0;i<16;i++)
448 2 {
449 3 lcd_wdat(DIS3[i]);
450 3 delay(30);
451 3 }
452 2
453 2 lcd_pos(4,0); //设置显示位置为第四行
454 2 for(i=0;i<16;i++)
455 2 {
456 3 lcd_wdat(DIS4[i]);
457 3 delay(30);
458 3 }
459 2 delay(1000);
460 2 lcdflag();
461 2
462 2 clr_screen(); //清屏
463 2 photodisplay(Photo1); //显示图片1
464 2 delay(2000);
465 2
466 2 clr_screen(); //清屏
467 2 photodisplay(Photo2); //显示图片2
468 2 delay(2000);
469 2
470 2 bytecode(); //显示字符表代码
471 2 delay(2000);
472 2 clr_screen();
473 2 }
474 1 }
475
476 /*********************************************************/
477
478
479
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 715 ----
CONSTANT SIZE = 2116 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
C51 COMPILER V7.08 PARALLEL_PORT 12/19/2006 21:06:07 PAGE 9
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -