?? text.c
字號:
/******************************************************************************
QQ: 958664258
21IC用戶名:banhushui
交流平臺:http://blog.21ic.com/user1/5817/index.html
淘寶店鋪:http://shop58559908.taobao.com
旺旺:半壺水電子
編譯器版本:MDK3.5
******************************************************************************/
#include "..\APP\includes.h"
/*
24*24陣列Y-->>X變換
[BYTE0] [BYTE3].......
D7 D7
D6 D6
. .
. .
D1 D1
D0 D0
[BYTE1] [BYTE4]
D7 D7
D6 D6
. .
. .
D1 D1
D0 D0
[BYTE2] [BYTE5]
D7 D7
D6 D6
. .
. .
D1 D1
D0 D0
--------------------------------->>
[BYTE0] [BYTE1] [BYTE2]
D7D6..D1D0 D7D6..D1D0 D7D6..D1D0
[BYTE3] [BYTE4] [BYTE5]
D7D6..D1D0 D7D6..D1D0 D7D6..D1D0
.
.
.
*/
//void MODY24(uint8 * p)
//{
// uint8 buf[72];
// uint8 i, j;
// uint8 temp;
// uint8 ix, iy;
// uint16 xy;
//
// memset(buf, 0, 72);
// ix=0;iy=0;
// for(j=0; j<72; j++)
// {
// temp=p[j];
// for(i=0; i<8; i++)
// {
// xy=24*iy+ix;
// if(isBit8(temp, 7-i))
// {
// SetBit8(buf[xy/8], 7-(xy%8));
// }
// iy++;
// }
//
// if(iy==24)
// {
// iy=0;
// ix++;//iy變化24次ix才變化1次
// }
// }
//
// memcpy(p, buf, 72);
//}
/*
//將8*8 Y方向陣列做 X方向轉換
void MODY8(uint8 * p)
{
uint8 buf[8];
uint8 i, j;
uint8 temp;
memset(buf, 0, 8);
for (j = 0; j < 8; j++)
{
temp=p[j];
for (i = 0; i < 8; i++)
{
buf[i] <<= 1;
if(isBit8(temp, i))
//SetBit8(buf[i], 7-j);
SetBit8(buf[i], 0);
}
}
memcpy(p, buf, 8);
}
//將8*16 Y方向陣列做 X方向轉換(用于8*16 ASCII)
void MODY16(uint8 * p)
{
MODY8(p);
MODY8(p+8);
}
//將16*16 Y方向陣列做 X方向轉換(主要用于16*16 漢字)
void MODY32(uint8 * p)
{uint8 temp[16];
//uint8 i;
MODY8(p);
MODY8(p+8);
memcpy(temp, p, 16);
//p[0]=temp[0];
p[1]=temp[8];
p[2]=temp[1];
p[3]=temp[9];
p[4]=temp[2];
p[5]=temp[10];
p[6]=temp[3];
p[7]=temp[11];
p[8]=temp[4];
p[9]=temp[12];
p[10]=temp[5];
p[11]=temp[13];
p[12]=temp[6];
p[13]=temp[14];
p[14]=temp[7];
p[15]=temp[15];
MODY8(p+16);
MODY8(p+24);
memcpy(temp, p+16, 16);
//p[16]=temp[0];
p[17]=temp[8];
p[18]=temp[1];
p[19]=temp[9];
p[20]=temp[2];
p[21]=temp[10];
p[22]=temp[3];
p[23]=temp[11];
p[24]=temp[4];
p[25]=temp[12];
p[26]=temp[5];
p[27]=temp[13];
p[28]=temp[6];
p[29]=temp[14];
p[30]=temp[7];
p[31]=temp[15];
}
*/
/****************************************************************
函數名:LCD寫1個8*16 ASCII字符函數
入口參數:x,橫向坐標,由左到右分別是0~240-1
y,縱向坐標,由上到下分別為0~320-1
CharColaor,字符的顏色
CharBackColor,字符背景顏色
ASCIICode,相應字符的ASCII碼
也就是說,320240分辨率的顯示屏,橫向能顯示240/8個ASCII字符,豎向能顯示20行
返回值:無
注意!!!!!如果單獨使用此函數則應該加上LCD_Rs_H()和CS_TFT_H();為了優化系統省去了
這個指令,假設此函數執行的上一條語句是寫命令,(RS_L情況)則寫入將出錯
,因為ILI9320認為當RS_L時寫入的是命令
*****************************************************************/
void LCDWriteEN(u16 x, u16 y, u16 CharColor, u8 ASCIICode)
{
u8* pbuf;
u8 buf[16];
u16 ix, iy;
//GetASCIICode(buf, ASCIICode);//取這個字符的顯示代碼
GetASCIICode(buf, ASCIICode, 16);//取這個字符的顯示代碼
pbuf = buf;
for(iy=0; iy<16; iy++)//寫16行
{
for(ix=0; ix<8; ix++)//寫1行中的8列
{
if( isBit8(*pbuf, 7-ix)==0 )
{
;
}
else
{
DrawPixel(x+ix, y, CharColor);
}
}
pbuf++;
y++;
}
}
void LCDWriteEN16(u16 x, u16 y, u8 ASCIICode, u16 CharColor, u16 bkColor)
{
u8* pbuf;
u8 buf[16];
u16 ix, iy;
//GetASCIICode(buf, ASCIICode);//取這個字符的顯示代碼
GetASCIICode(buf, ASCIICode, 16);//取這個字符的顯示代碼
pbuf = buf;
for(iy=0; iy<16; iy++)//寫16行
{
for(ix=0; ix<8; ix++)//寫1行中的8列
{
if( isBit8(*pbuf, 7-ix)==0 )
{
DrawPixel(x+ix, y, bkColor);
}
else
{
DrawPixel(x+ix, y, CharColor);
}
}
pbuf++;
y++;
}
}
/****************************************************************
函數名:LCD寫1個16*24 ASCII字符函數
入口參數:x,橫向坐標,由左到右分別是0~240-1
y,縱向坐標,由上到下分別為0~320-1
CharColaor,字符的顏色
CharBackColor,字符背景顏色
ASCIICode,相應字符的ASCII碼
也就是說,320240分辨率的顯示屏,橫向能顯示240/16個ASCII字符,豎向能顯示20行
返回值:無
注意!!!!!如果單獨使用此函數則應該加上LCD_Rs_H()和CS_TFT_H();為了優化系統省去了
這個指令,假設此函數執行的上一條語句是寫命令,(RS_L情況)則寫入將出錯
,因為ILI9320認為當RS_L時寫入的是命令
*****************************************************************/
void LCDWriteEN24(u16 x, u16 y, u16 CharColor, u8 ASCIICode)
{
u8* pbuf;
u8 buf[48];
u16 ix, iy;
//GetASCIICode(buf, ASCIICode);//取這個字符的顯示代碼
GetASCIICode(buf, ASCIICode, 24);//取這個字符的顯示代碼
pbuf = buf;
for(iy=0; iy<24; iy++)//寫24行
{
for(ix=0; ix<8; ix++)//寫1行中的8列
{
if( isBit8(*pbuf, 7-ix)==0 )
{
;
}
else
{
DrawPixel(x+ix, y, CharColor);
}
}
pbuf++;
for(ix=0; ix<8; ix++)//寫1行中的右8列
{
if( isBit8(*pbuf, 7-ix)==0 )
{
;
}
else
{
DrawPixel(x+ix+8, y, CharColor);
}
}
pbuf++;
y++;
}
}
/****************************************************************
函數名:LCD寫1個16*16 漢字字符函數
入口參數:x,橫向坐標,由左到右分別是0~240-1
y,縱向坐標,由上到下分別為0~320-1
CharColaor,字符的顏色
CharBackColor,字符背景顏色
ASCIICode,相應字符的ASCII碼
也就是說,320240分辨率的顯示屏,橫向能顯示30個ASCII字符,豎向能顯示20行
返回值:無
注意!!!!!如果單獨使用此函數則應該加上LCD_Rs_H()和CS_TFT_H();為了優化系統省去了
這個指令,假設此函數執行的上一條語句是寫命令,(RS_L情況)則寫入將出錯
,因為ILI9320認為當RS_L時寫入的是命令
*****************************************************************/
void LCDWriteCN(u16 x, u16 y, u16 CharColor, u8 *p)
{
u8* pbuf;
u8 buf[32];
u16 ix, iy;
GetChineseCode(buf, p);//取這個字符的顯示代碼
pbuf = buf;
for(iy=0; iy<16; iy++)//寫16行
{
for(ix=0; ix<8; ix++)//寫1行中的左8列
{
if( isBit8(*pbuf, 7-ix)==0 )
{
;
}
else
{
DrawPixel(x+ix, y, CharColor);
}
}
pbuf++;
for(ix=0; ix<8; ix++)//寫1行中的右8列
{
if( isBit8(*pbuf, 7-ix)==0 )
{
;
}
else
{
DrawPixel(x+ix+8, y, CharColor);
}
}
pbuf++;
y++;
}
}
/****************************************************************
函數名:LCD寫1個16*16 漢字字符函數
入口參數:x,橫向坐標,由左到右分別是0~240-1
y,縱向坐標,由上到下分別為0~320-1
CharColaor,字符的顏色
CharBackColor,字符背景顏色
ASCIICode,相應字符的ASCII碼
也就是說,320240分辨率的顯示屏,橫向能顯示240/16個ASCII字符,豎向能顯示20行
返回值:無
注意!!!!!如果單獨使用此函數則應該加上LCD_Rs_H()和CS_TFT_H();為了優化系統省去了
這個指令,假設此函數執行的上一條語句是寫命令,(RS_L情況)則寫入將出錯
,因為ILI9320認為當RS_L時寫入的是命令
*****************************************************************/
void LCDWriteCN24(u16 x, u16 y, u16 CharColor, u8 *p)
{
u8* pbuf;
u8 buf[72];
u16 ix, iy;
GetChineseCode24(buf, p);//取這個字符的顯示代碼
//MODY24(buf);
pbuf = buf;
for(iy=0; iy<24; iy++)//寫24行
{
for(ix=0; ix<8; ix++)//寫1行中的左8列
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -