7,下面的代码是控制液晶全屏显示图片,代码如下:
//程序功能:在12864液晶上显示两幅图片,一个为阴码图片,一个为阳码图片
//*本程序我已经试过,调通,可以使用液晶是有两根线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);
}
好了关于液晶方面就介绍到这里吧,介绍的比较粗糙。如果要更详细的介绍的话,可以参考液晶的手册。不过如果把上面的程序都看懂,弄明白的话,对液晶的一般应用应该是没问题的。
下面就介绍一下液晶显示图片所用到的取模软