当前位置:首页 > 12864绘图
刚刚学会了用12864绘图,就随便整理一下,供大家参考。之前使用12864都是使用字库来显示东西,感觉太简单,相信很多人也是这么认为。决定学习绘图功能后,我就开始在网上找文档,找资料,遗憾的是上面都是一笔略过,特别是绘图时X,Y坐标的确定,让我一头雾水。。。。。
上面是我从网上一篇文档上截取的一段,前面说在确定坐标值时要连续写入两字节的数据,但是这里它说错一点——12864在绘图时,要先输入垂直坐标即Y轴坐标,再输入水平X坐标,这是12864本身规定的。下面还要明确一点就是12864屏幕显示与坐标地址的对应关系。。。 0x80 上半屏 0x80-0x87 像素:8(8个地址)X16(bit)X32(bit)=128X32 下半屏 0x88-0x8F 像素:128X32 0x8f X
Y
上半屏和下半屏的地址就是这样子,其中水平X以16位即两个字节为一个地址,垂直Y轴以一位(bit)为一个地址。
上面左半边的就是和12864显示屏上半屏对应的,右半边是和12864显示屏下半屏对应的,这样我们在确定XY坐标的时候就清楚多了。看一段程序:
在进行上下半屏地址转换的时候,垂直Y坐标都是从0x80开始加,而水平X坐标在上半屏是从0x80加,在下半屏从0x88开始加。我的图像显示处理程序: //------------在任意位置开始显示图画------------------ void LCD12864_set_tu(uchar X,uchar Y,uchar *tu,uchar wide,uchar high) {
//Y确定开始行,X确定列(0-7),tu是点阵字模数据 uint hang,lie;
write_12864cmd(extra_cmd);//打开扩展指令集 write_12864cmd(tu_off);//绘图显示关 if(wide%8==0) wide=wide/8; else wide=wide/8+1;
for(hang=0;hang if(Y+hang>31) //上下屏地址转换 } { write_12864cmd(0x80+Y+hang-32);//先写Y轴坐标 write_12864cmd(0x88+X);//再写X轴坐标 ,(0x88-0x8f) //这里X只需写(0-7) } else { write_12864cmd(0x80+Y+hang);//先写Y轴坐标 } for(lie=0;lie //根据列宽逐行写入数据 //宽占几字节,就写几字节 write_12864cmd(0x80+X);//再写X轴坐标 ,(0x80-0x87) write_12864dat(tu[hang*wide+lie]);//每行写入wide个字节数据 } } write_12864cmd(tu_on);//绘图显示开 write_12864cmd(com_cmd);//回到基本指令集 上面的XY是自己设置图画显示的起始行和起始列,由于一个水平地址是占两个字节,所以X只能是0到7,所以要根据自己的图画宽度合理设置。 这些明白之后,大家就可以自己试着写程序,显示一些图画 了。下面我再讲一下,液晶的取模软件 这个软件我一直是用在给点阵取模的,后来才知道它也可以取图片字模,供液晶显示。只需要点击“打开图像图标”,就可以选择bmp格式的图片打开。但是怎么获得bmp格式的图片呢,我在网上下了这个软件: 装上这个软件之后,打开界面如下 在旁边设置成单色,像素设成128X64,输出格式设成bmp就行了,然后就可以随便把一张jpg图片保存成bmp格式的了。 等把绘图掌握了,大家也可以继续深究一下,写一些画曲线, 直方图,椭圆等的绘图函数,就这么多了,祝大家学习愉快 ^—^ 临走之际秀一张图片....
共分享92篇相关文档