📄 rt240128.lst
字号:
415 1 x = xx;
416 1 y = yy;
417 1 while(*str != '\0')
418 1 {
419 2 LCD_DispAsciiCh16x8(x, y, *str);
420 2 str++;
421 2 x = x + 8;
422 2 }
423 1 }
424
425
426 /****************************************************************************
427 * 名称:LCD_DispChChar16x16()
428 * 功能:显示汉字(16*16字体)。
429 * 入口参数:x 指定显示位置,x坐标
430 * y 指定显示位置,y坐标
431 * ch 要显示的汉字对应的数组的首地址。
432 * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
433 * 说明:操作失败原因是指定地址超出有效范围。
434 ****************************************************************************/
435 bit LCD_DispChChar16x16(uint8 xx, uint8 yy, char *ucCHAR, uint8 FontNo)
436 {
437 1 uint8 xdata x, y;
438 1 uint8 xdata i, j, k;
439 1 char xdata *OffSetCH;
440 1 uint16 xdata AddrOffSet;
441 1
442 1 x = xx;
443 1 y = yy;
444 1 if( x >= (GUI_LCM_XMAX-8) ) /* 参数过滤 */
445 1 return(0);
446 1 if( y >= (GUI_LCM_YMAX-8) ) /* 参数过滤 */
447 1 return(0);
448 1
449 1 OffSetCH = strstr(HzIndex, ucCHAR);
450 1 if( OffSetCH == 0 )
451 1 return (0);
452 1 AddrOffSet = ( OffSetCH - HzIndex ) << 4; // = / 2 * 32;
*** ERROR C193 IN LINE 452 OF RT240128.C: '<<': bad operand type
453 1
454 1 k = 0;
455 1 for(i=0; i<16; i++) // 显示共16行
456 1 {
457 2 for(j=0; j<2; j++) // 每行共16点
458 2 {
459 3 if( FontNo == 0 ) // 宋体
460 3 LCD_UpdateByte(x, y, FONT16x16ChCH1[AddrOffSet + k]);
461 3 if( FontNo == 1 ) // 宋体加粗
462 3 LCD_UpdateByte(x, y, FONT16x16ChCH2[AddrOffSet + k]);
463 3
464 3 x = x + 8;
465 3 k++;
C51 COMPILER V7.05 RT240128 08/27/2006 23:31:34 PAGE 9
466 3 }
467 2 y++; // 指向下一行
468 2 x = x - 16; // 恢复x值
469 2 }
470 1 return(1);
471 1 }
472
473
474 /****************************************************************************
475 * 名称:LCD_DispChStr16x16()
476 * 功能:输出显示字符串(16*16字体)。
477 * 入口参数:x 指定显示位置,x坐标
478 * y 指定显示位置,y坐标
479 * str 要显示的字符串
480 * 出口参数:无
481 * 说明:操作失败原因是指定地址超出有效范围。
482 ****************************************************************************/
483 void LCD_DispChStr16x16(uint8 xx, uint8 yy, const char *str, uint8 FontNo)
484 {
485 1 uint8 idata x, y;
486 1 char idata SubStr[3] = {0, 0, 0};
487 1
488 1 x = xx;
489 1 y = yy;
490 1 while( *str != 0 )
491 1 {
492 2 strncpy(SubStr, str, 2);
493 2 SubStr[2] = 0;
494 2
495 2 LCD_DispChChar16x16(x, y, SubStr, FontNo);
496 2 str = str + 2;
497 2 x = x + 16;
498 2 }
499 1 }
500
501
502 /****************************************************************************
503 * 名称:LCD_DispAsciiChStr()
504 * 功能:显示ASCII码和汉字混编字符串.
505 * 入口参数:x 指定显示位置,x坐标
506 * y 指定显示位置,y坐标
507 * str 要显示的字符串
508 * 出口参数:无
509 * 说明:操作失败原因是指定地址超出有效范围。
510 ****************************************************************************/
511 void LCD_DispAsciiChStr(uint8 xx, uint8 yy, const char *str, uint8 FontNo)
512 {
513 1 uint8 idata x, y;
514 1 char idata SubStr[3] = {0, 0, 0};
515 1
516 1 x = xx;
517 1 y = yy;
518 1 while( *str != 0 )
519 1 {
520 2 if( (uint8)*str < 0xA0 )
521 2 {
522 3 LCD_DispAsciiCh16x8(x, y, *str);
523 3 str++;
524 3 x = x + 8;
525 3 }
526 2
527 2 if( (uint8)*str >= 0xA0 )
C51 COMPILER V7.05 RT240128 08/27/2006 23:31:34 PAGE 10
528 2 {
529 3 strncpy(SubStr, str, 2);
530 3 SubStr[2] = 0;
531 3
532 3 LCD_DispChChar16x16(x, y, SubStr, FontNo);
533 3 str = str + 2;
534 3 x = x + 16;
535 3 }
536 2 }
537 1 }
538
539
540 /****************************************************************************
541 * 名称:LCD_DispAsciiChCURS()
542 * 功能:显示光标
543 * 入口参数:x 指定显示位置,x坐标
544 * y 指定显示位置,y坐标
545 * bCOLOR 0/1, 不显示/显示.
546 * bCHAR 0/1, ASCII码字符/汉字字符型光标.
547 * 出口参数:
548 * 说明:
549 ****************************************************************************/
550 void LCD_DispAsciiChCURS(uint8 xx, uint8 yy, bit bCOLOR, bit bCHAR)
551 {
552 1 uint8 idata x, y;
553 1
554 1 x = xx;
555 1 y = yy;
556 1
557 1 if( bCHAR == 1 ) // 显示汉字
558 1 {
559 2 if( bCOLOR == 1 ) // 显示光标
560 2 {
561 3 LCD_UpdateByte(x, y+15, 0xff);
562 3 LCD_UpdateByte(x+8, y+15, 0xff);
563 3 }
564 2 else // 不显示光标
565 2 {
566 3 LCD_UpdateByte(x, y+15, 0x00);
567 3 LCD_UpdateByte(x+8, y+15, 0x00);
568 3 }
569 2 }
570 1 else // 显示ASCII码
571 1 {
572 2 if( bCOLOR == 1 ) // 显示光标
573 2 {
574 3 LCD_UpdateByte(x, y+15, 0xff);
575 3 }
576 2 else // 不显示光标
577 2 {
578 3 LCD_UpdateByte(x, y+15, 0x00);
579 3 }
580 2 }
581 1 }
582
583
584 /****************************************************************************
585 ** 函数名称: LCD_SelfTest()
586 ** 功能描述: LCD测试程序
587 ** 入口参数: 无
588 ** 出口参数: 无
589 ** 全局变量: 无
C51 COMPILER V7.05 RT240128 08/27/2006 23:31:34 PAGE 11
590 ** 调用模块: 无
591 ** 说明:
592 ****************************************************************************/
593 void LCD_SelfTest(void)
594 {
595 1 LCD_DispAsciiChStr (16, 96, "苏州LZK-X型电动机", 1);
596 1
597 1 LCD_DispAsciiCh16x8 (16, 16, '4' );
598 1 LCD_DispAsciiStr16x8( 0, 32, ">0123456789LZK-xABCDEFG");
599 1 LCD_DispChChar16x16 (16, 48, "科", 1);
600 1 LCD_DispChStr16x16 (32, 48, "科树", 1);
601 1
602 1 LCD_DispChStr16x16 (64, 48, "通信", 1);
603 1 LCD_DispChStr16x16 (64+2*16+8, 48, "公科有技限司", 1);
604 1 LCD_DispChStr16x16 (16, 72, "友明科技有限公司", 1);
605 1
606 1 LCD_DispAsciiChStr (16,112, "常滑全", 0);
607 1 LCD_DispAsciiChStr (64,112, "科树", 1);
608 1 }
609
610
611 /****************************************************************************
612 ** 函数名称: LCD_GoToXY()
613 ** 功能描述: 光标定位
614 ** 入口参数: 无
615 ** 出口参数: 无
616 ** 全局变量: 无
617 ** 调用模块: 无
618 ** 说明:
619 ****************************************************************************/
620 void LCD_GoToXY(uint8 x, uint8 y)
621 {
622 1 CURS_X = x;
623 1 CURS_Y = y;
624 1 }
625
626
627
628
629
630
631
632
633
C51 COMPILATION COMPLETE. 1 WARNING(S), 23 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -