热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

MSP430驱动TFT的代码

  • 1星
  • 2014-10-02
  • 754.53KB
  • 需要1积分
  • 6次下载
标签: TFT

TFT

详细的代码    函数也有说明   

MSP430
½屏驱动程序(8 ½)
#include "gui.h"
#include "ILI9325.h"
#include "delay.h"
#include "16x8.h"
#include "bmp.h"
#include "chinese.h"
/************************************
清屏
入口参数:
b_color
是背景颜色。
出口参数: 无
说明:½用背景颜色清除
TFT
模块屏幕的全部显示内容。
*************************************/
void GUI_clearscreen(uint b_color)
{
uint i,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
是点的颜色。
出口参数: 无
说明:用指定的颜色在指定的坐标½½上画出一个点。
**********************************************/
void GUI_Point(uchar x, uint y, uint color)
{
LCD_setxy(x,y);
write_data_u16(color);
}
/**********************************************************
无符号字符型数以二进制½式显示
入口参数:(x,y)是显示内容的左上角坐标,color 是显示字符的颜色,
b_color
是背景颜色。
出口参数: 无
说明:无符号字符型数用指定的颜色和背景颜色在指定的坐标½½上
以二进制½式显示出来。
************************************************************/
void GUI_sprintf_chartobit(uchar x, uint y,uchar dat, uint color,uint b_color)
{
uchar i ;
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 是背景颜色。
出口参数: 无
说明:无符号字符型数用指定的颜色和背景颜色在指定的坐标½½上
以十六进制½式显示出来。
************************************************************/
void GUI_sprintf_chartohex(uchar x, uint y,uchar dat, uint color,uint b_color)
{
// int i ;
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 是背景颜色。
出口参数: 无
说明:无符号字符型数用指定的颜色和背景颜色在指定的坐标½½上
以十进制½式显示出来。
************************************************************/
void GUI_sprintf_chartodec(uchar x,uint y,uchar dat,uint color,uint b_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,
是显示内容的左上角坐标, 欲显示的
1
½
16
进制数,
y)
c:
color:颜色,b_color:
背景颜色。
出口参数: 无
说明:用指定½½上显示
1
½
16
进制数。
**********************************************/
void GUI_sprintf_nu(uchar x, uint y,uchar nu, uint color,uint b_color)
{
uchar s_x=0 ,s_y=0, temp=0 ;
uint j;
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 是横线颜色。
出口参数: 无
说明:用指定的颜色在指定½½上画出指定长度的一条横线。
************************************************************/
void GUI_HLine(uchar x, uint y, uchar length, uint color)
{
LCD_setwindow(x,y,x+length-1,y);
do
{
write_data_u16(color);//逐点显示,描出水平线
length--;
}while(length);
}
/**********************************************************
画竖线
入口参数:
(x,y)是竖线起点坐标,high
竖线高度,color 是竖线颜色。
出口参数: 无
说明:用指定的颜色在指定½½上画出指定长度的一条竖线。
************************************************************/
void GUI_RLine(uchar x, uint y, uint high, uint color)
{
LCD_setwindow(x,y,x,y+high-1);
do
{
write_data_u16(color);//
逐点显示,描出垂直线
high--;
}while(high);
}
/********************************************************************
画直线(可以画任意方向直线,包括横线、竖线、斜线)
入口参数:
(x1,y1)起点, (x2,y2)终点, color
颜色。
出口参数: 无
说明:用指定的颜色在指定的两点间画出一条直线。
***********************************************************************/
void GUI_line(uint x1,uint y1,uint x2,uint y2,uint color)
{
uint t;
int xerr=0,yerr=0,delta_x,delta_y,distance;
int incx,incy;
uint row,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;//选取基本增量坐标½
else distance=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;
}
}
//画线输出
展开预览

猜您喜欢

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×