关于tft彩屏显示图片的问题

2020-02-02 09:24发布

用彩屏显示图片,图片大小取模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);
显示的图片就变成乱码。
为什么会这样,求指导
PCB打样找华强 http://www.hqpcb.com 样板2天出货
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
liuchangyin
1楼-- · 2020-02-02 12:22
36不是8的倍数吧?需要8的倍数才行
ch4n9
2楼-- · 2020-02-02 14:55
liuchangyin 发表于 2012-11-12 22:52
36不是8的倍数吧?需要8的倍数才行

可48*56也不行啊。。 128*160也不行啊。。
lcw_swust
3楼-- · 2020-02-02 17:14
楼主的图片大小与数组大小是个什么关系?
24*32=768
1680/768=2.1875
36*48=1728
3072/1728=1.7777...
这两个比例都不对呀,一个像素点占几个字节?
ch4n9
4楼-- · 2020-02-02 17:28
lcw_swust 发表于 2012-11-13 09:18
楼主的图片大小与数组大小是个什么关系?
24*32=768
1680/768=2.1875

不怎么清楚。。刚学。显示图片那函数是有个例程里这样写的,然后那个数组是用imageLcd取的。。
lcw_swust
5楼-- · 2020-02-02 21:17
 精彩回答 2  元偷偷看……
ch4n9
6楼-- · 2020-02-02 21:49
lcw_swust 发表于 2012-11-13 10:52
这两个程序都是有问题的:
1.看样子,一个像素两字节,picture[1680]=24*35*2,图片大小应是24*35,不是2 ...

可以了。是不是取模后都要自己调整的?好像没有一个取模后的大小是对应我取模时设定的大小的

一周热门 更多>