最近网购了一块1.8寸TFT彩屏,准备用来做单片机图片显示,卖家也赠送了测试例程。本图片显示程序就是根据例程改造而来。
视频内部包含了图片循环显示和图片静止显示,以及如何取模。
图片取模方法如下:
1.首先打开PS(没有的可以自行下载一个,也可以用别的软件,能自定义图片尺寸即可),设置图片尺寸为120*160,(TFT彩屏最大显示尺寸为128*160),然后导入自己喜欢的图片,然后保存为 .jpg格式(其他格式图片取模软件无法打开)。
2.打开图片取模软件(没有的可以在开源文件里找),设置方法如图所示
注意最大宽度和高度可以自定义,但是需要与程序里面的参数保持一致,也不要超过TFT彩屏能显示的最大尺寸,否则会显示乱码。
3.打开在PS里制作好的图片,然后保存,注意名字里面不能出现特殊字符:( /|\:<*?> ),也最好不要出现中文,否则keil无法识别,需要手动修改名字。
4.复制生成好的.c文件,在keil里找到Picture.h文件,将文件粘贴进去(可以删掉原来的图片代码),根据需求决定是否修改名字。
这个是生成的名字
const unsigned char gImage_1[38400] = { 后面程序内容省略}
其中 gImage_1后面的数字1就是我们保存时的重命名,可以根据需要在程序中进行修改。但是要与下面的代码保持一致。
//取模方式 水平扫描 从左到右 低位在前
void showimage(const unsigned char *p) //显示120*160 自定义图片
{
int i,j,k;
unsigned char picH,picL;
Lcd_Clear(WHITE); //清屏
for(k=0;k<1;k++)//纵坐标图片数量
{
for(j=0;j<1;j++)//横坐标图片数量
{
Lcd_SetRegion(120*j+2,160*k,120*j+119,160*k+159); //坐标设置
for(i=0;i<120*160;i++)
{
picL=*(p+i*2); //数据低位在前
picH=*(p+i*2+1);
LCD_WriteData_16Bit(picH<<8|picL);
}
}
}
}
这段代码里面的120和160指的是图片尺寸,注意要与生成的图片尺寸一致,否则显示乱码或者报错。(TFT彩屏最大显示尺寸为128*160)
void QDTFT_Test_Demo(void)
{
// Lcd_Init();
// LCD_LED_SET;//通过IO控制背光亮
//// Redraw_Mainmenu();//绘制主菜单(部分内容由于分辨率超出物理值可能无法显示)
//// Color_Test();//简单颜色填充测试
//// Num_Test();//数码管字体测试
//// Font_Test();//中英文显示测试
showimage(gImage_1);//图片显示示例
delay_ms(5000);
showimage(gImage_2);//图片显示示例
delay_ms(5000);
showimage(gImage_3);//图片显示示例
delay_ms(5000);
//// LCD_LED_CLR;//IO控制背光灭
}
注意图片代码 gImage_后面的重命名要与 showimage(gImage_名字);一致,否则报错。例如图片代码名字为const unsigned char gImage_1 ,那么 showimage(gImage_1); ,否则报错。注意STM32F103C8T6单片机最多能够储存3张120*160 自定义图片。
下面是实际操作视频,视频内包括图片静止显示和动态显示两种,包括具体操作方法,不懂的可以参考一下。
帖子内涉及到的代码及软件均已开源。需要的可以下载。
创作不易,喜欢就支持一下制作吧!
全部评论