📄 ks0108.lst
字号:
591 */
592 void GUI_SetEnFont(U8 EnFont)
593 {
594 1 if (EnFont == En_5x8){
595 2 GUIEnFont = En_5x8;
596 2 Char_XSIZE = En_5x8_XSIZE;
597 2 Char_YSIZE = En_5x8_YSIZE;
598 2 } else {
599 2 GUIEnFont = En_8x16;
600 2 Char_XSIZE = En_8x16_XSIZE;
601 2 Char_YSIZE = En_8x16_YSIZE;
602 2
603 2 }
604 1
605 1 }
606 /*
607 ----------------------------------------------------------------------------------------------
608
609 ----------------------------------------------------------------------------------------------
610 */
611 void GUI_Delay(U16 Period)
612 {
C51 COMPILER V7.06 KS0108 04/16/2008 17:32:01 PAGE 11
613 1 U8 j;
614 1 for (; Period>0 ; Period--) {
615 2 for (j = 0; j < 200; j++) {
616 3 }
617 2 }
618 1 }
619 /*
620 *****************************************************************************
621 * GUI_DispCharAt - 指定位置显示一个ASCII码
622 * DESCRIPTION: - 字体使用是系统设定的字体
623 *
624 * @Param x:X轴坐标
625 * @Param y:Y轴坐标
626 * @Param c:ASCII码
627 * @Return :
628 * ----
629 *****************************************************************************
630 */
631 void GUI_DispCharAt(U8 c, U8 x, U8 y)
632 {
633 1 switch (GUITextMode) {
634 2 case GUI_TEXTMODE_NORMAL :
635 2 Display_ASCII(c, x, y);
636 2 break;
637 2 case GUI_TEXTMODE_REVERSE :
638 2 Display_InvASCII(c, x, y);
639 2 break;
640 2 case GUI_TEXTMODE_UNDERLINE :
641 2 Display_ASCII_UnderLine(c, x, y);
642 2 break;
643 2 default :
644 2 break;
645 2 }
646 1 }
647 /*
648 ----------------------------------------------------------------------------------------------
649
650 ----------------------------------------------------------------------------------------------
651 */
652 #if 0
void GUI_DispChar(U8 c)
{
GUI_DispCharAt(c, PosX, PosY);
PosX += 8;
}
#endif
659 /*
660 *****************************************************************************
661 * GUI_Init - 初始化GUI显示
662 * DESCRIPTION: -
663 *
664 * @Param void:
665 * @Return :
666 * ----
667 *****************************************************************************
668 */
669 void GUI_Init(void)
670 {
671 1 Display_Init();
672 1 GUIEnFont = En_8x16;
673 1 GUITextMode = GUI_TEXTMODE_NORMAL;
674 1 Char_XSIZE = En_8x16_XSIZE;
C51 COMPILER V7.06 KS0108 04/16/2008 17:32:01 PAGE 12
675 1 Char_YSIZE = En_8x16_YSIZE;
676 1 PosX = 0;
677 1 PosY = 0;
678 1 NoXY = true;
679 1
680 1
681 1 }
682 void GUI_Clear(void)
683 {
684 1 Display_Clear();
685 1 }
686 #if 0
void GUI_DispCEOL(void)
{
U8 i;
for(i = PosX; i <= LCD_XSIZE-8; i += 8) {
GUI_DispCharAt(' ', i, PosY);
}
}
#endif
696 /*
697 *****************************************************************************
698 * GUI_DispStringAt - 指定位置显示一个字符串
699 * DESCRIPTION: -
700 * 支持中英混合 当中英混合时英文字体强制为8x16 如果单单英文 按照设定字体
701 * @Param x0:X轴坐标
702 * @Param y0:Y轴坐标
703 * @Param s:字符串
704 * @Return :
705 * ----
706 *****************************************************************************
707 */
708 //void GUI_DispStringAt(U8 _CONST_ *s,U8 x0,U8 y0)
709 void GUI_DispStringAt(U8 *s,U8 x0,U8 y0)
710 {
711 1 U8 i;
712 1 if (NoXY == false){//没有提供坐标,则使用系统坐标
713 2 x0 = PosX;
714 2 y0 = PosY;
715 2 }
716 1 i = 0;
717 1 while(s[i]!='\0'){
718 2 if (s[i] < 0x80) {//是ASCII
719 3 if(s[i] == '\n'){
720 4 x0 = 0;
721 4 y0 += Char_YSIZE;
722 4 } else {
723 4 if (x0 > (LCD_XSIZE-1)) {//换行
724 5 x0 = 0;
725 5 y0 += Char_YSIZE;
726 5 }
727 4 switch (GUITextMode) {
728 5 case GUI_TEXTMODE_NORMAL :
729 5 Display_ASCII(s[i], x0, y0);
730 5 break;
731 5 case GUI_TEXTMODE_REVERSE :
732 5 Display_InvASCII(s[i], x0, y0);
733 5 break;
734 5 case GUI_TEXTMODE_UNDERLINE :
735 5 Display_ASCII_UnderLine(s[i], x0, y0);
736 5 break;
C51 COMPILER V7.06 KS0108 04/16/2008 17:32:01 PAGE 13
737 5 default :
738 5 break;
739 5 }
740 4 x0 += Char_XSIZE;
741 4 }
742 3 } else {//是中文
743 3 if (x0 > LCD_XSIZE-16){
744 4 x0 = 0;
745 4 y0 += Chinese_YSIZE;
746 4 }
747 3 Display_Chinese(s[i]*256+s[i+1],x0,y0);//中文
748 3 i++;
749 3 x0 += Chinese_XSIZE;
750 3 }
751 2 s++;
752 2 }
753 1 if (NoXY == false){
754 2 PosX = x0;
755 2 PosY = y0;
756 2 }
757 1
758 1 }
759 #if 0
/*
*****************************************************************************
* GUI_DispString - 在当前系统坐标下显示字符串
* DESCRIPTION: -
* 除了坐标不能指定外 功能跟GUI_DispStringAt一致
* @Param s:字符串
* @Return :
* ----
*****************************************************************************
*/
void GUI_DispString(U8 _CONST_ *s)
{
NoXY = false;
GUI_DispStringAt(s,PosX,PosY);
NoXY = true;
}
void GUI_DispStringLen(U8 _CONST_ *s, U16 Len)
{
U8 i;
i = 0;
while(s[i]!='\0'){
if (i >= Len ){
return;
}
if (s[i] < 0x80) {//是ASCII
if(s[i] == '\n'){
// PosX = 0;
// PosY += 2;
} else {
if (PosX > (LCD_XSIZE-1)) {//换行
PosX = 0;
// PosY += 2;
}
switch (GUITextMode) {
case GUI_TEXTMODE_NORMAL :
Display_ASCII(s[i], PosX, PosY);
break;
case GUI_TEXTMODE_REVERSE :
C51 COMPILER V7.06 KS0108 04/16/2008 17:32:01 PAGE 14
Display_InvASCII(s[i], PosX, PosY);
break;
case GUI_TEXTMODE_UNDERLINE :
Display_ASCII_UnderLine(s[i], PosX, PosY);
break;
default :
break;
}
PosX += 8;
}
} else {//是中文
if (PosX > LCD_XSIZE-16){
// PosX = 0;
// PosY += 2;
return;
}
Display_Chinese(s[i]*256+s[i+1],PosX,PosY);//中文
i++;
PosX += 16;
}
i++;
}
}
void GUI_DrawCursor(U8 x, U8 y)
{
if(GUITextMode == GUI_TEXTMODE_NORMAL){
Display_Locate(0xFF,x,y);
Display_Locate(0xFF,x,y+1);
} else if (GUITextMode == GUI_TEXTMODE_REVERSE){
Display_Locate(0x00,x,y);
Display_Locate(0x00,x,y+1);
} else {
Display_Locate(0xFF,x,y);
Display_Locate(0xFF,x,y+1);
}
}
void GUI_CursorOn(U8 x, U8 y)
{
Display_Locate(0xFF,x,y);
Display_Locate(0xFF,x,y+1);
}
void GUI_CursorOFF(U8 x, U8 y)
{
Display_Locate(0x00,x,y);
Display_Locate(0x00,x,y+1);
}
#endif
850
851 /*
852 *****************************************************************************
853 * GUI_DispStringAtBar - 显示一个字符串在一个BAR中
854 * DESCRIPTION: -
855 * 可以设定对齐方式
856 * @Param s:字符串
857 * @Param x0:BAR起始X轴坐标
858 * @Param x1:BAR结束点的X轴坐标
859 * @Param y0:BAR的Y轴坐标
860 * @Param Mode:对齐方式 居中于BAR 左对齐BAR 右对齐BAR
C51 COMPILER V7.06 KS0108 04/16/2008 17:32:01 PAGE 15
861 * @Return :
862 * ----
863 *****************************************************************************
864 */
865 //void GUI_DispStringAtBar(U8 _CONST_ *s,U8 x0, U8 y0, U8 x1,U8 Mode)
866 void GUI_DispStringAtBar(U8 *s,U8 x0, U8 y0, U8 x1,U8 Mode)
867 {
868 1 U8 ENCount;//英文统计
869 1 U8 CNCount;//中文统计
870 1 U8 XLen;
871 1 U8 X;
872 1 U8 Y;
873 1 U8 i;
874 1 CNCount = 0;
875 1 ENCount = 0;
876 1 XLen = 0;
877 1 i = 0;
878 1 while(s[i]!='\0'){//统计中英文个数
879 2 if (s[i] > 0x80) {
880 3 CNCount ++;
881 3 i++;
882 3 } else {
883 3 ENCount++;
884 3 }
885 2 i++;
886 2 }
887 1 GUI_SetEnFont(En_8x16);
888 1 /*
889 1 if(CNCount){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -