📄 51
字号:
284 1 wr_lcd(comm,0x90);
285 1 j=1;
286 1 for(i=0;i<16;i++)
287 1 wr_lcd(dat,chn[j*16+i]);
288 1 }
289
290 /******************************************************************************************
291 * 函数名称 :img_disp
292 * 功能描述 : 显示图形
293 * 参数 : 参数名称: 输入/输出? 类型 描述
294 *
295 * 返回值 :
296 * 作者 :
297 * 创建日期 :2006-12-19
298 * 全局变量 :
299 * 全局静态变量:
300 * 局部静态变量:
301 *----------------------------------------修改历史------------------------------------------
302 * 当前版本 : 修改人: 修改日期:
303 * 修改说明 :
C51 COMPILER V8.02 12864LCDTEST 07/11/2009 14:25:14 PAGE 6
304 ******************************************************************************************/
305 void img_disp(uchar code *img)
306 {
307 1 uchar i,j;
308 1 for(j=0;j<32;j++)
309 1 {
310 2 for(i=0;i<8;i++)
311 2 {
312 3 wr_lcd(comm,0x34);
313 3 wr_lcd(comm,y+j);
314 3 wr_lcd(comm,x1+i);
315 3 wr_lcd(comm,0x30);
316 3 wr_lcd(dat,img[j*16+i*2]);
317 3 wr_lcd(dat,img[j*16+i*2+1]);
318 3 }
319 2 }
320 1 for(j=32;j<64;j++)
321 1 {
322 2 for(i=0;i<8;i++)
323 2 {
324 3 wr_lcd(comm,0x34);
325 3 wr_lcd(comm,y+j-32);
326 3 wr_lcd(comm,x2+i);
327 3 wr_lcd(comm,0x30);
328 3 wr_lcd(dat,img[j*16+i*2]);
329 3 wr_lcd(dat,img[j*16+i*2+1]);
330 3 }
331 2 }
332 1 wr_lcd (comm,0x36);
333 1 }
334
335 /******************************************************************************************
336 * 函数名称 :img_disp1
337 * 功能描述 : 下半屏显示图形
338 * 参数 : 参数名称: 输入/输出? 类型 描述
339 *
340 * 返回值 :
341 * 作者 :
342 * 创建日期 :2006-12-19
343 * 全局变量 :
344 * 全局静态变量:
345 * 局部静态变量:
346 *----------------------------------------修改历史------------------------------------------
347 * 当前版本 : 修改人: 修改日期:
348 * 修改说明 :
349 ******************************************************************************************/
350 void img_disp1(uchar code *img)
351 {
352 1 uchar i,j;
353 1 for(j=0;j<32;j++)
354 1 {
355 2 for(i=0;i<8;i++)
356 2 {
357 3 wr_lcd(comm,0x34);
358 3 wr_lcd(comm,y+j);
359 3 wr_lcd(comm,x2+i);
360 3 wr_lcd(comm,0x30);
361 3 wr_lcd(dat,img[j*16+i*2]);
362 3 wr_lcd(dat,img[j*16+i*2+1]);
363 3 }
364 2 }
365 1 wr_lcd(comm,0x36);
C51 COMPILER V8.02 12864LCDTEST 07/11/2009 14:25:14 PAGE 7
366 1 }
367
368 /******************************************************************************************
369 * 函数名称 :lat_disp
370 * 功能描述 : 显示点阵
371 * 参数 : 参数名称: 输入/输出? 类型 描述
372 *
373 * 返回值 :
374 * 作者 :
375 * 创建日期 :2006-12-19
376 * 全局变量 :
377 * 全局静态变量:
378 * 局部静态变量:
379 *----------------------------------------修改历史------------------------------------------
380 * 当前版本 : 修改人: 修改日期:
381 * 修改说明 :
382 ******************************************************************************************/
383 /*--------------显示点阵----------------*/
384 //经过调试发现显示点阵是非常有意思的,最主要的在于data1,data2上的两组数据的取值,
385 //不同的取值对应着不同的点阵效果。
386
387 void lat_disp(uchar data1,uchar data2)
388 {
389 1 uchar i,j,k,x;
390 1 x=x1;
391 1 for(k=0;k<2;k++)
392 1 {
393 2 for(j=0;j<16;j++)
394 2 {
395 3 for(i=0;i<8;i++)
396 3 {
397 4 wr_lcd(comm,0x34);
398 4 wr_lcd(comm,y+j*2);
399 4 wr_lcd(comm,x+i);
400 4 wr_lcd(comm,0x30);
401 4 wr_lcd(dat,data1);
402 4 wr_lcd(dat,data1);
403 4 }
404 3 for(i=0;i<8;i++)
405 3 {
406 4 wr_lcd(comm,0x34);
407 4 wr_lcd(comm,y+j*2+1);
408 4 wr_lcd(comm,x+i);
409 4 wr_lcd(comm,0x30);
410 4 wr_lcd(dat,data2);
411 4 wr_lcd(dat,data2);
412 4 }
413 3 }
414 2 x=x2;
415 2 }
416 1 wr_lcd(comm,0x36);
417 1 }
418
419 /******************************************************************************************
420 * 函数名称 :con_disp
421 * 功能描述 : 当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl
422 * 参数 : 参数名称: 输入/输出? 类型 描述
423 *
424 * 返回值 :
425 * 作者 :
426 * 创建日期 :2006-12-19
427 * 全局变量 :
C51 COMPILER V8.02 12864LCDTEST 07/11/2009 14:25:14 PAGE 8
428 * 全局静态变量:
429 * 局部静态变量:
430 *----------------------------------------修改历史------------------------------------------
431 * 当前版本 : 修改人: 修改日期:
432 * 修改说明 :
433 ******************************************************************************************/
434 void con_disp(uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl)
435 {
436 1 uchar i,j;
437 1 for(j=0;j<yl;j++)
438 1 {
439 2 for(i=0;i<xl;i++)
440 2 {
441 3 wr_lcd(comm,0x34);
442 3 wr_lcd(comm,y0+j);
443 3 wr_lcd(comm,x0+i);
444 3 wr_lcd(comm,0x30);
445 3 wr_lcd(dat,data1);
446 3 wr_lcd(dat,data2);
447 3 }
448 2 }
449 1 wr_lcd(comm,0x36);
450 1 }
451
452 /******************************************************************************************
453 * 函数名称 :clrram
454 * 功能描述 : 清DDRAM
455 * 参数 : 参数名称: 输入/输出? 类型 描述
456 *
457 * 返回值 :
458 * 作者 :
459 * 创建日期 :2006-12-19
460 * 全局变量 :
461 * 全局静态变量:
462 * 局部静态变量:
463 *----------------------------------------修改历史------------------------------------------
464 * 当前版本 : 修改人: 修改日期:
465 * 修改说明 :
466 ******************************************************************************************/
467 void clrram(void)
468 {
469 1 wr_lcd(comm,0x30);
470 1 wr_lcd(comm,0x01);
471 1 }
472
473 /******************************************************************************************
474 * 函数名称 :wr_lcd
475 * 功能描述 :
476 * 参数 : 参数名称: 输入/输出? 类型 描述
477 *
478 * 返回值 :
479 * 作者 :
480 * 创建日期 :2006-12-19
481 * 全局变量 :
482 * 全局静态变量:
483 * 局部静态变量:
484 *----------------------------------------修改历史------------------------------------------
485 * 当前版本 : 修改人: 修改日期:
486 * 修改说明 :
487 ******************************************************************************************/
488 void wr_lcd(uchar dat_comm,uchar content)
489 {
C51 COMPILER V8.02 12864LCDTEST 07/11/2009 14:25:14 PAGE 9
490 1 chk_busy ();
491 1 if(dat_comm)
492 1 {
493 2 RS = 1; //data
494 2 RW = 0; //write
495 2 }
496 1 else
497 1 {
498 2 RS = 0; //command
499 2 RW = 0; //write
500 2 }
501 1 P0=content; //output data or comm
502 1 E = 1;
503 1 ;
504 1 E = 0;
505 1 }
506 /******************************************************************************************
507 * 函数名称 :chk_busy
508 ******************************************************************************************/
509 void chk_busy(void)
510 {
511 1 P0 = 0xff;
512 1 RS = 0;
513 1 RW = 1;
514 1 E = 1;
515 1 while(busy==1);
516 1 E = 0;
517 1 }
518
519 void delay(uint us) //delay time
520 {
521 1 while(us--);
522 1 }
523
524 void delay1(uint ms)
525 {
526 1 uint i,j;
527 1 for(i=0;i<ms;i++)
528 1 for(j=0;j<15;j++)
529 1 delay(1);
530 1 }
531
532
533 void main()
534 {
535 1 init_lcd();
536 1 while(1)
537 1 {
538 2 lat_disp(0x00,0x00);
539 2 chn_disp(tab1);
540 2 con_disp(0xff,0xff,0x8c,0x80,2,16);
541 2 delay1(8000);
542 2 clrram();
543 2 lat_disp(0xcc,0xcc);
544 2 delay1(8000);
545 2 lat_disp(0x00,0x00);
546 2 chn_disp1(tab31);
547 2 img_disp1(tab32);
548 2 delay1 (8000);
549 2 clrram();
550 2 lat_disp (0xff,0x00);
551 2 delay1(8000);
C51 COMPILER V8.02 12864LCDTEST 07/11/2009 14:25:14 PAGE 10
552 2 img_disp(tab5);
553 2 delay1(8000);
554 2 }
555 1 }
556
557
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1037 ----
CONSTANT SIZE = 1633 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 34
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -