?? ks0108.lst
字號:
890 1 GUI_SetEnFont(En_8x16);
891 1 } else {
892 1 GUI_SetEnFont(En_5x8);
893 1 }
894 1 */
895 1 XLen = ENCount*8 + CNCount*16;
896 1
897 1 if (XLen > 127) {//我們只能顯示一行
898 2 XLen = 127;
899 2 }
900 1 //識別對其方式屬性
901 1 switch (Mode&0x30) {//只有這兩個Bit是這個屬性
902 2 case GUI_TA_LEFT: //左對齊
903 2 XLen = 0;
904 2 break;
905 2 case GUI_TA_HCENTER: //居中
906 2 XLen = ((x1-x0)-XLen)/2;
907 2 break;
908 2 case GUI_TA_RIGHT: //右對齊
909 2 XLen = (x1-x0)-XLen;
910 2 break;
911 2 default:
912 2 break;
913 2 }
914 1 //--------------------------------------
915 1 //得到喀什顯示的起點坐標
916 1 X = x0+XLen;
917 1 Y = y0;
918 1
919 1 //---------------------
920 1 //清除字符前面的空白部分
921 1 if(Mode&GUI_JUST_TEXT){
922 2 } else {
C51 COMPILER V7.20 KS0108 09/04/2007 22:35:41 PAGE 16
923 2 x0 = X;
924 2 if (GUITextMode == GUI_TEXTMODE_REVERSE){
925 3 for(i = 0; i <x0; i++){
926 4 Display_Locate(0xFF, i,y0);
927 4 Display_Locate(0xFF, i,y0+1);
928 4 }
929 3 }else{
930 3 for(i = 0; i <x0; i++){
931 4 Display_Locate(0x00, i,y0);
932 4 Display_Locate(0x00, i,y0+1);
933 4 }
934 3 }
935 2 }
936 1
937 1 //-----------------------
938 1 i = 0;
939 1 while(s[i]!='\0'){
940 2 if (s[i] < 0x80) {//是ASCII
941 3 switch (GUITextMode) {
942 4 case GUI_TEXTMODE_NORMAL :
943 4 Display_ASCII(s[i], X, Y);
944 4 break;
945 4 case GUI_TEXTMODE_REVERSE :
946 4 Display_InvASCII(s[i], X, Y);
947 4 break;
948 4 case GUI_TEXTMODE_UNDERLINE :
949 4 Display_ASCII_UnderLine(s[i], X, Y);
950 4 break;
951 4 default :
952 4 break;
953 4 }
954 3 X += 8;
955 3 } else {//是中文
956 3 Display_Chinese(s[i]*256+s[i+1],X,Y);//中文
957 3 i++;
958 3 X += 16;
959 3 }
960 2 // s++;
961 2 i++;
962 2 }
963 1 //清除字符后面的空白部分
964 1 if(Mode&GUI_JUST_TEXT){
965 2 GUI_SetEnFont(En_5x8);
966 2 return;
967 2 } else {
968 2 x0 = X;
969 2 if (GUITextMode == GUI_TEXTMODE_REVERSE){
970 3 for(i = 0; i <x1-x0; i++){
971 4 Display_Locate(0xFF, x0+i,y0);
972 4 Display_Locate(0xFF, x0+i,y0+1);
973 4 }
974 3 }else{
975 3 for(i = 0; i <x1-x0; i++){
976 4 Display_Locate(0x00, x0+i,y0);
977 4 Display_Locate(0x00, x0+i,y0+1);
978 4 }
979 3 }
980 2 GUI_SetEnFont(En_5x8);
981 2 return;
982 2 }
983 1 //---------------------------------------
984 1 }
C51 COMPILER V7.20 KS0108 09/04/2007 22:35:41 PAGE 17
985
986 #if 0
//--------------------------
//顯示ASCII(16X32)
//Char 字符
//X 0--6
//Y 0--(128-8)
U16 _CONST_ Changedot[] =
{
0x0000, 0x0003, 0x000c, 0x000f, 0x0030, 0x0033, 0x003c, 0x003f, 0x00c0, 0x00c3,
0x00cc, 0x00cf, 0x00f0, 0x00f3, 0x00fc, 0x00ff, 0x0300, 0x0303, 0x030c, 0x030f,
0x0330, 0x0333, 0x033c, 0x033f, 0x03c0, 0x03c3, 0x03cc, 0x03cf, 0x03f0, 0x03f3,
0x03fc, 0x03ff, 0x0c00, 0x0c03, 0x0c0c, 0x0c0f, 0x0c30, 0x0c33, 0x0c3c, 0x0c3f,
0x0cc0, 0x0cc3, 0x0ccc, 0x0ccf, 0x0cf0, 0x0cf3, 0x0cfc, 0x0cff, 0x0f00, 0x0f03,
0x0f0c, 0x0f0f, 0x0f30, 0x0f33, 0x0f3c, 0x0f3f, 0x0fc0, 0x0fc3, 0x0fcc, 0x0fcf,
0x0ff0, 0x0ff3, 0x0ffc, 0x0fff, 0x3000, 0x3003, 0x300c, 0x300f, 0x3030, 0x3033,
0x303c, 0x303f, 0x30c0, 0x30c3, 0x30cc, 0x30cf, 0x30f0, 0x30f3, 0x30fc, 0x30ff,
0x3300, 0x3303, 0x330c, 0x330f, 0x3330, 0x3333, 0x333c, 0x333f, 0x33c0, 0x33c3,
0x33cc, 0x33cf, 0x33f0, 0x33f3, 0x33fc, 0x33ff, 0x3c00, 0x3c03, 0x3c0c, 0x3c0f,
0x3c30, 0x3c33, 0x3c3c, 0x3c3f, 0x3cc0, 0x3cc3, 0x3ccc, 0x3ccf, 0x3cf0, 0x3cf3,
0x3cfc, 0x3cff, 0x3f00, 0x3f03, 0x3f0c, 0x3f0f, 0x3f30, 0x3f33, 0x3f3c, 0x3f3f,
0x3fc0, 0x3fc3, 0x3fcc, 0x3fcf, 0x3ff0, 0x3ff3, 0x3ffc, 0x3fff, 0xc000, 0xc003,
0xc00c, 0xc00f, 0xc030, 0xc033, 0xc03c, 0xc03f, 0xc0c0, 0xc0c3, 0xc0cc, 0xc0cf,
0xc0f0, 0xc0f3, 0xc0fc, 0xc0ff, 0xc300, 0xc303, 0xc30c, 0xc30f, 0xc330, 0xc333,
0xc33c, 0xc33f, 0xc3c0, 0xc3c3, 0xc3cc, 0xc3cf, 0xc3f0, 0xc3f3, 0xc3fc, 0xc3ff,
0xcc00, 0xcc03, 0xcc0c, 0xcc0f, 0xcc30, 0xcc33, 0xcc3c, 0xcc3f, 0xccc0, 0xccc3,
0xcccc, 0xcccf, 0xccf0, 0xccf3, 0xccfc, 0xccff, 0xcf00, 0xcf03, 0xcf0c, 0xcf0f,
0xcf30, 0xcf33, 0xcf3c, 0xcf3f, 0xcfc0, 0xcfc3, 0xcfcc, 0xcfcf, 0xcff0, 0xcff3,
0xcffc, 0xcfff, 0xf000, 0xf003, 0xf00c, 0xf00f, 0xf030, 0xf033, 0xf03c, 0xf03f,
0xf0c0, 0xf0c3, 0xf0cc, 0xf0cf, 0xf0f0, 0xf0f3, 0xf0fc, 0xf0ff, 0xf300, 0xf303,
0xf30c, 0xf30f, 0xf330, 0xf333, 0xf33c, 0xf33f, 0xf3c0, 0xf3c3, 0xf3cc, 0xf3cf,
0xf3f0, 0xf3f3, 0xf3fc, 0xf3ff, 0xfc00, 0xfc03, 0xfc0c, 0xfc0f, 0xfc30, 0xfc33,
0xfc3c, 0xfc3f, 0xfcc0, 0xfcc3, 0xfccc, 0xfccf, 0xfcf0, 0xfcf3, 0xfcfc, 0xfcff,
0xff00, 0xff03, 0xff0c, 0xff0f, 0xff30, 0xff33, 0xff3c, 0xff3f, 0xffc0, 0xffc3,
0xffcc, 0xffcf, 0xfff0, 0xfff3, 0xfffc, 0xffff,
};
bit EnFont = 0;
void GUI_DispChar(U8 Char,U8 X,U8 Y,bit Nor)
{
U8 i;
U8 dot;
U16 temp;
if(Y>(128-8)){//換行
X += 2;
Y = 0;
}
if(!Nor){
for(i=0;i<8;i++){
if(EnFont == 0){
WriteByte(X,(Y+i),chardot[i+(Char-0x20)*16]);
}else{
dot = chardot[i+(Char-0x20)*16];
temp = Changedot[dot];
//這段代碼把字體縱向放大2倍,外部調用時換行需要加倍
WriteByte(X,(Y+i),(U8)(temp&0x00FF));
WriteByte(X+1,(Y+i),(U8)((temp&0xFF00)>>8));
/*
//這段代碼把字體放大4倍,但由于橫向軸被放大,因此外部調用函數時也需要加倍
C51 COMPILER V7.20 KS0108 09/04/2007 22:35:41 PAGE 18
WriteByte(X,(Y+i*2),(U8)(temp&0x00FF));
WriteByte(X,(Y+i*2+1),(U8)(temp&0x00FF));
WriteByte(X+1,(Y+i*2),(U8)((temp&0xFF00)>>8));
WriteByte(X+1,(Y+i*2+1),(U8)((temp&0xFF00)>>8));
*/
}
}
for(i=8;i<16;i++){
if(EnFont == 0){
WriteByte(X+1,(Y+i-8),chardot[i+(Char-0x20)*16]);
}else{
dot = chardot[i+(Char-0x20)*16];
temp = Changedot[dot];
WriteByte(X+2,(Y+i-8),(U8)(temp&0x00FF));
WriteByte(X+3,(Y+i-8),(U8)((temp&0xFF00)>>8));
/*
WriteByte(X+2,(Y+(i-8)*2),(U8)(temp&0x00FF));
WriteByte(X+2,(Y+(i-8)*2+1),(U8)(temp&0x00FF));
WriteByte(X+3,(Y+(i-8)*2),(U8)((temp&0xFF00)>>8));
WriteByte(X+3,(Y+(i-8)*2+1),(U8)((temp&0xFF00)>>8));
*/
}
}
}else{
for(i=0;i<8;i++){
if(EnFont == 0){
WriteByte(X,(Y+i),0xFF-chardot[i+(Char-0x20)*16]);
}else{
dot = 0xFF-chardot[i+(Char-0x20)*16];
temp = Changedot[dot];
WriteByte(X*2,(Y+i),(U8)(temp&0x00FF));
WriteByte(X*2,(Y+i+1),(U8)(temp&0x00FF));
WriteByte(X*2+1,(Y+i),(U8)((temp&0xFF00)>>8));
WriteByte(X*2+1,(Y+i+1),(U8)((temp&0xFF00)>>8));
}
}
for(i=8;i<16;i++){
if(EnFont == 0){
WriteByte(X+1,(Y+i-8),0xFF-chardot[i+(Char-0x20)*16]);
}else{
dot = 0xFF-chardot[i+(Char-0x20)*16];
temp = Changedot[dot];
WriteByte((X+1)*2,(Y+i-8+1),(U8)(temp&0x00FF));
WriteByte((X+1)*2,(Y+i-8),(U8)(temp&0x00FF));
WriteByte((X+1)*2+1,(Y+i-8+1),(U8)((temp&0xFF00)>>8));
WriteByte((X+1)*2+1,(Y+i-8),(U8)((temp&0xFF00)>>8));
}
}
}
}
#endif
1102 //--------------------------
1103
1104 #if 0
//-------------顯示普通圖片
//------(圖像 長度 起始位置)
void Display_Image(U8 _CONST_ *IMG)
{
C51 COMPILER V7.20 KS0108 09/04/2007 22:35:41 PAGE 19
U8 XAddr;
U8 YAddr;
U16 Count;
Count = 0;
for(XAddr=0;XAddr<8;XAddr++){//0--7
for(YAddr=0;YAddr<128;YAddr++){//0--127
WriteByte(XAddr,YAddr,IMG[Count++]);
}
}
}
#endif
1120
1121 /*
1122 *****************************************************************************
1123 * GUI_DrawIcon - 制定位置顯示一個32x32的圖標
1124 * DESCRIPTION: -
1125 *
1126 * @Param x0:X軸坐標
1127 * @Param y0:Y軸坐標 注意邊界!
1128 * @Param Ico:圖標數據
1129 * @Return :
1130 * ----
1131 *****************************************************************************
1132 */
1133 void GUI_DrawIcon(U8 _CONST_ *Ico,U8 x0,U8 y0)
1134 {
1135 1 U8 i;
1136 1 U16 Count;
1137 1 Count = 0;
1138 1 if( y0 > 4){//邊界保護
1139 2 y0 = 4;
1140 2 }
1141 1 if(x0 >(LCD_XSIZE-32)){
1142 2 x0 = LCD_XSIZE-32;
1143 2 }
1144 1 for(i=0;i<32;i++){//第一行
1145 2 Display_Locate(Ico[Count++],x0+i,y0);
1146 2 }
1147 1 for(i=0;i<32;i++){//第二行
1148 2 Display_Locate(Ico[Count++],x0+i,y0+1);
1149 2 }
1150 1 for(i=0;i<32;i++){//第三行
1151 2 Display_Locate(Ico[Count++],x0+i,y0+2);
1152 2 }
1153 1 for(i=0;i<32;i++){//第四行
1154 2 Display_Locate(Ico[Count++],x0+i,y0+3);
1155 2 }
1156 1 }
1157 #if 0
/*
*****************************************************************************
* GUI_DispDecAt - 顯示十進制數值
* DESCRIPTION: -
* 處理長度最多5個數字(因為U16--->65536)
* @Param v:顯示的數據
* @Param x:X軸坐標
* @Param y:Y軸坐標 XY 均是起點位置坐標 也就是數值最高位的坐標
* @Param Len:指定的顯示長度1--5內
* @Return :
*
*****************************************************************************
C51 COMPILER V7.20 KS0108 09/04/2007 22:35:41 PAGE 20
*/
void GUI_DispDecAt(U16 v, U16 x, U16 y, U8 Len)
{
U8 i;
U8 CharBuf[5];
U8 HighByte;
HighByte = 0;
for(i = 0; i < 5; i++){
CharBuf[i] = (U8)(v%10);
v = v/10;
if(CharBuf[i]){
HighByte = i;
}
}
//第0位無論如何也顯示
i = 0;
GUI_DispCharAt(CharBuf[i]+'0',x+((Len-1)-i)*Char_XSIZE,y);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -