?? ili932x.c
字號(hào):
{
u32 temp;
Lcd_SetBox(xStart,yStart,xLong,yLong,0,0);
Lcd_WR_Start();
Set_Rs;
for (temp=0; temp<xLong*yLong; temp++)
{
DataToWrite(Color);
Clr_nWr;
Set_nWr;
}
Set_Cs;
}
void Lcd_ClearCharBox(u8 x,u16 y,u16 Color)
{
u32 temp;
Lcd_SetBox(x*8,y*16,8,16,0,0);
Lcd_WR_Start();
Set_Rs;
for (temp=0; temp < 128; temp++)
{
DataToWrite(Color);
Clr_nWr;
//Delay_nus(22);
Set_nWr;
}
Set_Cs;
}
/****************************************************************
函數(shù)名:Lcd寫(xiě)1個(gè)ASCII字符函數(shù)
入口參數(shù):x,橫向坐標(biāo),由左到右分別是0~29
y,縱向坐標(biāo),由上到下分別為0~19
CharColaor,字符的顏色
CharBackColor,字符背景顏色
ASCIICode,相應(yīng)字符的ASCII碼
也就是說(shuō),320240分辨率的顯示屏,橫向能顯示30個(gè)ASCII字符,豎向能顯示20行
返回值:無(wú)
注意?。。。。∪绻麊为?dú)使用此函數(shù)則應(yīng)該加上Lcd_Rs_H()和Set_Cs;為了優(yōu)化系統(tǒng)省去了
這個(gè)指令,假設(shè)此函數(shù)執(zhí)行的上一條語(yǔ)句是寫(xiě)命令,(RS_L情況)則寫(xiě)入將出錯(cuò)
,因?yàn)镮LI9320認(rèn)為當(dāng)RS_L時(shí)寫(xiě)入的是命令
*****************************************************************/
void Lcd_WriteASCII(u8 x,u8 y,u16 x_offset,u16 y_offset,u16 CharColor,u16 CharBackColor,u8 ASCIICode)
{
u8 RowCounter,BitCounter;
u8 *ASCIIPointer;
u8 ASCIIBuffer[16];
#if (ID_AM==000)|(ID_AM==010)|(ID_AM==100)|(ID_AM==110)
Lcd_SetBox(x*8,y*16,8,16,x_offset,y_offset);
#else
Lcd_SetBox(x*16,y*8,16,8,x_offset,y_offset);
#endif
Lcd_WR_Start();
GetASCIICode(ASCIIBuffer,ASCIICode,ASCII_Offset);//取這個(gè)字符的顯示代碼
ASCIIPointer=ASCIIBuffer;
for (RowCounter=0; RowCounter<16; RowCounter++)
{
for (BitCounter=0; BitCounter<8; BitCounter++)
{
if ((*ASCIIPointer&(0x80 >> BitCounter)) == 0x00)
{
//Set_Rs;
DataToWrite(CharBackColor);
Clr_nWr;
Set_nWr;
}
else
{
//Set_Rs;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
}
}
ASCIIPointer++;
}
// Set_Cs;
}
void Lcd_WriteASCIIClarity(u8 x,u8 y,u8 x_offset,u8 y_offset,u16 CharColor,u8 ASCIICode)
{
GPIO_InitTypeDef GPIO_InitStructure;
u8 RowCounter,BitCounter;
u8 *ASCIIPointer;
u8 ASCIIBuffer[16];
u16 Temp;
#if (ID_AM==000)|(ID_AM==010)|(ID_AM==100)|(ID_AM==110)
Lcd_SetBox(x*8,y*16,8,16,x_offset,y_offset);
#else
Lcd_SetBox(x*16,y*8,16,8,x_offset,y_offset);
#endif
Lcd_WR_Start();
GetASCIICode(ASCIIBuffer,ASCIICode,ASCII_Offset);//取這個(gè)字符的顯示代碼
ASCIIPointer=ASCIIBuffer;
for (RowCounter=0; RowCounter<16; RowCounter++)
{
for(BitCounter=0;BitCounter<8;BitCounter++)
{
if((*ASCIIPointer & (0x80 >> BitCounter)) == 0x00)
{
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOE, &GPIO_InitStructure);
Clr_nRd;
Set_nRd;
Temp=GPIO_ReadInputData(GPIOE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
DataToWrite(Temp);
Clr_nWr;
Set_nWr;
}
else
{
//Set_Rs;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
}
}
ASCIIPointer++;
}
// Set_Cs;
}
/**************************************************************
向液晶屏寫(xiě)入32*16的ASCII字符
輸入?yún)?shù):
x向坐標(biāo) x :(0~14)
y向坐標(biāo) y :(0~9)
x向偏移量 x_offset:(理論上是0~239)
y向偏移量 y_offset:(理論上是0~319) 注意:偏移量不能過(guò)大,當(dāng)x軸向超出16,y軸向超過(guò)32
也就是32*16字符大小時(shí)強(qiáng)烈建議使用x和y調(diào)整,
雖然偏移量可以實(shí)現(xiàn)大范圍偏移但是可讀性和維
護(hù)性都較差
字符顏色 CharColor:字符顏色
背景顏色 CharBackColor:背景顏色
***************************************************************/
void Lcd_Write32X16ASCII(u8 x,u8 y,u8 x_offset,u8 y_offset,u16 CharColor,u16 CharBackColor,u8 ASCIICode)
{
u8 RowCounter,BitCounter;
u8 *ASCIIPointer;
u8 ASCIIBuffer[16];
#if (ID_AM==000)|(ID_AM==010)|(ID_AM==100)|(ID_AM==110)
Lcd_SetBox(x*16,y*32,16,32,x_offset,y_offset);
#else
Lcd_SetBox(x*32,y*16,32,16,x_offset,y_offset);
#endif
Lcd_WR_Start();
GetASCIICode(ASCIIBuffer,ASCIICode,ASCII_Offset);//取這個(gè)字符的顯示代碼
ASCIIPointer=ASCIIBuffer;
for(RowCounter=0; RowCounter<16; RowCounter++)
{
for(BitCounter=0; BitCounter<8; BitCounter++)
{
if((*ASCIIPointer & (0x80 >> BitCounter)) == 0x00)
{
//Set_Rs;
DataToWrite(CharBackColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharBackColor);
Clr_nWr;
Set_nWr;
}
else
{
//Set_Rs;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
}
}
for(BitCounter=0; BitCounter<8; BitCounter++)
{
if((*ASCIIPointer & (0x80 >> BitCounter)) == 0x00)
{
//Set_Rs;
DataToWrite(CharBackColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharBackColor);
Clr_nWr;
Set_nWr;
}
else
{
//Set_Rs;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
}
}
ASCIIPointer++;
}
// Set_Cs;
}
//可以單獨(dú)使用的寫(xiě)一個(gè)ASCII字符函數(shù)
void Lcd_Write32X16ASCIIWrite(u8 x,u8 y,u8 x_offset,u8 y_offset,u16 CharColor,u16 CharBackColor,u8 ASCIICode)
{
u8 RowCounter,BitCounter;
u8 *ASCIIPointer;
//配置ASCII字符位置
#if (ID_AM==000)|(ID_AM==010)|(ID_AM==100)|(ID_AM==110)
Lcd_SetBox(x*16,y*32,16,32,x_offset,y_offset);
#else
Lcd_SetBox(x*32,y*16,32,16,x_offset,y_offset);
#endif
Lcd_WR_Start();
// CatchASCII(ASCIICode,ASCII_Offset);//取這個(gè)字符的顯示代碼
// ASCIIPointer=CharBuffer;
for(RowCounter=0;RowCounter<16;RowCounter++)
{
for(BitCounter=0;BitCounter<8;BitCounter++)
{
if((*ASCIIPointer & (0x80 >> BitCounter)) == 0x00)
{
Set_Rs;
DataToWrite(CharBackColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharBackColor);
Clr_nWr;
Set_nWr;
}
else
{
Set_Rs;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
}
}
for(BitCounter=0;BitCounter<8;BitCounter++)
{
if((*ASCIIPointer & (0x80 >> BitCounter)) == 0x00)
{
Set_Rs;
DataToWrite(CharBackColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharBackColor);
Clr_nWr;
Set_nWr;
}
else
{
Set_Rs;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
}
}
ASCIIPointer++;
}
Set_Cs;
}
void Lcd_Write32X16ASCIIClarity(u8 x,u8 y,u8 x_offset,u8 y_offset,u16 CharColor,u8 ASCIICode)
{
GPIO_InitTypeDef GPIO_InitStructure;
u8 RowCounter,BitCounter;
u8 *ASCIIPointer;
u8 ASCIIBuffer[16];
u16 Temp;
#if (ID_AM==000)|(ID_AM==010)|(ID_AM==100)|(ID_AM==110)
Lcd_SetBox(x*16,y*32,16,32,x_offset,y_offset);
#else
Lcd_SetBox(x*32,y*16,32,16,x_offset,y_offset);
#endif
Lcd_WR_Start();
GetASCIICode(ASCIIBuffer,ASCIICode,ASCII_Offset);//取這個(gè)字符的顯示代碼
ASCIIPointer=ASCIIBuffer;
for(RowCounter=0; RowCounter<16; RowCounter++)
{
for(BitCounter=0; BitCounter<8; BitCounter++)
{
if((*ASCIIPointer & (0x80 >> BitCounter)) == 0x00)
{
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOE, &GPIO_InitStructure);
Clr_nRd;
Set_nRd;
Temp=GPIO_ReadInputData(GPIOE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
DataToWrite(Temp);
Clr_nWr;
Set_nWr;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOE, &GPIO_InitStructure);
Clr_nRd;
Set_nRd;
Temp=GPIO_ReadInputData(GPIOE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
DataToWrite(Temp);
Clr_nWr;
Set_nWr;
}
else
{
//Set_Rs;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
}
}
for(BitCounter=0; BitCounter<8; BitCounter++)
{
if((*ASCIIPointer & (0x80 >> BitCounter)) == 0x00)
{
//Set_Rs;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOE, &GPIO_InitStructure);
Clr_nRd;
Set_nRd;
Temp=GPIO_ReadInputData(GPIOE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
DataToWrite(Temp);
Clr_nWr;
Set_nWr;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOE, &GPIO_InitStructure);
Clr_nRd;
Set_nRd;
Temp=GPIO_ReadInputData(GPIOE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
DataToWrite(Temp);
Clr_nWr;
Set_nWr;
}
else
{
//Set_Rs;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
DataToWrite(CharColor);
Clr_nWr;
Set_nWr;
}
}
ASCIIPointer++;
}
// Set_Cs;
}
/************************************************************
函數(shù)名:Lcd寫(xiě)字符串函數(shù)
功能:向指定位置寫(xiě)入一個(gè)或多個(gè)字符,本函數(shù)帶自動(dòng)換行功能
入口參數(shù):x,橫向坐標(biāo),由左到右分別是0~29
y,縱向坐標(biāo),由上到下分別為0~19
CharColaor,字符的顏色
CharBackColor,字符背景顏色
*s 指向要寫(xiě)的字符串
返回值:無(wú)
*************************************************************/
void Lcd_WriteString(u8 x,u8 y,u16 x_offset,u16 y_offset,u16 CharColor,u16 CharBackColor,char *s)
{
u8 databuff;
Set_Rs;
do
{
databuff=*s++;
Lcd_WriteASCII(x,y,x_offset,y_offset,CharColor,CharBackColor,databuff);
#if (ID_AM==000)|(ID_AM==010)|(ID_AM==100)|(ID_AM==110)
if (x<29)
{
x++;
}
else if (y<19)
{
x=0;
y++;
}
else
{
x=0;
y=0;
}
#else
if (y<39)
{
y++;
}
else if (x<14)
{
y=0;
x++;
}
else
{
x=0;
y=0;
}
#endif
}
while (*s!=0);
Set_Cs;
}
void Lcd_WriteStringClarity(u8 x,u8 y,u8 x_offset,u8 y_offset,u16 CharColor,char *s)
{
u8 databuff;
Set_Rs;
do
{
databuff=*s++;
Lcd_WriteASCIIClarity(x,y,x_offset,y_offset,CharColor,databuff);
#if (ID_AM==000)|(ID_AM==010)|(ID_AM==100)|(ID_AM==110)
if (x<29)
{
x++;
}
else if (y<19)
{
x=0;
y++;
}
else
{
x=0;
y=0;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -