MSP430彩屏驱动程序8位.docx
- 文档编号:23473449
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:76
- 大小:32.38KB
MSP430彩屏驱动程序8位.docx
《MSP430彩屏驱动程序8位.docx》由会员分享,可在线阅读,更多相关《MSP430彩屏驱动程序8位.docx(76页珍藏版)》请在冰豆网上搜索。
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSP430 彩屏 驱动程序