欢迎来到天天文库
浏览记录
ID:25729591
大小:315.50 KB
页数:24页
时间:2018-11-22
《12864显示程序集锦》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、12864液晶更高级的用法玩转12864液晶显示图片,画点,画任意直线一、首先是它的绘图功能。让我们先来显示一整副的图片吧,也就是128x64大小。在使用绘图功能时,先要打开扩充指令集,然后再打开绘图功能。接着就是送数据显示了。这里我们首先要弄明白ST7920的显示坐标关系。其显示坐标如下。从图中可以看出,X方向共有8个字(16个字节)Y方向共有0~31行分为上下两个屏。弄懂了之后我们就可以依照此坐标来显示一整屏的图片了。随便用一个图片的提取转换软件,讲一副126X64大小的图片转换成字节数据,总共字节大小为128*64/8=1024个字节。下面我们
2、来看看这个显示整屏图像的函数voidv_Lcd12864DrawPicture_f(unsignedcharcode*pPicture){ unsignedchari,j,k; for(i=0;i<2;i++12864液晶更高级的用法玩转12864液晶显示图片,画点,画任意直线一、首先是它的绘图功能。让我们先来显示一整副的图片吧,也就是128x64大小。在使用绘图功能时,先要打开扩充指令集,然后再打开绘图功能。接着就是送数据显示了。这里我们首先要弄明白ST7920的显示坐标关系。其显示坐标如下。从图中可以看出,X方向共有8个字(16个字节)Y
3、方向共有0~31行分为上下两个屏。弄懂了之后我们就可以依照此坐标来显示一整屏的图片了。随便用一个图片的提取转换软件,讲一副126X64大小的图片转换成字节数据,总共字节大小为128*64/8=1024个字节。下面我们来看看这个显示整屏图像的函数voidv_Lcd12864DrawPicture_f(unsignedcharcode*pPicture){ unsignedchari,j,k; for(i=0;i<2;i++)//分上下两屏写 { for(j=0;j<32;j++)//行 { v_L
4、cd12864SendCmd_f(0x80+j);//写Y坐标(第几行上写) if(i==0) //写X坐标(判断在那一屏上) { v_Lcd12864SendCmd_f(0x80); } else { v_Lcd12864SendCmd_f(0x88); } for(k=0;k<16;k++) //写一整行数据(
5、一行共16个字节,合八个字符) { v_Lcd12864SendData_f(*pPicture++); } } } v_Lcd12864SendCmd_f(0x30);//基本功能设置}看看效果图片如下:显示一个人的图像下面来看看如何在任意一个位置显示或者是擦除一个点对于12864这种二值显示屏来说,其显示状态无外乎显示和不显示一个点这两种状态。而在任意位置画点,是我们随心所欲的画线,画圆,画矩形的等GUI函数的基础。为了让这个位置有一个参考点,我们有必要定义一
6、个坐标系在这里,我定义的坐标系如下0,0------------------------------------127,0
7、
8、
9、
10、
11、
12、
13、
14、
15、0,63----------------------------------127,630,0代表屏幕的左上角,127,63代表屏幕的右下角。对于屏幕上面任意一个点,如果我们想要点亮它,必须先读出此点的状态,然后再修改该点,最后送出去,即读----修改----写。按照这个步骤,然后再运用C语言中的位操作运算符可以很方便的完成画点的函数。由于画点函数涉及到读ST7920内部RAM的操作,因此,我们必须先要完成这个读数据的函数具体实现过程如下:unsignedcharu8_Lcd12864ReadByte_f(voi
16、d){ unsignedcharbyReturnValue; v_Lcd12864CheckBusy
此文档下载收益归作者所有