?? ks0108.c
字號:
}
/*
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
*/
#if 0
/*
----------------------------------------------------------------------------------------------
//移動當前Y坐標
----------------------------------------------------------------------------------------------
*/
void GUI_GotoY(U8 y)
{
if (y > 7) {
PosY = 7;
} else {
PosY = y;
}
}
/*
----------------------------------------------------------------------------------------------
//移動當前Y坐標
----------------------------------------------------------------------------------------------
*/
void GUI_GotoX(U8 x)
{
if (x > 127) {
PosX = 127;
} else {
PosX = x;
}
}
/*
*****************************************************************************
* GUI_GotoXY - 系統光標移動到指定位置
* DESCRIPTION: -
*
* @Param y:Y軸坐標
* @Param x:X軸坐標
* @Return :
* ----
*****************************************************************************
*/
void GUI_GotoXY(U8 x,U8 y)
{
GUI_GotoX(x);
GUI_GotoY(y);
}
#endif
/*
*****************************************************************************
* GUI_SetTextMode - 設置文字顯示模式
* DESCRIPTION: -
*
* @Param TextMode:模式代碼
* @Return :模式代碼
* ----
*****************************************************************************
*/
U8 GUI_SetTextMode(U8 TextMode)
{
GUITextMode = TextMode;
return GUITextMode;
}
/*
*****************************************************************************
* GUI_SetEnFont - 設置顯示的英文字體
* DESCRIPTION: -
* 目前支持兩種字體8x16 5x8
* @Param EnFont:字體代碼
* @Return :
* ----
*****************************************************************************
*/
void GUI_SetEnFont(U8 EnFont)
{
if (EnFont == En_5x8){
GUIEnFont = En_5x8;
Char_XSIZE = En_5x8_XSIZE;
Char_YSIZE = En_5x8_YSIZE;
} else {
GUIEnFont = En_8x16;
Char_XSIZE = En_8x16_XSIZE;
Char_YSIZE = En_8x16_YSIZE;
}
}
/*
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
*/
void GUI_Delay(U16 Period)
{
U8 j;
for (; Period>0 ; Period--) {
for (j = 0; j < 200; j++) {
}
}
}
/*
*****************************************************************************
* GUI_DispCharAt - 指定位置顯示一個ASCII碼
* DESCRIPTION: - 字體使用是系統設定的字體
*
* @Param x:X軸坐標
* @Param y:Y軸坐標
* @Param c:ASCII碼
* @Return :
* ----
*****************************************************************************
*/
void GUI_DispCharAt(U8 c, U8 x, U8 y)
{
switch (GUITextMode) {
case GUI_TEXTMODE_NORMAL :
Display_ASCII(c, x, y);
break;
case GUI_TEXTMODE_REVERSE :
Display_InvASCII(c, x, y);
break;
case GUI_TEXTMODE_UNDERLINE :
Display_ASCII_UnderLine(c, x, y);
break;
default :
break;
}
}
/*
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
*/
#if 0
void GUI_DispChar(U8 c)
{
GUI_DispCharAt(c, PosX, PosY);
PosX += 8;
}
#endif
/*
*****************************************************************************
* GUI_Init - 初始化GUI顯示
* DESCRIPTION: -
*
* @Param void:
* @Return :
* ----
*****************************************************************************
*/
void GUI_Init(void)
{
Display_Init();
GUIEnFont = En_8x16;
GUITextMode = GUI_TEXTMODE_NORMAL;
Char_XSIZE = En_8x16_XSIZE;
Char_YSIZE = En_8x16_YSIZE;
PosX = 0;
PosY = 0;
NoXY = true;
}
void GUI_Clear(void)
{
Display_Clear();
}
#if 0
void GUI_DispCEOL(void)
{
U8 i;
for(i = PosX; i <= LCD_XSIZE-8; i += 8) {
GUI_DispCharAt(' ', i, PosY);
}
}
#endif
/*
*****************************************************************************
* GUI_DispStringAt - 指定位置顯示一個字符串
* DESCRIPTION: -
* 支持中英混合 當中英混合時英文字體強制為8x16 如果單單英文 按照設定字體
* @Param x0:X軸坐標
* @Param y0:Y軸坐標
* @Param s:字符串
* @Return :
* ----
*****************************************************************************
*/
//void GUI_DispStringAt(U8 _CONST_ *s,U8 x0,U8 y0)
void GUI_DispStringAt(U8 *s,U8 x0,U8 y0)
{
U8 i;
if (NoXY == false){//沒有提供坐標,則使用系統坐標
x0 = PosX;
y0 = PosY;
}
i = 0;
while(s[i]!='\0'){
if (s[i] < 0x80) {//是ASCII
if(s[i] == '\n'){
x0 = 0;
y0 += Char_YSIZE;
} else {
if (x0 > (LCD_XSIZE-1)) {//換行
x0 = 0;
y0 += Char_YSIZE;
}
switch (GUITextMode) {
case GUI_TEXTMODE_NORMAL :
Display_ASCII(s[i], x0, y0);
break;
case GUI_TEXTMODE_REVERSE :
Display_InvASCII(s[i], x0, y0);
break;
case GUI_TEXTMODE_UNDERLINE :
Display_ASCII_UnderLine(s[i], x0, y0);
break;
default :
break;
}
x0 += Char_XSIZE;
}
} else {//是中文
if (x0 > LCD_XSIZE-16){
x0 = 0;
y0 += Chinese_YSIZE;
}
Display_Chinese(s[i]*256+s[i+1],x0,y0);//中文
i++;
x0 += Chinese_XSIZE;
}
s++;
}
if (NoXY == false){
PosX = x0;
PosY = y0;
}
}
#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 :
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
/*
*****************************************************************************
* GUI_DispStringAtBar - 顯示一個字符串在一個BAR中
* DESCRIPTION: -
* 可以設定對齊方式
* @Param s:字符串
* @Param x0:BAR起始X軸坐標
* @Param x1:BAR結束點的X軸坐標
* @Param y0:BAR的Y軸坐標
* @Param Mode:對齊方式 居中于BAR 左對齊BAR 右對齊BAR
* @Return :
* ----
*****************************************************************************
*/
//void GUI_DispStringAtBar(U8 _CONST_ *s,U8 x0, U8 y0, U8 x1,U8 Mode)
void GUI_DispStringAtBar(U8 *s,U8 x0, U8 y0, U8 x1,U8 Mode)
{
U8 ENCount;//英文統計
U8 CNCount;//中文統計
U8 XLen;
U8 X;
U8 Y;
U8 i;
CNCount = 0;
ENCount = 0;
XLen = 0;
i = 0;
while(s[i]!='\0'){//統計中英文個數
if (s[i] > 0x80) {
CNCount ++;
i++;
} else {
ENCount++;
}
i++;
}
GUI_SetEnFont(En_8x16);
/*
if(CNCount){
GUI_SetEnFont(En_8x16);
} else {
GUI_SetEnFont(En_5x8);
}
*/
XLen = ENCount*8 + CNCount*16;
if (XLen > 127) {//我們只能顯示一行
XLen = 127;
}
//識別對其方式屬性
switch (Mode&0x30) {//只有這兩個Bit是這個屬性
case GUI_TA_LEFT: //左對齊
XLen = 0;
break;
case GUI_TA_HCENTER: //居中
XLen = ((x1-x0)-XLen)/2;
break;
case GUI_TA_RIGHT: //右對齊
XLen = (x1-x0)-XLen;
break;
default:
break;
}
//--------------------------------------
//得到喀什顯示的起點坐標
X = x0+XLen;
Y = y0;
//---------------------
//清除字符前面的空白部分
if(Mode&GUI_JUST_TEXT){
} else {
x0 = X;
if (GUITextMode == GUI_TEXTMODE_REVERSE){
for(i = 0; i <x0; i++){
Display_Locate(0xFF, i,y0);
Display_Locate(0xFF, i,y0+1);
}
}else{
for(i = 0; i <x0; i++){
Display_Locate(0x00, i,y0);
Display_Locate(0x00, i,y0+1);
}
}
}
//-----------------------
i = 0;
while(s[i]!='\0'){
if (s[i] < 0x80) {//是ASCII
switch (GUITextMode) {
case GUI_TEXTMODE_NORMAL :
Display_ASCII(s[i], X, Y);
break;
case GUI_TEXTMODE_REVERSE :
Display_InvASCII(s[i], X, Y);
break;
case GUI_TEXTMODE_UNDERLINE :
Display_ASCII_UnderLine(s[i], X, Y);
break;
default :
break;
}
X += 8;
} else {//是中文
Display_Chinese(s[i]*256+s[i+1],X,Y);//中文
i++;
X += 16;
}
// s++;
i++;
}
//清除字符后面的空白部分
if(Mode&GUI_JUST_TEXT){
GUI_SetEnFont(En_5x8);
return;
} else {
x0 = X;
if (GUITextMode == GUI_TEXTMODE_REVERSE){
for(i = 0; i <x1-x0; i++){
Display_Locate(0xFF, x0+i,y0);
Display_Locate(0xFF, x0+i,y0+1);
}
}else{
for(i = 0; i <x1-x0; i++){
Display_Locate(0x00, x0+i,y0);
Display_Locate(0x00, x0+i,y0+1);
}
}
GUI_SetEnFont(En_5x8);
return;
}
//---------------------------------------
}
#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)
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -