|
最近用ILI9320的TFT液晶时突发奇想,想在刷中文和ASCII时来个“透明写”功能,具体就是从中文或ASCII码库中取来编码时,普通程序对应编码1时将液晶的这一像素涂上CharColor(字符颜色),编码0涂上BackColor(背景颜色),而我想弄的这个程序是1涂上CharColor而0时不改变背景,这样做菜单就省力多了并且还能节省系统资源,但是PDF东找西找还是没搞明白怎么能简便的让液晶的AC自增1(发一堆命令改AC就算了,这我也想过,实在不行也就只能这样了,但是估计效率不怎么高啊)
我的意思就是希望能能很简单的使AC跳过指定点,现在写中文和ASCII的方法是一位一位判断字符代码,是1的写入CharColor是0的写入BackColor
这是我LCD写中文的底层程序,总感觉效率不高,有经验的请指点一下,谢谢了
/****************************************************************
函数名:Lcd写1个中文函数
入口参数:x,横向坐标,由左到右分别是0~15
y,纵向坐标,由上到下分别为0~19
CharColaor,字符的颜色
CharBackColor,字符背景颜色
ASCIICode,相应中文的编码
也就是说,320240分辨率的显示屏,横向能显示15中文字符,竖向能显示20行
返回值:无
*****************************************************************/
void Lcd_WriteChinese(u8 x,u8 y,u16 CharColor,u16 CharBackColor,u16 ChineseCode)
{
u8 ByteCounter,BitCounter,*ChinesePointer;
Lcd_Set16X16ChineseArea(x,y);
Lcd_WR_Start();
CatchChinese(ChineseCode,0);//一个去SPI FLASH取字模并将32byte字模存储到数组ChineseBuffer,另外那个0是字库的地址偏移
ChinesePointer=ChineseBuffer;//Chinese;
for(ByteCounter=0;ByteCounter<32;ByteCounter++)
{
for(BitCounter=0;BitCounter<8;BitCounter++)
{
if((*ChinesePointer & (0x80 >> BitCounter)) == 0x00)
{
Lcd_Rs_H();
Lcd_Write(CharBackColor);
Lcd_Wr_L();
Lcd_Wr_H();
}
else
{
Lcd_Rs_H();
Lcd_Write(CharColor);
Lcd_Wr_L();
Lcd_Wr_H();
}
}
ChinesePointer++;
}
Lcd_WR_End();
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|