?? k90ti_lcd.c
字號:
void GUI_CursorOFF(U8 x, U8 y)
{
Display_Locate(0x00,x,y);
Display_Locate(0x00,x,y+1);
}
*/
#endif
/*
*****************************************************************************
* GUI_DispHexAt - 顯示一個數據的十六進制值
* DESCRIPTION: -
* 最大長度4個
* @Param v:數據
* @Param x:X軸坐標
* @Param y:Y軸坐標 XY均是起點坐標 也就是數據最高字節坐標
* @Param Len:長度1--4
* @Return :
*
*****************************************************************************
*/
void GUI_DispHexAt(INT32U v, INT16U x, INT16U y, INT8U Len)
{
INT8U i;
INT8U HexData;
if(Len > 8){//限制范圍
Len = 8;
}
for(i = 0; i < Len; i++){
HexData = v&0x0F;
v = v >>4;
if(HexData < 0x0A){
GUI_DispCharAt(HexData+'0',x+Char_XSIZE*(Len-1-i),y);
}else{
GUI_DispCharAt(HexData-0x0A+'A',x+Char_XSIZE*(Len-1-i),y);
}
}
}
//顯示 bit的數據
void GUI_DispBitAt(INT8U v, INT16U x, INT16U y)
{
INT8U i;
for(i = 0; i < 8; i++){
if(v & 0x80){
GUI_DispCharAt('1',x+Char_XSIZE*i,y);
}else{
GUI_DispCharAt('0',x+Char_XSIZE*i,y);
}
v = v << 1;
}
}
/*
*****************************************************************************
* HBar - 顯示一個垂直的進度條
* DESCRIPTION: -
* 附加有百分比顯示
* @Param y0:進度條起點X軸坐標 0-->LCD_YSIZE
* @Param y1:進度條結束點X坐標 0-->LCD_YSIZE 必須大于y0 百分比顯示于該坐標之后
* @Param x:進度條X軸坐標 0--LCD_X_BYTE_SIZE
* @Param percent:當前百分值 0-->100
* @Return :
*
*****************************************************************************
*/
void VBar(INT16U x, INT16U y0, INT16U y1,INT8U percent)
{
INT8U U8Temp;
INT16U Ypos;
float Center;
if(percent > 100){//防止上溢出
percent = 100;
}
Center = (y1-y0);
Center *= percent;
Center /= 100;
// U8Temp = (x1-x0)*percent/100;//這個計算做法在430上能用,但C51下似乎必須用浮點算
U8Temp = (INT8U)Center;
Display_Locate(0xFF, x, y0);
Display_Locate(0xFF, x, y1);
for(Ypos = 1; Ypos < U8Temp; Ypos++){
Display_Locate(0xBD, x, y0+Ypos);
}
for(Ypos = y0+U8Temp+1; Ypos < y1; Ypos++){
Display_Locate(0x81, x, Ypos);
}
}
//INT8U _CONST_ BarCode0[]={0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00};
//INT8U _CONST_ BarCode1[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
INT8U _CONST_ BarCode0[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE};
void HBar(INT16U y, INT16U x0, INT16U x1,INT8U percent)
{
INT8U U8Temp;
INT8U U8A;
INT8U U8B;
INT16U i;
INT8U Width;
float Center;
Center = (x1-x0)*8;
Center *= percent;
Center /= 100;
// U8Temp = (x1-x0)*percent/100;//這個計算做法在430上能用,但C51下似乎必須用浮點算
U8Temp = (INT8U)Center;
U8A = U8Temp / 8;
U8B = U8Temp % 8;
/*
if(U8A){
for(i = 0; i < U8A; i++){
for(Width = 0; Width < 8; Width++){
Display_Locate(0xFF, x0 + i, y+Width);
}
}
}else{
for(Width = 0; Width < 8; Width++){
Display_Locate(0x80, x0, y+Width);
}
}
*/
//------------------
for(i = 0; i < U8A; i++){
Display_Locate(0xFF, x0+i, y);
Display_Locate(0x00, x0+i, y+1);
for(Width = 2; Width < 6; Width++){
Display_Locate(0xFF, x0+i, y+Width);
}
Display_Locate(0x00, x0+i, y+6);
Display_Locate(0xFF, x0+i, y+7);
}
if (U8A == x1-x0){
U8Temp = BarCode0[U8B] | 0x01;
}else if(U8A == 0){
U8Temp = BarCode0[U8B] | 0x80;
}else{
U8Temp = 0xFF;
}
i = x0+ U8A;
Display_Locate(0xFF, i, y);
Display_Locate(0x00, i, y+1);
for(Width = 2; Width < 6; Width++){
Display_Locate(U8Temp, i, y+Width);
}
Display_Locate(0x00, i, y+6);
Display_Locate(0xFF, i, y+7);
//------------------
for(i = x0+U8A+1; i < x1-1; i++){
Display_Locate(0xFF, i, y);
Display_Locate(0x00, i, y+1);
for(Width = 2; Width < 6; Width++){
Display_Locate(0x00, i, y+Width);
}
Display_Locate(0x00, i, y+6);
Display_Locate(0xFF, i, y+7);
}
if (U8A != x1-x0){
i = x1-1;
Display_Locate(0xFF, i, y);
Display_Locate(0x01, i, y+1);
for(Width = 2; Width < 6; Width++){
Display_Locate(0x01, i, y+Width);
}
Display_Locate(0x01, i, y+6);
Display_Locate(0xFF, i, y+7);
}
/*
if(U8A){
for(Width = 0; Width < 8; Width++){
Display_Locate(0x80, x0, y+Width);
}
}
U8Temp = (INT8U)Center;
U8Temp = U8Temp % 8;
if(U8Temp){
}
for(i = x0+U8Temp+1; i < x1; i++){
Display_Locate(0xFF, i, y);
Display_Locate(0x00, i, y+1);
for(Width = 2; Width < 6; Width++){
Display_Locate(0x00, i, y+Width);
}
Display_Locate(0x00, i, y+6);
Display_Locate(0xFF, i, y+7);
}
*/
}
/*
*****************************************************************************
* GUI_DispDecAt - 顯示十進制數值
* DESCRIPTION: -
* 處理長度最多5個數字(因為INT16S--->+- 32768)
* @Param v:顯示的數據
* @Param x:X軸坐標
* @Param y:Y軸坐標 XY 均是起點位置坐標 也就是數值最高位的坐標
* @Param Len:指定的顯示長度1--5內正負號跟隨于最高位的數字前面 更高的用空白顯示
5位時:
+12345
+12
-235
* @Return :
*
*****************************************************************************
*/
void GUI_DispDecSAt(INT16S v, INT16U x, INT16U y, INT8U Len)
{
#define IsPositive 0
#define IsNegative 1
#define IsZero 2
INT8U i;
INT8U CharBuf[5];
INT8U HighByte;
INT8U Flag;
Len += 1;//預留 + -符號
Flag = 0;
if(v < 0){
v = -v;
Flag = IsNegative;
}else if (v == 0){
Flag = IsZero;
}else{
Flag = IsPositive;
}
HighByte = 0;
for(i = 0; i < 5; i++){
CharBuf[i] = (INT8U)(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);
for(i = 1; i < Len; i++){
if(i > HighByte){
GUI_DispCharAt(' ',x+((Len-1)-i)*Char_XSIZE,y);
}else{
GUI_DispCharAt(CharBuf[i]+'0',x+((Len-1)-i)*Char_XSIZE,y);
}
}
if(IsZero == Flag){
GUI_DispCharAt(' ',x+((Len-2)-HighByte)*Char_XSIZE,y);
}else if(IsPositive == Flag){
GUI_DispCharAt('+',x+((Len-2)-HighByte)*Char_XSIZE,y);
}else{
GUI_DispCharAt('-',x+((Len-2)-HighByte)*Char_XSIZE,y);
}
}
/*
*****************************************************************************
* GUI_DispDecAt - 顯示十進制數值
* DESCRIPTION: -
* 處理長度最多5個數字(因為INT16S--->+- 32768)
* @Param v:顯示的數據
* @Param x:X軸坐標
* @Param y:Y軸坐標 XY 均是起點位置坐標 也就是數值最高位的坐標
* @Param Len:指定的顯示長度1--5內 高位用空格填充
5位時:
12345
12
235
* @Return :
*
*****************************************************************************
*/
void GUI_DispDecAt(INT16U v, INT16U x, INT16U y, INT8U Len)
{
INT8U i;
INT8U CharBuf[5];
INT8U HighByte;
HighByte = 0;
for(i = 0; i < 5; i++){
CharBuf[i] = (INT8U)(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);
for(i = 1; i < Len; i++){
if(i > HighByte){
GUI_DispCharAt(' ',x+((Len-1)-i)*Char_XSIZE,y);
}else{
GUI_DispCharAt(CharBuf[i]+'0',x+((Len-1)-i)*Char_XSIZE,y);
}
}
}
/*
*****************************************************************************
* GUI_DrawIcon - 制定位置顯示一個圖標 圖標數據區的開始2個字節指明該圖標大小
* DESCRIPTION: -
*
* @Param x0:X軸坐標
* @Param y0:Y軸坐標 注意邊界!
* @Param Ico:圖標數據
* @Return :
* ----
*****************************************************************************
*/
void GUI_DrawIcon(INT8U _CONST_ *Ico,INT16U x0,INT16U y0)
{
INT16U i;
INT16U j;
INT16U Count;
INT16U ICO_XLen;
INT16U ICO_YLen;
ICO_XLen = Ico[0];//X Byte len
ICO_YLen = Ico[1];//Y Byte len
Count = 2;
for(j = 0; j < ICO_YLen; j++){
if(y0 + j < LCD_YSIZE){
for(i = 0; i < ICO_XLen; i++){
if(x0 + i < LCD_X_BYTE_SIZE){
Display_Locate(Ico[Count++],x0+i,y0+j);
}else{
Count++;//如果越界 只是丟棄數據不顯示
}
}
}else{
// Count++;//如果越界 只是丟棄數據不顯示
return;
}
}
}
void GUI_Test(void)
{
INT8U x;
INT8U y;
INT16U Key;
GUI_Init();
// for(y = 0; y <= 100;y++){
// Display_Locate(0xFF, 0,y);
// }
// Display_ASCII('A',0,0);
// Display_ASCII('B',1,0);
// Display_ASCII('C',1,8);
/*
for(x = 0; x < 8; x++){
y = (1<<x);
GUI_DispBitAt(y, 0,0);
GUI_DispHexAt(y, 0,Char_YSIZE*4,2);
}
for(y = 0; y <= 100;y++){
for(x = 0; x <= 100;x++){
//VBar(2,10,210,x);
HBar(10, 2,22,x);
LCD_DelayMs(300);
}
LCD_DelayMs(300);
}
*/
// GUI_SetFontZoom(GUI_TEXTMODE_ZOOMx2);
// GUI_DispStringAt("ABFC",0,0);
// GUI_DispStringAt("String測試",0,Char_YSIZE*7);
// Display_Locate(0x01, 0,0);
// Display_Locate(0x02, 1,1);
// Display_Locate(0xFF, 0,1);
// for(x = 0; x < 8; x++){
// Display_Locate((1<<x), 0,0);
// }
GUI_SetFontZoom(GUI_TEXTMODE_ZOOMx1);
GUI_DispStringAt("String",0,Char_YSIZE*13);
// Display_Chinese(0xD5EF,10,0);
GUI_DispStringAt("String測試中..",0,Char_YSIZE*2);
GUI_DispStringAt("AString測試中..",10,480-32);
Display_Locate(0xFF, 0,0);
while(1){
for(y = 0; y <= 100;y++){
GUI_DispDecAt(y,0,0,3);
SIM_Delay(1);
Key = GUI_GetKey();
if(Key){
GUI_DispHexAt(Key,0,48,4);
}
}
}
// Display_Locate(0xFF, 0,1);
Display_Locate(0xFF, LCD_X_BYTE_SIZE-1,0);
Display_Locate(0xFF, 0,(LCD_YSIZE-1));
Display_Locate(0xFF, LCD_X_BYTE_SIZE-1,LCD_YSIZE-1);
for(x = 0; x < (LCD_XSIZE/8); x++){
Display_Locate(0xAA, x,0);
Display_Locate(0xAA, x,1);
Display_Locate(0xAA, x,2);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -