📄 ocm240128.lst
字号:
424 2 }
425 1
426 1 OCM_autrd_stop(); //自动读操作结束
427 1
C51 COMPILER V8.08 OCM240128 11/21/2009 22:14:42 PAGE 8
428 1 }
429
430
431
432 /******************************************************************************************
433 ** 函数名称: void OCM_autwr(uint addr, uchar num, uchar *p)
434 ** 功能描述: 自动写液晶函数
435 ** 输入参数: addr: 液晶开始写的地址
436 num: 自动写数据的个数
437 *p: 写数据区
438 ** 输出参数: 无
439 ** 全局变量: 无
440 ** 调用模块: 无
441 ******************************************************************************************/
442 void OCM_autwr(uint addr, uchar num, uchar *p)
443 {
444 1 uchar i;
445 1
446 1 OCM_ac(2,addr); //显示地址设置
447 1 OCM_autwr_start(); //启动自动写操作
448 1
449 1 for (i = 0; i < num; i++)
450 1 {
451 2 while (!OCM_busy(2)); //自动写忙检查
452 2 D_Addr = p[i]; //写数据
453 2 }
454 1
455 1 OCM_autwr_stop(); //自动写操作结束
456 1
457 1 }
458
459
460 /******************************************************************************************
461 ** 函数名称: void OCM_picture(uint addr, uchar w, uchar h, uchar *tab)
462 ** 功能描述: 图像显示
463 图形的高和宽必须设置正确
464 ** 输入参数: addr: 显示起始地址
465 h: 图像高(点单位) 横向取模方式
466 w: 图像宽(点单位)
467 *tab: 地址必须是2维数组地址
468 ** 输出参数: 无
469 ** 全局变量: 无
470 ** 调用模块: 无
471 ******************************************************************************************/
472 void OCM_picture(uint addr, uchar w, uchar h, uchar *tab)
473 {
474 1 uchar j;
475 1
476 1 for (j = 0; j < h; j++)
477 1 {
478 2 OCM_autwr(addr + (30 * j), w / 8, tab + j * w/8); //j*w/8:计算偏移地址
479 2 }
480 1
481 1 }
482
483 /******************************************************************************************
484 ** 函数名称: void OCM_picture_lcr(uint addr, uchar w, uchar h)
485 ** 功能描述: 清图像函数,清除图像
486 图形的高和宽必须设置正确
487 ** 输入参数: addr: 显示起始地址
488 h: 图像高(点单位) 横向取模方式
489 w: 图像宽(点单位)
C51 COMPILER V8.08 OCM240128 11/21/2009 22:14:42 PAGE 9
490 ** 输出参数: 无
491 ** 全局变量: 无
492 ** 调用模块: 无
493 ******************************************************************************************/
494 void OCM_picture_clr(uint addr, uchar w, uchar h)
495 {
496 1 uchar i,j;
497 1
498 1 for (j = 0; j < h; j++)
499 1 {
500 2 OCM_ac(2,addr + (30 * j)); //显示地址设置
501 2 OCM_autwr_start(); //启动自动写操作
502 2
503 2 for (i = 0; i < w / 8; i++)
504 2 {
505 3 while (!OCM_busy(2)); //自动写忙检查
506 3 D_Addr = 0x00; //写数据
507 3 }
508 2
509 2 OCM_autwr_stop(); //自动写操作结束
510 2 }
511 1
512 1 }
513
514
515 /******************************************************************************************
516 ** 函数名称: void OCM_line_clr(uint addr,uchar dat)
517 ** 功能描述: 单行清除数据
518 ** 输入参数: dat: 清屏数据
519 addr: 地址
520 ** 输出参数: 无
521 ** 全局变量: 无
522 ** 调用模块: 无
523 ******************************************************************************************/
524 void OCM_line_clr(uint addr,uchar dat)
525 {
526 1 uchar i;
527 1
528 1 OCM_ac(2,addr); //文本显示地址设置
529 1 OCM_autwr_start(); //启动自动写操作
530 1
531 1 for (i = 0; i < 30; i++)
532 1 {
533 2 while (!OCM_busy(2)); //自动写忙检查
534 2 D_Addr = dat; //写数据
535 2 }
536 1 OCM_autwr_stop(); //自动写操作结束
537 1 }
538
539
540 /******************************************************************************************
541 ** 函数名称: void OCM_clr(uchar dat)
542 ** 功能描述: 清屏函数
543 ** 输入参数: dat: 清屏数据
544 ** 输出参数: 无
545 ** 全局变量: 无
546 ** 调用模块: 无
547 ******************************************************************************************/
548 void OCM_clr(uchar dat)
549 {
550 1 uint i;
551 1
C51 COMPILER V8.08 OCM240128 11/21/2009 22:14:42 PAGE 10
552 1 /* 文本清零 */
553 1 OCM_ac(2,Text_Addr); //文本显示地址设置
554 1 OCM_autwr_start(); //启动自动写操作
555 1
556 1 for (i = 0; i < 500; i++)
557 1 {
558 2 while (!OCM_busy(2)); //自动写忙检查
559 2 D_Addr = dat; //写数据
560 2 }
561 1 OCM_autwr_stop(); //自动写操作结束
562 1
563 1 /* 图形清零 */
564 1 OCM_ac(2,Figure_Addr); //图形显示地址设置
565 1 OCM_autwr_start(); //启动自动写操作
566 1
567 1 for (i = 0; i < 0X1000; i++)
568 1 {
569 2 while (!OCM_busy(2)); //自动写忙检查
570 2 D_Addr = dat; //写数据
571 2 }
572 1
573 1 OCM_autwr_stop(); //自动写操作结束
574 1
575 1 }
576
577
578
579 /******************************************************************************************
580 ** 函数名称: void OCM_init(void)
581 ** 功能描述: OCM240128初始化函数
582 初始化内容:文本显示首地址,文本显示宽度,图形显示首地址,图形显示宽度
583 光标显示行数(0~7行)
584 文本图形显示方式(或,与,异或,双属性文本),CGROM开关
585 光标显示,光标闪烁,文字显示,图形显示
586 ** 输入参数: 无
587 ** 输出参数: 无
588 ** 全局变量: 无
589 ** 调用模块: 无
590 ******************************************************************************************/
591 void OCM_init(void)
592 {
593 1 OCM_area(0, Text_Addr); //文本显示区首地址为0X0000
594 1 OCM_area(1, 30); //文本显示区宽度30字节一行
595 1 OCM_area(2, Figure_Addr); //图形显示区首地址0X0800
596 1 OCM_area(3, 30); //图形显示区宽度30字节一行
597 1
598 1 OCM_cursor(7); //光标8行
599 1 OCM_mode(0,EN_CGROM); //逻辑或方式合成,启用CGRAM
600 1 OCM_state((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3));//光标显示,图形文字同时显示
601 1
602 1 OCM_bit(0, 0); //防止编译器警告
603 1
604 1 OCM_clr(0); //清屏
605 1 }
606
607
608
609
610
611
612
613
C51 COMPILER V8.08 OCM240128 11/21/2009 22:14:42 PAGE 11
614
615 /*--------------------------------------------------------------------------------------------------------
------------
616 Children Function End
617 液晶显示子程序结束
618 ----------------------------------------------------------------------------------------------------------
-----------*/
619
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1223 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 22
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 + -