?? k90ti_lcd.c
字號:
INT16U Disp_y = Y;
if(GUIEnFont == En_5x8){
for(i = 0; i < 7; i++){
ImgData = chardot_5x8[i+(AscciiChar-0x20)*8];
Display_Locate(ImgData, X, Disp_y);
Disp_y++;
}
ImgData = 0xFF;//下劃線
Display_Locate(ImgData, X, Disp_y);
} else {
for(i = 0; i < 15; i++){
ImgData = chardot_8x16[i+(AscciiChar-0x20)*16];
Display_Locate(ImgData, X, Disp_y);
Disp_y++;
}
ImgData = 0xFF;//下劃線
Display_Locate(ImgData, X, Disp_y);
}
}
/*
----------------------------------------------------------------------------------------------
//移動當前Y坐標
----------------------------------------------------------------------------------------------
*/
void GUI_GotoY(INT16U y)
{
if (y > LCD_YSIZE) {
PosY = LCD_YSIZE-1;
} else {
PosY = y;
}
}
/*
----------------------------------------------------------------------------------------------
//移動當前Y坐標
----------------------------------------------------------------------------------------------
*/
void GUI_GotoX(INT16U x)
{
if (x > LCD_X_BYTE_SIZE) {
PosX = LCD_X_BYTE_SIZE;
} else {
PosX = x;
}
}
/*
*****************************************************************************
* GUI_GotoXY - 系統光標移動到指定位置
* DESCRIPTION: -
*
* @Param y:Y軸坐標
* @Param x:X軸坐標
* @Return :
* ----
*****************************************************************************
*/
void GUI_GotoXY(INT16U x,INT16U y)
{
GUI_GotoX(x);
GUI_GotoY(y);
}
//設置背景顏色
void GUI_SetBkColor(GUI_COLOR Color)
{
BkColor = Color;
}
//設置前景顏色
void GUI_SetColor(GUI_COLOR Color)
{
FgColor = Color;
}
/*
*****************************************************************************
* GUI_SetTextMode - 設置文字顯示模式
* DESCRIPTION: -
*
* @Param TextMode:模式代碼
* @Return :模式代碼
* ----
*****************************************************************************
*/
INT8U GUI_SetTextMode(INT8U TextMode)
{
GUITextMode = TextMode;
return GUITextMode;
}
/*
*****************************************************************************
* GUI_SetEnFont - 設置顯示的英文字體
* DESCRIPTION: -
* 目前支持兩種字體8x16 5x8
* @Param EnFont:字體代碼
* @Return :
* ----
*****************************************************************************
*/
void GUI_SetEnFont(INT8U 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_SetFontZoom(INT8U ZoomMode)
{
GUIZoomMode = ZoomMode;
if(GUIZoomMode == GUI_TEXTMODE_ZOOMx1){
if (GUIEnFont == En_5x8){
Char_XSIZE = En_5x8_XSIZE;
Char_YSIZE = En_5x8_YSIZE;
} else if (GUIEnFont == En_8x16){
Char_XSIZE = En_8x16_XSIZE;
Char_YSIZE = En_8x16_YSIZE;
}
Chinese_XSIZE = _Chinese_XSIZE_;
Chinese_YSIZE = _Chinese_YSIZE_;
}else{
if (GUIEnFont == En_5x8){
Char_XSIZE = 2*En_5x8_XSIZE;
Char_YSIZE = 2*En_5x8_YSIZE;
} else if (GUIEnFont == En_8x16){
Char_XSIZE = 2*En_8x16_XSIZE;
Char_YSIZE = 2*En_8x16_YSIZE;
}
Chinese_XSIZE = 2*_Chinese_XSIZE_;
Chinese_YSIZE = 2*_Chinese_YSIZE_;
}
}
/*
*****************************************************************************
* GUI_DispCharAt - 指定位置顯示一個ASCII碼
* DESCRIPTION: - 字體使用是系統設定的字體
*
* @Param x:X軸坐標
* @Param y:Y軸坐標
* @Param c:ASCII碼
* @Return :
* ----
*****************************************************************************
*/
void GUI_DispCharAt(INT8U AscciiChar, INT16U x, INT16U y)
{
switch (GUITextMode) {
case GUI_TEXTMODE_NORMAL :
Display_ASCII(AscciiChar, x, y);
break;
case GUI_TEXTMODE_REVERSE :
Display_InvASCII(AscciiChar, x, y);
break;
case GUI_TEXTMODE_UNDERLINE :
Display_ASCII_UnderLine(AscciiChar, x, y);
break;
default :
break;
}
}
/*
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
*/
#if 1
void GUI_DispChar(INT16U AscciiChar)
{
GUI_DispCharAt(AscciiChar, PosX, PosY);
PosX += 1;
}
#endif
/*
*****************************************************************************
* Display_Chinese - 指定位置顯示一個16x16的漢字
* DESCRIPTION: -
*
* @Param x0:X軸坐標0--(192-16)
* @Param y0:Y軸坐標0--(8-2)
* @Param UniCode:漢字內碼
* @Return :
* ----
*****************************************************************************
*/
void Display_Chinese(INT16U UniCode, INT16U x0, INT16U y0)
{
INT16U CodeID;
INT8U i, ImgData;
INT16U Disp_y = y0;
// 在字庫里搜索漢字
for(CodeID=0; CodeID < hzNum; CodeID++){
// 找到 指定漢字的 Index 后, 跳出循環
if ( (hzIndex[2*CodeID] == UniCode/256) && (hzIndex[2*CodeID+1] == UniCode%256) ){
break;
}else if(CodeID == (hzNum-1)){//未檢索到的漢字,顯示個"##"提示吧
GUI_DispCharAt('#',x0,y0);
GUI_DispCharAt('#',x0+Char_XSIZE,y0);
return;
}
}
//----------------------------------
switch (GUITextMode) {
case GUI_TEXTMODE_NORMAL :
//-------------------------------------------------------------------------
for(i = 0; i < 16; i++){
ImgData = hzdot[i*2+CodeID*32];
Display_Locate(ImgData, x0, Disp_y);//左邊
ImgData = hzdot[i*2+1+CodeID*32];
Display_Locate(ImgData, x0+Chinese_XSIZE/2, Disp_y);//右邊
if(GUIZoomMode == GUI_TEXTMODE_ZOOMx1){
Disp_y ++;
}else{
Disp_y += 2;
}
}
//-------------------------------------------------------------------------
break;
case GUI_TEXTMODE_REVERSE :
//-------------------------------------------------------------------------
for(i = 0; i < 16; i++){
ImgData = hzdot[i*2+CodeID*32] ^0xFF;
Display_Locate(ImgData, x0, Disp_y);//左邊
ImgData = hzdot[i*2+1+CodeID*32] ^ 0xFF;
Display_Locate(ImgData, x0+1, Disp_y);//右邊
Disp_y++;
}
//-------------------------------------------------------------------------
break;
case GUI_TEXTMODE_UNDERLINE :
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
for(i = 0; i < 15; i++){
ImgData = hzdot[i*2+CodeID*32];
Display_Locate(ImgData, x0, Disp_y);//左邊
ImgData = hzdot[i*2+1+CodeID*32];
Display_Locate(ImgData, x0+1, Disp_y);//右邊
Disp_y++;
}
//-------------------------------------------------------------------------
ImgData = 0xFF;
Display_Locate(ImgData, x0, Disp_y);
ImgData = 0xFF;
Display_Locate(ImgData, x0+1, Disp_y);
//-------------------------------------------------------------------------
break;
default :
break;
}
}
#if 1
void GUI_DispCEOL(void)
{
INT16U i;
for(i = PosX; i <= LCD_X_BYTE_SIZE-1; i += 1) {
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(INT8U _CONST_ *Str,INT16U x0,INT16U y0)
{
INT8U i;
if (NoXY == FALSE){//沒有提供坐標,則使用系統坐標
x0 = PosX;
y0 = PosY;
}
i = 0;
// if(GUI_TEXTMODE_ZOOMx2 ==GUIZoomMode){
// x0 = x0/2;
// y0 = y0/2;
// }
while(Str[i]!='\0'){
if (Str[i] < 0x80) {//是ASCII
if(Str[i] == '\n'){
x0 = 0;
y0 += Char_YSIZE;
} else {
if (x0 > (LCD_X_BYTE_SIZE-1)) {//換行
x0 = 0;
y0 += Char_YSIZE;
}
switch (GUITextMode) {
case GUI_TEXTMODE_NORMAL :
Display_ASCII(Str[i], x0, y0);
break;
case GUI_TEXTMODE_REVERSE :
Display_InvASCII(Str[i], x0, y0);
break;
case GUI_TEXTMODE_UNDERLINE :
Display_ASCII_UnderLine(Str[i], x0, y0);
break;
default :
break;
}
x0 += Char_XSIZE;
}
} else {//是中文
if (x0 > LCD_X_BYTE_SIZE-1){
x0 = 0;
y0 += Chinese_YSIZE;
}
Display_Chinese(Str[i]*256+Str[i+1],x0,y0);//中文
i++;
x0 += Chinese_XSIZE;
}
Str++;
}
if (NoXY == FALSE){
PosX = x0;
PosY = y0;
}
}
#if 0
/*
*****************************************************************************
* GUI_DispString - 在當前系統坐標下顯示字符串
* DESCRIPTION: -
* 除了坐標不能指定外 功能跟GUI_DispStringAt一致
* @Param s:字符串
* @Return :
* ----
*****************************************************************************
*/
void GUI_DispString(INT8U _CONST_ *Str)
{
NoXY = FALSE;
GUI_DispStringAt(Str,PosX,PosY);
NoXY = TRUE;
}
void GUI_DispStringLen(INT8U _CONST_ *Str, INT16U Len)
{
INT8U i;
i = 0;
while(Str[i]!='\0'){
if (i >= Len ){
return;
}
if (Str[i] < 0x80) {//是ASCII
if(Str[i] == '\n'){
// PosX = 0;
// PosY += 2;
} else {
if (PosX > (LCD_X_BYTE_SIZE-1)) {//換行
PosX = 0;
// PosY += 2;
}
switch (GUITextMode) {
case GUI_TEXTMODE_NORMAL :
Display_ASCII(Str[i], PosX, PosY);
break;
case GUI_TEXTMODE_REVERSE :
Display_InvASCII(Str[i], PosX, PosY);
break;
case GUI_TEXTMODE_UNDERLINE :
Display_ASCII_UnderLine(Str[i], PosX, PosY);
break;
default :
break;
}
PosX += 1;
}
} else {//是中文
if (PosX > LCD_X_BYTE_SIZE-1){
PosX = 0;
PosY += Chinese_YSIZE;
}
Display_Chinese(Str[i]*256+Str[i+1],PosX,PosY);//中文
i++;
PosX += Chinese_XSIZE;
}
i++;
}
}
/*
void GUI_DrawCursor(INT16U x, INT16U 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);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -