7,下面的代码是控制液晶全屏显示图片,代码如下://程序功能:在12864液晶上显示两幅图片,一个为阴码图片,一个为阳码图片
本文引用地址:https://www.eepw.com.cn/article/201611/322840.htm//*本程序我已经试过,调通,可以使用液晶是有两根线WREN串行控制的
//*这里是液晶的串行连接控制,可以大大节省单片机的IO口,但是数据处理起来要比并行连接的要慢,所以如果要求显示内容数据较大,
//*对显示的实时性要求较高的话(比如连续显示多幅图画,演示动画等),应该考虑并行连接。如果单片机的IO口不够,或对显示内容的容
//*量和实时性要求不高的话,可以考虑用串行连接的方式
//有可能是因为msp430g2553的处理能力较强,我现在用串行连接方式,显示下面的几幅图画,显示效果很好,看不出有什么数据传输速度慢的问题
//msp430g2553有16K的flash512B的RAM所以可以存放的下几张图片的数据的
#include"msp430g2553.h"
#include"ser_12864.h"
#include"qq.h"//要显示图片的数据信息
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//关狗
BCSCTL1=CALBC1_12MHZ;//设定cpu时钟DCO频率为12MHz
DCOCTL=CALDCO_12MHZ;
P2DIR|=BIT5+BIT4;//液晶的两条线
init_lcd();//初始化液晶
Clear_GDRAM();//清除GDRAM中的随机数据
//Draw_PM(qq1);
for(;;)
{
//wr_lcd(comm,0x34);//打开扩展功能模式,绘图显示关闭
////反白命令
//wr_lcd(comm,0x04);//同时反白1、3行
//wr_lcd(comm,0x05);//同时反白2、4行
//wr_lcd(comm,0x36);
//
//delay_ms(1000);
//
//wr_lcd(comm,0x34);
//wr_lcd(comm,0x04);//再次反白1、3行,相当于关闭1、3行反白
//wr_lcd(comm,0x05);//再次反白2、4行,相当于关闭2、4行反白
//wr_lcd(comm,0x36);
//delay_ms(1000);
Draw_PM(qq1);//显示图画显示阴码格式的图形
delay_ms(1000);//延迟观察液晶屏幕显示
Draw_PM(qq2);//显示阳码格式的图形
delay_ms(1000);
Draw_PM(zhu);
delay_ms(1000);//显示可爱猪的图片
Draw_PM(zifu);//显示汉字的图片
delay_ms(1000);
Draw_PM(monkey1);//显示猴子的阴码图片
delay_ms(1000);
Draw_PM(monkey2);//显示猴子的阳码图片
delay_ms(1000);
Draw_PM(QQ);//显示Q哥Q妹形象
delay_ms(1000);
Draw_PM(zhangbin);//显示我自己制作的字符图片
delay_ms(1000);
Draw_PM(dianxin0903xiaolian1);//显示我自己制作的字符图片阴码图片
delay_ms(1000);
Draw_PM(dianxin0903xiaolian2);//显示我自己制作的字符图片阳码图片
delay_ms(1000);
}
}
//本程序的功能实现了,是阴码格式的图形和阳码格式的图形交替循环显示
//我本想是用反白的方法实现这种效果的,但是没有成功,估计是因为反白不能同时整屏反白的缘故吧
8,好了,上面的代码是msp430g2553串行控制液晶的,是可以直接用的。把上面的代码看明白,液晶的基本功能应该就掌握了,下面就在贴出一些常用的显示函数,这些函数都是我经常用的,很不错:
////
{
ucharpos=0;//初始化
ucharcnt=0;//传递过来的是指针,cnt为偏移量,然后一个字符一个字符的写入。
switch(y0)
{
case0:pos=0x80+x;break;
case1:pos=0x90+x;break;
case2:pos=0x88+x;break;
case3:pos=0x98+x;break;
default:break;
}
wr_lcd(comm,pos);//写地址
while(*(p+cnt)!= )
{
wr_lcd(dat,*(p+cnt));//写数据
cnt++;
};
}
//*******************************************************************************************
voidwr_int(ucharx,uchary0,uintNUM)//**********************************************整型数据显示
{
uchara_SHOW[5];
a_SHOW[0]=(NUM/1000)+0;//qian//只能显示数据的最后4位
a_SHOW[1]=(NUM/100)+0;//bai
a_SHOW[2]=(NUM/10)+0;//shi
a_SHOW[3]=NUM+0;//ge
a_SHOW[4]= ;//加上字符串的计数标志
wr_string(x,y0,a_SHOW);
}
//*******************************************************************************************
voidwr_float(ucharx,uchary0,floatNUM)//********************************8浮点型数据显示
{
uchara_SHOW[7];
longintt;
t=NUM*1000;//先乘以1000,再按整数方式显示,形式只能为xx.xxx,所以精度只能到小数点后三位
a_SHOW[0]=(t/10000)+0;//shi
a_SHOW[1]=(t/1000)+0;//ge
a_SHOW[2]=.;//
a_SHOW[3]=(t/100)+0;//shifen
a_SHOW[4]=(t/10)+0;//baifen
a_SHOW[5]=t+0;//qianfen
a_SHOW[6]= ;
wr_string(x,y0,a_SHOW);
}
好了关于液晶方面就介绍到这里吧,介绍的比较粗糙。如果要更详细的介绍的话,可以参考液晶的手册。不过如果把上面的程序都看懂,弄明白的话,对液晶的一般应用应该是没问题的。
下面就介绍一下液晶显示图片所用到的取模软件的应用。
二,液晶取模软件的应用
要使用液晶显示图片,或字符型的图片,那么这幅图片的数据信息肯定是要的,而且这些数据往往都很庞大。那么如何来产生这些庞大的数据,靠我们手工编写,那个太不现实了。着就需要取模软件的帮助了。我用到的这款软件是PCtoLCD2002,作者是陈新汀,感谢作者提供了这么好用的一款软件。
这款软件功能强大,使用方便,下面我就我经常用到的一些功能介绍一下吧,更详细的介绍可以参考其他的资料。
下面的设置对应的为12864液晶的ST7920控制器,
一),用PCtoLCD2002液晶取模软件对图片取模,注意事项及常用设置如下:
1,PCtoLCD2002取模只支持.bmp格式的图像
2,用12864显示图片时,取模用的图片像素大小不要超过128*64,如果超过会出现一些问题。可以比它小
3,还可以调整像素位置,上下左右移动要显示图片的位置,也可以上下左右翻转,镜像等。
4,也可以针对每一个像素点进行编辑操作,对某一个像素点单击左键,显示。单击右键,取消显示,如果一直按住左键,就可以进行画图等操作了。
5,也可以只正对有像素点的图片范围进行取模,其他边上的空白不取模,这有可以减少数据量,节省存储容量。
6,也可以在PCtoLCD2002新建一个图片,然后设置像素的大小,然后就可以直接在上面进行绘图了,同样也是点击左键显示,点击右键取消显示。就好像是直接针对液晶屏进行绘图一样,然后可以保存。
7,如果在模式中选择为字符模式,就可以直接在该软件中输入要显示的字符,直接制作成字符图片。还可以更改字体,大小等字符属性。
8,12864液晶显示默认是逐行的,所以在取模时,一般选择逐行取模
9,因为在单片机向液晶传输数据时是高位在前,所以在取模时设置为顺向(高位在前)
10,输出数制选为16进制数
11,自定义格式选为C51格式,因为我们是用C语言进行编程的。如果是用汇编编程,选择A51格式
12,因为生成的数据最后要放在一个数组中,所以要去掉行前缀大括号,行后缀仅保留一个逗号。否则的话生成的数据的每一行的前面和后面都会有一对大括号。
二),如果想自己制作文字的图片,然后取模让液晶显示,除了直接在PCtoLCD2002中的字符模式中进行制作外,还可以使用windows自带的画图附件,使用设置方法如下:
1,在图像的属性选项中设置图像的分辨率:宽度为128,高度为64,其他的为默认值即可。点击确定。
2,然后可以向设置好的图纸上添加字符(点击左边工具栏上的A,添加字符),写入汉字,可以调节字符的大小字体等属性。好了之后,保存
3,因为PCtoLCD2002取模只支持.bmp格式的图像,所以保存时要保存成.bmp格式。(一般保存成24位图.bmp格式)
4,然后就可以按照对图片取模的方法,对刚刚制作保存的字符图片进行取模了。
按照上面的方法,应该就可以自己制作图片和字符图片的数据了。
好了,上面,对12864进行了比较全面但是相当粗糙的介绍,更全面详细的用法请参考数据手册。在使用液晶或者其他任何一款单片机或芯片时,最详细,最权威的资料永远都是它对应的数据手册。
一切其他的资料,无论多么的详细,丰富都是以手册为基础的,所以大家在使用是一定不用依赖这种资料,只能作为一种参考。遇到问题,自己多看手册,多思考,才能把知识转化为自己的。
使用12864实时显示曲线图,演示动画我还没有做,做好了再补上来。其实把前面的掌握了,应该不难的。
评论