MSP430彩屏驱动程序8位.docx

上传人:b****2 文档编号:23473449 上传时间:2023-05-17 格式:DOCX 页数:76 大小:32.38KB
下载 相关 举报
MSP430彩屏驱动程序8位.docx_第1页
第1页 / 共76页
MSP430彩屏驱动程序8位.docx_第2页
第2页 / 共76页
MSP430彩屏驱动程序8位.docx_第3页
第3页 / 共76页
MSP430彩屏驱动程序8位.docx_第4页
第4页 / 共76页
MSP430彩屏驱动程序8位.docx_第5页
第5页 / 共76页
点击查看更多>>
下载资源
资源描述

MSP430彩屏驱动程序8位.docx

《MSP430彩屏驱动程序8位.docx》由会员分享,可在线阅读,更多相关《MSP430彩屏驱动程序8位.docx(76页珍藏版)》请在冰豆网上搜索。

MSP430彩屏驱动程序8位.docx

MSP430彩屏驱动程序8位

GUI.c

#include"gui.h"

#include"ILI9325.h"

#include"delay.h"

#include"16x8.h"

#include"bmp.h"

#include"chinese.h"

/************************************

清屏

入口参数:

b_color是背景颜色。

出口参数:

说明:

使用背景颜色清除TFT模块屏幕的全部显示内容。

*************************************/

voidGUI_clearscreen(uintb_color)

{

uinti,j;

LCD_setwindow(0,0,240,320);

for(i=0;i<320;i++)

{

for(j=0;j<240;j++)

write_data_u16(b_color);

}

}

/*********************************************

画点

入口参数:

(x,y)是点的坐标,color是点的颜色。

出口参数:

说明:

用指定的颜色在指定的坐标位置上画出一个点。

**********************************************/

voidGUI_Point(ucharx,uinty,uintcolor)

{

LCD_setxy(x,y);

write_data_u16(color);

}

/**********************************************************

无符号字符型数以二进制形式显示

入口参数:

(x,y)是显示内容的左上角坐标,color是显示字符的颜色,

b_color是背景颜色。

出口参数:

说明:

无符号字符型数用指定的颜色和背景颜色在指定的坐标位置上

以二进制形式显示出来。

************************************************************/

voidGUI_sprintf_chartobit(ucharx,uinty,uchardat,uintcolor,uintb_color)

{

uchari;

for(i=0;i<8;i++)

{

if((dat&(0x80>>i))==(0x80>>i))

{

GUI_sprintf_nu(x,y,1,color,b_color);

}

else

{

GUI_sprintf_nu(x,y,0,color,b_color);

}

x+=8;

}

}

/**********************************************************

无符号字符型数以十六进制形式显示

入口参数:

(x,y)是显示内容的左上角坐标,dat是欲显示的无符号字符型数,

color是显示字符的颜色,b_color是背景颜色。

出口参数:

说明:

无符号字符型数用指定的颜色和背景颜色在指定的坐标位置上

以十六进制形式显示出来。

************************************************************/

voidGUI_sprintf_chartohex(ucharx,uinty,uchardat,uintcolor,uintb_color)

{

//inti;

GUI_sprintf_nu(x,y,dat>>4,color,b_color);

x+=8;

GUI_sprintf_nu(x,y,dat&0x0f,color,b_color);

}

/**********************************************************

无符号字符型数以十进制形式显示

入口参数:

(x,y)是显示内容的左上角坐标,dat是欲显示的无符号字符型数,

color是显示字符的颜色,b_color是背景颜色。

出口参数:

说明:

无符号字符型数用指定的颜色和背景颜色在指定的坐标位置上

以十进制形式显示出来。

************************************************************/

voidGUI_sprintf_chartodec(ucharx,uinty,uchardat,uintcolor,uintb_color)

{

GUI_sprintf_char(x,y,dat/100+'0',color,b_color);

GUI_sprintf_char(x+8,y,dat/10%10+'0',color,b_color);

GUI_sprintf_char(x+16,y,dat%10+'0',color,b_color);

}

/*********************************************

显示1位16进制数

入口参数:

(x,y)是显示内容的左上角坐标,c:

欲显示的1位16进制数,color:

颜色,b_color:

背景颜色。

出口参数:

说明:

用指定位置上显示1位16进制数。

**********************************************/

voidGUI_sprintf_nu(ucharx,uinty,ucharnu,uintcolor,uintb_color)

{

uchars_x=0,s_y=0,temp=0;

uintj;

if(nu>9)

{nu=nu+7;}

nu=nu+16;

for(s_y=0;s_y<16;s_y++)

{

if(s_y+y<320)

{

j=nu;

j=j*16+s_y;

temp=font16x8[j];

//temp=font16x8[nu*16+s_y];

for(s_x=0;s_x<8;s_x++)

{

if(x+s_x<240)

{

if((temp&(0x80>>(s_x)))==(0x80>>(s_x)))

{

GUI_Point(x+s_x,y+s_y,color);

}

else

{

GUI_Point(x+s_x,y+s_y,b_color);

}

}

}

}

}

}

/**********************************************************

画横线

入口参数:

(x,y)是横线起点坐标,length是横线长度,color是横线颜色。

出口参数:

说明:

用指定的颜色在指定位置上画出指定长度的一条横线。

************************************************************/

voidGUI_HLine(ucharx,uinty,ucharlength,uintcolor)

{

LCD_setwindow(x,y,x+length-1,y);

do

{

write_data_u16(color);//逐点显示,描出水平线

length--;

}while(length);

}

/**********************************************************

画竖线

入口参数:

(x,y)是竖线起点坐标,high竖线高度,color是竖线颜色。

出口参数:

说明:

用指定的颜色在指定位置上画出指定长度的一条竖线。

************************************************************/

voidGUI_RLine(ucharx,uinty,uinthigh,uintcolor)

{

LCD_setwindow(x,y,x,y+high-1);

do

{

write_data_u16(color);//逐点显示,描出垂直线

high--;

}while(high);

}

/********************************************************************

画直线(可以画任意方向直线,包括横线、竖线、斜线)。

入口参数:

(x1,y1)起点,(x2,y2)终点,color颜色。

出口参数:

说明:

用指定的颜色在指定的两点间画出一条直线。

***********************************************************************/

voidGUI_line(uintx1,uinty1,uintx2,uinty2,uintcolor)

{

uintt;

intxerr=0,yerr=0,delta_x,delta_y,distance;

intincx,incy;

uintrow,col;

delta_x=x2-x1;//计算坐标增量

delta_y=y2-y1;

col=x1;

row=y1;

if(delta_x>0)incx=1;//设置单步方向

else

{

if(delta_x==0)incx=0;//垂直线

else{incx=-1;delta_x=-delta_x;}

}

if(delta_y>0)incy=1;

else

{

if(delta_y==0)incy=0;//水平线

else{incy=-1;delta_y=-delta_y;}

}

if(delta_x>delta_y)distance=delta_x;//选取基本增量坐标轴

elsedistance=delta_y;

for(t=0;t<=distance+1;t++)

{//画线输出

GUI_Point(col,row,color);

xerr+=delta_x;

yerr+=delta_y;

if(xerr>distance)

{

xerr-=distance;

col+=incx;

}

if(yerr>distance)

{

yerr-=distance;

row+=incy;

}

}

}

/**********************************************************

显示图片(图标)

入口参数:

(x,y)是开始点的坐标,length是图片长度,high是图片高度。

//pic图片数组的指针

出口参数:

说明:

用指定位置上显示事先定义的图片。

要显示的图片事先定义在bmp.h中的pic[]数组中,

如果想修改图片大小、内容,请修改bmp.h中的pic[]数组,

建议用Image2Lcd软件将你要显示的图象自动转换为数组数据。

************************************************************/

//voidGUI_DisPicture(ucharx,uinty,ucharlength,uinthigh,constuchar*pic)

voidGUI_DisPicture(ucharx,uinty,ucharlength,uinthigh)

{

uinttemp=0,tmp=0,num=0;

LCD_setwindow(x,y,x+length-1,y+high-1);

num=length*high*2;

do

{

//temp=pic[tmp]|(pic[tmp+1]<<8);

temp=pic[tmp+1];

temp=temp<<8;

temp=temp|pic[tmp];

write_data_u16(temp);//逐点显示

tmp+=2;

}while(tmp

}

/*********************************************

显示英文或数字字符

入口参数:

(x,y)是显示内容的左上角坐标,c:

显示的英文字符,

color:

颜色,b_color:

背景颜色。

出口参数:

说明:

用指定位置上显示单个英文字符或数字字符。

**********************************************/

voidGUI_sprintf_char(ucharx,uinty,ucharc,uintcolor,uintb_color)

{

uchars_x,s_y,temp;

uintj;

c-=32;

for(s_y=0;s_y<16;s_y++)

{

if(s_y+y<320)

{

j=c;

j=j*16+s_y;

temp=font16x8[j];

//temp=font16x8[c*16+s_y];

for(s_x=0;s_x<8;s_x++)

{

if(x+s_x<240)

{

if((temp&(0x80>>(s_x)))==(0x80>>(s_x)))

{

GUI_Point(x+s_x,y+s_y,color);

}

else

{

GUI_Point(x+s_x,y+s_y,b_color);

}

}

}

}

}

}

/*********************************************

显示英文字符串

入口参数:

(x,y)是显示内容的左上角坐标,*s:

英文字符串指针,

color:

颜色,b_color:

背景颜色。

出口参数:

说明:

在指定位置上显示英文字符串。

**********************************************/

voidGUI_sprintf_string(ucharx,uinty,char*s,uintcolor,uintb_color)

{

for(;*s!

='\0';s++)

{

GUI_sprintf_char(x,y,*s,color,b_color);

x=x+8;

}

//while(*s)

//{

//GUI_sprintf_char(x,y,*s,color,b_color);

//s++;

//x=x+8;

//}

}

/*********************************************

显示预定义汉字字符串

入口参数:

(x,y)是显示内容的左上角坐标,color:

颜色,b_color:

背景颜色。

出口参数:

说明:

在指定位置上显示预定义的中文字符串。

要显示的中文字符串事先定义在chinese.h中的china_char[]数组中,

如果想修改中文字符串长度、内容,请修改chinese.h中的

china_char[]数组,建议用字模提取软件zimoV2.2将你要显示的

中文字符串自动转换为数组数据。

**********************************************/

voidGUI_sprintf_HZ1(ucharx,uinty,uintcolor,uintb_color)

{

uchars_x=0,s_y=0,temp=0;

ucharn;

uintj,words;

words=sizeof(china_char)/32;

for(n=0;n

{

for(s_x=0;s_x<16;s_x++)

{

if(s_x+x<240)

{

j=n;

j=j*32+s_x;

temp=china_char[j];

//temp=china_char[n*32+s_x];

for(s_y=0;s_y<8;s_y++)

{

if(y+s_y<320)

{

if((temp&(0x80>>(s_y)))==(0x80>>(s_y)))

{

GUI_Point(x+s_x+n*16,y+s_y,color);

}

else

{

GUI_Point(x+s_x+n*16,y+s_y,b_color);

}

}

}

}

}

for(s_x=0;s_x<16;s_x++)

{

if(s_x+x<240)

{

j=n;

j=j*32+s_x+16;

temp=china_char[j];

//temp=china_char[n*32+s_x+16];

for(s_y=0;s_y<8;s_y++)

{

if(y+s_y<320)

{

if((temp&(0x80>>(s_y)))==(0x80>>(s_y)))

{

GUI_Point(x+s_x+n*16,y+s_y+8,color);

}

else

{

GUI_Point(x+s_x+n*16,y+s_y+8,b_color);

}

}

}

}

}

}

}

voidGUI_sprintf_HZ2(ucharx,uinty,uintcolor,uintb_color)

{

uchars_x=0,s_y=0,temp=0;

ucharn;

uintj,words;

words=sizeof(china_char1)/32;

for(n=0;n

{

for(s_x=0;s_x<16;s_x++)

{

if(s_x+x<240)

{

j=n;

j=j*32+s_x;

temp=china_char1[j];

//temp=china_char[n*32+s_x];

for(s_y=0;s_y<8;s_y++)

{

if(y+s_y<320)

{

if((temp&(0x80>>(s_y)))==(0x80>>(s_y)))

{

GUI_Point(x+s_x+n*16,y+s_y,color);

}

else

{

GUI_Point(x+s_x+n*16,y+s_y,b_color);

}

}

}

}

}

for(s_x=0;s_x<16;s_x++)

{

if(s_x+x<240)

{

j=n;

j=j*32+s_x+16;

temp=china_char1[j];

//temp=china_char[n*32+s_x+16];

for(s_y=0;s_y<8;s_y++)

{

if(y+s_y<320)

{

if((temp&(0x80>>(s_y)))==(0x80>>(s_y)))

{

GUI_Point(x+s_x+n*16,y+s_y+8,color);

}

else

{

GUI_Point(x+s_x+n*16,y+s_y+8,b_color);

}

}

}

}

}

}

}

/*********************************************

画实心矩形

入口参数:

(sx,sy)左上角顶点坐标,(ex,ey)右下角顶点坐标,color颜色

出口参数:

说明:

在指定位置上画出实心矩形。

**********************************************/

voidGUI_box(ucharsx,uintsy,ucharex,uintey,uintcolor)

{

uinttemp;

LCD_setwindow(sx,sy,ex,ey);

sx=ex-sx+1;

sy=ey-sy+1;

while(sx--)

{

temp=sy;

while(temp--)

{

write_data_u16(color);

}

}

}

/*********************************************

画空心矩形

入口参数:

(sx,sy)左上角顶点坐标,(ex,ey)右下角顶点坐标,color颜色

出口参数:

说明:

在指定位置上画出空心矩形。

**********************************************/

voidGUI_rectangle(ucharsx,uintsy,ucharex,uintey,uintcolor)

{

GUI_line(sx,sy,ex,sy,color);

GUI_line(sx,sy,sx,ey,color);

GUI_line(ex,sy,ex,ey,color);

GUI_line(sx,ey,ex,ey,color);

}

/*********************************************

以十进制形式显示无符号长整型数

入口参数:

(x,y)是显示内容的右上角坐标;

num是欲显示的无符号长整型数

num的数值范围为:

0~4,294,967,295(十进制),

也就是说利用该函数,我们最多将一个10位十进制数显示在LCD屏上;

color

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1