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;
}
}
}
}