关于TFT彩屏
时间:10-02
整理:3721RD
点击:
用彩屏显示图片,图片大小取模24*32时,
字模为const unsigned char code gImage_picture[1680]={...};
显示函数为
void picture_play(uint16 xStart,uint16 xEnd,uint16 yStart,uint16 yEnd)
{
uint16 m;
cs=0;
TFT_SetRamAddr(xStart,xEnd-1,yStart,yEnd-1);
rs=1;
for(m=0;m<(1680/2);m++)
{
WriteDat(gImage_picture[m*2+1]);
WriteDat(gImage_picture[m*2]);
}
cs=1;
}
主函数中
picture_play(24,48,24,60);
能正常显示图片。
而改成36*48时,
字模为const unsigned char code gImage_picture[3072] ={...};
显示函数
void picture_play(uint16 xStart,uint16 xEnd,uint16 yStart,uint16 yEnd)
{
uint16 m;
cs=0;
TFT_SetRamAddr(xStart,xEnd-1,yStart,yEnd-1);
rs=1;
for(m=0;m<(3072/2);m++)
{
WriteDat(gImage_picture[m*2+1]);
WriteDat(gImage_picture[m*2]);
}
cs=1;
}
主函数中同样扫描
picture_play(24,60,24,72);
显示的图片就变成乱码。
为什么会这样,求指导
字模为const unsigned char code gImage_picture[1680]={...};
显示函数为
void picture_play(uint16 xStart,uint16 xEnd,uint16 yStart,uint16 yEnd)
{
uint16 m;
cs=0;
TFT_SetRamAddr(xStart,xEnd-1,yStart,yEnd-1);
rs=1;
for(m=0;m<(1680/2);m++)
{
WriteDat(gImage_picture[m*2+1]);
WriteDat(gImage_picture[m*2]);
}
cs=1;
}
主函数中
picture_play(24,48,24,60);
能正常显示图片。
而改成36*48时,
字模为const unsigned char code gImage_picture[3072] ={...};
显示函数
void picture_play(uint16 xStart,uint16 xEnd,uint16 yStart,uint16 yEnd)
{
uint16 m;
cs=0;
TFT_SetRamAddr(xStart,xEnd-1,yStart,yEnd-1);
rs=1;
for(m=0;m<(3072/2);m++)
{
WriteDat(gImage_picture[m*2+1]);
WriteDat(gImage_picture[m*2]);
}
cs=1;
}
主函数中同样扫描
picture_play(24,60,24,72);
显示的图片就变成乱码。
为什么会这样,求指导
从代码本身来看应该是没有问题的,很有可能是硬件本身不稳定的原因。如果能贴出彩屏的显示图片就更好了。另外我有一点疑问:你的图片数据量是怎么计算的啊(也就是1680和3072怎么计算的)。我的计算方法是24*32*2(液晶像素点16位模式)=1563,36*48*2=3456。
就是那个数据量错了。没按取模后给出的长宽算。