欢迎来到天天文库
浏览记录
ID:1485663
大小:523.00 KB
页数:8页
时间:2017-11-11
《lcd12864液晶的使用之字库型液晶(二)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、LCD12864液晶的使用之字库型液晶(二)一、显示图片显示图片要用到它的扩充指令,里面有个绘图开关G!当我们要显示图片时,要打开绘图开关G。还是上次的图片:取模、生成数据,显示效果如下图所示:现在来说明一下显示图片的函数:/**********************************************函数:显示图片说明:要先设定垂直地址再设定水平地址(连续写入两个字节的资料,来完成垂直于水平的坐标地址) 0x80---0x87:显示上半部分0x88---0x8F:显示下半部分 只需设定显示的第一个位置,指针会自动加1 ******************************
2、****************/ void display_BMP(uchar *address){uchar i,j;for(i=0;i<32;i++){ write_LCD_command(0x80+i);//先送垂直地址 write_LCD_command(0x80); //再送水平地址 ----显示图片的上半部分 for(j=0;j<16;j++){ write_LCD_data(*address); address++; } }for(i=0;i<32;i++){ write_LCD_command(0x80+i);//先送
3、垂直地址 write_LCD_command(0x88);//显示图片的下半部分 for(j=0;j<16;j++) { write_LCD_data(*address); address++;//指针地址指向下个位置 }}}还有一点要注意的就是显示图片和显示ASCII码、汉字的初始化函数不同,显示图片用的是扩展指令:void init_BMP() {write_LCD_command(0x36);//CL=1--8位。扩充指令(RE=1),绘图打开(G=1)delay(100);//适当延时 write_LCD_command(0x36);delay(3
4、7);write_LCD_command(0x3E); //8位(CL=1),扩充指令(RE=1),绘图打开(G=1) delay(100);write_LCD_command(0x01);//清屏指令 delay(100);}这一点一定要注意,上面的延时函数可以不要,大家结合情况适当添加!显示图片的就这么多了,其他部分的代码和显示汉字的一样!这里就不多写了!一、显示动画上面也说了,不断的刷新一张张静态图片就可以显示动画了,上面的两个写函数:写数据函数和写命令函数,EN从1变0延时应尽量短些,上面的delay(100);延时过长,大家可以做适当的修改!还有一点要说明的是,清屏只是简单的清屏二不
5、是清除显示的内容,我这么说吧,当你要显示很多张图片时,清屏显示后,只要RAM中的图片数据不变,显示还是清屏前显示的图片,要显示下一帧图片时就会变乱,解决办法是,将0送入显示的RAM区(0写入到显示图片函数中),也就是将一张空白图片送入到RAM区显示。这样就OK了,其它的步骤我在上面已经做了介绍!大家可以试一下!二、显示正弦曲线那么怎么才能显示一个正弦波形呢?我们可以这样想,如果我们可以控制128*64液晶上的每个像素的显示与关闭,那么就可以根据曲线的规律来显示一个正弦波形了,那么!怎么才能控制一个像素点呢?这就要用到打点函数了;这个的原理和Proteus中的一样!其GDRAM对应的显示关系如上
6、图所示;首先我们要在液晶上打号坐标,根据xy坐标来确定像素点的具体位置,首先要确定列,也就是Y的大小,然后确定它的行,就是哪个字节的哪个位,也就X的大小了,点亮一个像素点就送1,否则送0,这个大家都应该知道吧,其他不画点的地方就送0就行了,可是按照我们的这个思路写下去,似乎不对,点亮的点数不止我们要求的一个!是什么原因呢?原来是对不点亮的点做填0操作了,造成对原来数据的破坏,解决的办法是先读出一个字节的数据,然后点亮我们要求的那个像素点,再将其余不做操作的像素点的数据送入到原理的位置,经过这样一整合,就可以只改变我们要求的那个像素点,而其余的点不发生变化!在根据正弦函数sin(x)的对应关系就
7、可以显示正弦曲线了!思路就是这个样子的。下面就是那个画点函数的代码:/********************************************************画点函数说明:增加LCD读函数,目的是使不打点的地方数据保持不变:方法是先读出不打点位置的数据,打完点后将读到的数据写入原来的位置,只有这样才会显示打点的曲线。坐标原点:屏的左上角(0,0);到右下端(127,63);
此文档下载收益归作者所有