介绍
LCD/OLED相信有过嵌入式开发经历的同学都有使用过,但是绝大多数人都是使用一些广为流传的驱动函数,在上面写写英文,写写汉字,画一些矩阵和圆这种简单的图案。作为一个超爱花里胡哨的选手,我当然不允许我的显示屏幕上只有这些东西,所以我总结出了一整套在LCD/OLED上绘制图案的方法,包括图片,图标和GIF。欢迎大家与我交流:[email protected]
图标绘制
使用软件:IconWorkshop + Img2Lcd
IconWorkshop
首先打开软件,选择UNIX图标,再选择想要生成的图片大小(只考虑单色图,因为要在OLED显示) 快乐绘图,使用右边工具栏中的画笔进行创作 效果图: 保存图片到自定义路径
Img2Lcd
使用软件打开上面保存的图片并如图修改配置参数(这个与绘制函数息息相关) 生成对应数组,并将其放到工程文件中(推荐使用一个头文件存储想要在显示器上打印的图片数组,或者将其存储入外部FLASH中) 编写图片绘制函数
/**
*@brief 在LCD指定位置绘制图片
*@param x0 y0 x1 y1 图片起止点
*@param front_color 图像颜色
*@param back_color 背景颜色
*@param p 图片存储地址
*/
void LCD_Draw_Picture(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, int front_color, int back_color, const unsigned char* p)
{
char temp, t;
unsigned int j=0;
unsigned char x,y;
if((y1-y0)%8!=0) y1 =(y1-y0)/8 + 1;
else y1 = y1 / 8;
for(y=0;y
temp = p[j++];
for(t=0;t
POINT_COLOR = front_color;
LCD_DrawPoint(x,y*8+y0+t);
}
else
{
POINT_COLOR = back_color;
LCD_DrawPoint(x,y*8+y0+t);
}
temp>>=1;
}
}
}
}
/**
*@brief 在OLED指定位置绘制图片
*@param x0 y0 x1 y1 图片起止点
*@param mode 0 反白显示 1 正常显示
*@param p 图片存储地址
*@note x:0~128 y:0~64
*/
void OLED_Draw_Picture(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t mode, unsigned const char p[])
{
char temp, t;
unsigned int j=0;
unsigned char x,y;
if((y1-y0)%8!=0) y1 =(y1-y0)/8 + 1;
else y1 = y1 / 8;
for(y=0;y
temp = p[j++];
for(t=0;t |