中级会员
- 积分
- 255
- 金钱
- 255
- 注册时间
- 2014-2-27
- 在线时间
- 67 小时
|
50金钱
我在使用STM32F103驱动ILI9341,2.4寸液晶屏时,刷新速度过慢,大概每秒才能刷新一次
以下是我的驱动
void LCD_ShowChar(uint16_t x,uint16_t y,uint8_t chr,uint8_t size1,int color,int Bcolor)
{
//x = X_MAX_PIXEL - x;
//y = Y_MAX_PIXEL - y;
uint16_t i,m,temp,size2,chr1;
uint16_t x0=x,y0=y;
if(size1==8)size2=6;
else size2=(size1/8+((size1%8)?1:0))*(size1/2); //得到字体一个字符对应点阵集所占的字节数
chr1=chr-' '; //计算偏移后的值
for(i=0;i<size2;i++)
{
if(size1==8)
{temp=asc2_0806[chr1];} //调用0806字体
else if(size1==12)
{temp=asc2_1206[chr1];} //调用1206字体
else if(size1==16)
{temp=asc2_1608[chr1];} //调用1608字体
else if(size1==24)
{temp=asc2_2412[chr1];} //调用2412字体
else if(size1==48)
{temp=asc2_4824[chr1];} //调用4824字体
//else if(size1==100)
//{temp=asc2_10050[chr1];} //调用10050字体 100号字体
else return;
for(m=0;m<8;m++)
{
if(temp&0x01)draw_point(x,y,color);
else draw_point(x,y,Bcolor);
temp>>=1;
y++;
}
x++;
if((size1!=8)&&((x-x0)==size1/2))
{x=x0;y0=y0+8;}
y=y0;
}
}
因为每次发送坐标导致速度很慢,我把他改成如下代码
void LCD_ShowChar(uint16_t x,uint16_t y,uint8_t chr,uint8_t size1,int color,int Bcolor)
{
//x = X_MAX_PIXEL - x;
//y = Y_MAX_PIXEL - y;
uint16_t i,m,temp,size2,chr1;
uint16_t x0=x,y0=y;
if(size1==8)size2=6;
else size2=(size1/8+((size1%8)?1:0))*(size1/2); //得到字体一个字符对应点阵集所占的字节数
chr1=chr-' '; //计算偏移后的值
for(i=0;i<size2;i++)
{
if(size1==8)
{temp=asc2_0806[chr1];} //调用0806字体
else if(size1==12)
{temp=asc2_1206[chr1];} //调用1206字体
else if(size1==16)
{temp=asc2_1608[chr1];} //调用1608字体
else if(size1==24)
{temp=asc2_2412[chr1];} //调用2412字体
else if(size1==48)
{temp=asc2_4824[chr1];} //调用4824字体
//else if(size1==100)
//{temp=asc2_10050[chr1];} //调用10050字体 100号字体
else return;
Lcd_SetRegion(x,y,x0,y0);//发送起始和结束坐标
//下面画点不再发送坐标
for(m=0;m<8;m++)
{
if(temp&0x01)draw_point2(color);
else draw_point2(Bcolor);
temp>>=1;
y++;
}
x++;
if((size1!=8)&&((x-x0)==size1/2))
{x=x0;y0=y0+8;}
y=y0;
}
}
后发现现实不正常,请问是不是我的结束坐标设置错误导致的
附上图片
更改后如下
|
-
|