写了一个LCD点阵数据生成小软件软件,可以自己画图并生成C源码

2019-07-21 01:17发布

项目需要开发OLED界面,需要显示一些图标,但是没发现有生成图标点阵数据的软件,自己动手做一个小软件,给大家分享下,希望能帮到大家。

这个软件和PCtoLCD之类的软件有什么不同呢?最大的不同是:直接用鼠标绘图!本来是支持其它图片格式导入的,无奈,没!时!间!啊,大家先将就吧。

程序是绿 {MOD}的,不需要安装,解压缩后双击exe文件运行;因为是WPF做的,启动的时候可能有慢,请耐心等待一下。

程序运行需要.Net Framework 4.0 Client Profile支持,理论上WIN8以上的系统自带这个,如果启动时报错请安装一下这个支持库。

这是主界面,有两个菜单:Tools 和 LCD Profile

Tools 菜单很简单,按钮名称一看就知道干什么的,不多说了。

LCD Profile 菜单也很简单,也不多说了;有一点注意一下就好,因为我用0.96寸的OLED,所以软件的最大分辨率暂时是128 * 64(硬件软件都要搞,精力有限啊,大家抱歉啊)



重点说一下取模的方式吧。

其实软件的设计是支持很多取模方式的,但是,没!时!间!啊!,所以暂时只实现了一种取模方式:整行整行取模!每8个像素为一组,保存在一个字节里;如果每行取模到最后发现凑不够8个像素怎么办?凑零啊!然后数据采用大端对齐的方式,每组最左侧的像素放在字节的最高位。

举个例子吧:


比如这一组像素,取模后的值为B10101010,即0xAA

好人做到底,再贴一个KEIL的解析程序吧

[mw_shl_code=c,true]OLED_DrawPoint函数是画点函数,具体请参考原子开发板的OLED示例程序。[/mw_shl_code]
[mw_shl_code=c,true]void OLED_ShowIcon(uint8_t x, uint8_t y, const uint8_t *icon) { uint8_t icon_width, icon_height; // 图标的尺寸(占用几个像素) uint8_t grps_in_row; // 每一行有几个像素组(8个像素为一组) uint8_t grp_data; // 每一组的数据(即图标数据里的一个字节) uint8_t b, g, r; uint8_t x_to_set; // 将要画的点的横坐标 icon_width = *icon++; icon_height = *icon++; grps_in_row = icon_width / 8 + ((icon_width % 8) ? 1 : 0); for(r = 0; r < icon_height; r++) { x_to_set = x; for(g = 0; g < grps_in_row; g++) { grp_data = *icon++; for(b = 0; b < 8; b++) { if((grp_data & 0x80) == 0x80) { OLED_DrawPoint(x_to_set, y, 1); } else { OLED_DrawPoint(x_to_set, y, 0); } grp_data <<= 1; x_to_set++; } } y++; } }[/mw_shl_code]






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。