STM32 1.8寸LCD图片显示

 1、16位真彩色显示

        没写,哪天用了补上

2、黑白显示

        16位真彩色的数据还是太大了,C8属实遭不住,这里只记录一下显示单色图片的方法。

首先找一个要显示的图片(最好是单色的,最好后缀改成bmp,其他格式的软件可能识别不了)

文件属性里看看图片的宽高有几个像素 

 

 打开Image2LCD软件,打开->选择刚才导出的bmp图片->左边的设置照着下图改->保存

打开PCtoLCD软件,上面的模式选择图形模式,然后文件->打开->打开刚才Image2LCD导出的bmp图片(直接后缀改成bmp的图片是不能识别的,必须用Image2LCD导出来的bmp)

运行时刷新图案周围的黑色部分纯纯浪费时间,最好把图截得只剩中间的图标部分(这个空白就有点多了↓)

 点上面的齿轮图标打开设置界面,设置改为如下:

 点击生成字模,然后把生成的数组cv到代码里面

给数组加个头加个尾就能用了

 

 代码:

没有加图片重叠模式,需要的可以自己改改

没有缩放功能,如果要求不高的话直接去画图里面改比例

//黑白图片显示函数
//x,y:图片起始坐标(左上角位置(如果没调的话))
//width,height:图片宽度,高度(像素)
//img:图片数组
//fc,bc:图片颜色,背景颜色(在lcd.h)

void LCD_Image(u16 x,u16 y,u16 width,u16 height,const u8* img,u16 fc,u16 bc){
	u8 temp,sizex,sizey,t,m=0;
	u16 i,TypefaceNum;//一个字符所占字节大小
	u16 x0=x;
	sizex=width;
	sizey=height;
	TypefaceNum=(sizex/8+((sizex%8)?1:0))*sizey;
	LCD_Address_Set(x,y,x+sizex-1,y+sizey-1);  //设置光标位置

	for(i=0;i<TypefaceNum;i++){
		temp=img[i];
		for(t=0;t<8;t++){
			if(temp&(0x01<<t))        //如果(最低位)是1的话
				LCD_DrawPoint(x,y,fc);//画一个FC颜色的点		
			else                      //如果(最低位)是0的话
				LCD_DrawPoint(x,y,bc);//画一个BC颜色的点(背景)
			x++;//下一个像素点

			if((x-x0)==sizex){    //换下一行
				x=x0;
				y++;
				break;
			}
		}
	}   	 	  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值