⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tft6448-256.txt

📁 单片机控制大型彩色液晶程序 TFT6448-256彩色液晶显示 接线说明 1~2 3~4 5 ~ 12 13(RD) 14(WR) VCC GND P1.0~7 P3.7 P3.6 15(CS
💻 TXT
字号:
/*TFT6448-256彩色液晶显示 接线说明
1~2  3~4  5 ~ 12   13(RD) 14(WR)   
VCC  GND  P1.0~7   P3.7    P3.6
15(CS) 16(A0)  17(A1) 18(A0) 19~20
 P3.5   P3.4    P3.3   P3.2  悬空
单片机控制大型彩色液晶程序

设计:河南科技大学 陈仲库
测试通过
技术服务:kuzi00@163.com
qq86828048

 2007年3月2日 
*/


/*  清屏子程序 速度比较快
设计:陈仲库
设计日期:2007年3月2日 
*/

void clear(char color) //清屏子程序
{
	int x_i,y_i;
	int xx=0;
	LCD_CS=0;
	A2=A0=1;//写背景
	A1=0;
	P1=color;
	LCD_WR=0;
	LCD_WR=1;
	A1=A0=0;//写前景
	A2=1;
	P1=color;
	LCD_WR=0;
	LCD_WR=1;
	LCD_CS=1;

	LCD_WriteCommand(0x44);			//0x44 8点写,写完后Y坐标自动加8
	for(x_i=0;x_i<321;x_i++)
	{	
		LCD_PointPos(x_i,0);
		for(y_i=0;y_i<60;y_i++)	
		{
			LCD_WriteData(color);
		}
		LCD_PointPos(640-x_i,0);
		for(y_i=0;y_i<60;y_i++)	
		{
			LCD_WriteData(color);
		}

	 }
	LCD_WriteCommand(0x00);         //复原单点写入

/*汉字显示子程序 一次性写入
设计:陈仲库
设计日期:2007年3月3日 晚
*/

/**********汉字显示模块
参数说明:LCD_hz(汉字显示的坐标,第几个字,点阵大小,字的颜色,背景颜色);//点阵大小 必须为16的倍数
调用实例:
for(i=0 ;i<16;i++) LCD_hz(200+16*i,50,i,16,25,0x03);
LCD_hz(200,200,0,64,25,125);
LCD_hz(300,200,1,64,25,125);
LCD_hz(400,200,2,64,25,125);
*/
#include<hanziku.c>          //字库名称
void LCD_hz(uint h_x,uint h_y,char n,int stl,char fcolor,char bcolor)
{
	uint x_i,y_i;
	int *tab,h_k=0;
	switch(stl)
	{
		case 16 :tab=&tab_16[0];break;
		case 32 :tab=&tab_32[0];break;
		case 48 :tab=&tab_48[0];break;
		case 64 :tab=&tab_64[0];break;
		case 128 :tab=&tab_128[0];break;
	}

	LCD_CS=0;
	A2=A0=1;//A2=1 A1=0 A0=1写背景
	A1=0;
	P1=bcolor;
	LCD_WR=0;
	LCD_WR=1;
	A1=A0=0;//A2=1 A1=0 A0=0写前景
	A2=1;
	P1=fcolor;
	LCD_WR=0;
	LCD_WR=1;
	LCD_CS=1;
	h_k=h_k+n*stl/8*stl;  //确定每种模式的字 有多少字节
	LCD_WriteCommand(0x44);			//0x44 8点写,写完后Y坐标自动加8
	for(x_i=0;x_i<stl;x_i++)         //Y*stl 既有stl列
	{
		LCD_PointPos(h_x+x_i,h_y);
		for(y_i=0;y_i<(stl/8);y_i++)      //stl*x 既有stl行 一次写入8个
		{	
			LCD_WriteData(tab[h_k++]);
		}
	}
LCD_WriteCommand(0x00);			//0x00  释放8点写
}

}



/***头函数包含函数**********************************************
zhengxian(颜色);
juxing(起始坐标,颜色)引用:juxing(20,30,50,100,0xe0);
zuobiao(原点坐标,颜色)引用:zuobiao(50,200,0xe0);
LCD_circle(圆心坐标,半径,颜色)引用:LCD_circle(200,200,100,0xe0);
LCD_line(线的起始点坐标,颜色)引用:LCD_line(20,40,100,200,0xe0);
*****************************************************************/

/*juxing()函数意义*****************************
juxing(起始坐标,颜色)
引用:juxing(20,30,50,100,0xe0);
引用说明:起点坐标(20,30)终点(50,100)颜色0xe0红色
************************************************/
void juxing(uint x_1,uint y_1,uint x_2,uint y_2,char color)
{
	int i,j;
	for (i=x_1;i<x_2; i++)
	{ 
		for (j=y_1;j<y_2;j++)
		{ 
			LCD_PointPos(i,j);
			LCD_WriteData(color);
		}
	}
}

/*zuobiao()函数意义*****************************
zuobiao(原点坐标,颜色)
引用:zuobiao(50,200,0xe0);
引用说明:坐标中心(50,200)颜色0xe0红色
************************************************/
void zuobiao(uint x,uint y,char color)  //参数为坐标原点
{
	uint _xx;
	for(_xx=x-20;_xx<600;_xx++)//建立坐标中心点绝对坐标如(50,200)宽度2pix
	{
		LCD_PointPos(_xx,y);//建立坐标  水平线
		LCD_WriteData(color);  //坐标颜色
		LCD_PointPos(_xx,y+1);//建立坐标
		LCD_WriteData(color);
	}
	for(_xx=x;_xx<320;_xx++)
	{
		LCD_PointPos(x,_xx);//建立坐标  垂直线
		LCD_WriteData(color);
		LCD_PointPos(x+1,_xx);//建立坐标
		LCD_WriteData(color);
	}
}

/*LCD_circle()函数意义*****************************
LCD_circle(圆心坐标,半径,颜色)
引用:LCD_circle(200,200,100,0xe0);
引用说明:
***************************************************/
void LCD_circle(uint c_x,uint c_y,uint r,char color)//参数依次 圆心坐标 半径 颜色
{
	int c_tx,c_ty;
	for(c_tx=c_x-r;c_tx<c_x+r;c_tx++)
	{	
		c_ty=(int)(c_y-sqrt(r*r-(c_tx-c_x)*(c_tx-c_x)));//上半园
		LCD_PointPos(c_tx,c_ty);
		LCD_WriteData(color);
		c_ty=(int)(c_y+sqrt(r*r-(c_tx-c_x)*(c_tx-c_x)));//下半圆
		LCD_PointPos(c_tx,c_ty);
		LCD_WriteData(color);
	}

	for(c_tx=c_x-r/2;c_tx<c_x+r/2;c_tx++)
	{	
		c_ty=(int)(c_y-sqrt(r*r-(c_tx-c_x)*(c_tx-c_x)));//zuo半园
		LCD_PointPos(c_ty,c_tx);
		LCD_WriteData(color);
		c_ty=(int)(c_y+sqrt(r*r-(c_tx-c_x)*(c_tx-c_x)));//右半圆
		LCD_PointPos(c_ty,c_tx);
		LCD_WriteData(color);
	}
}

/*LCD_line()函数意义*****************************
LCD_line(线的起始点坐标,颜色)
引用:LCD_line(20,40,100,200,0xe0);
引用说明:
************************************************/
void LCD_line(uint l_x1,uint l_y1,uint l_x2,uint l_y2,char color)//参数起点(l_x1,l_y1)终点(l_x2,l_y2)
{
	uint l_xi,l_ty;
	float l_k;
	if(l_x1!=l_x2)
	{	
		l_k=(float)(l_y2-l_y1)*(-1.0)/(l_x2-l_x1); //斜率
		for(l_xi=l_x1;l_xi<=l_x2;l_xi++)
		{
			l_ty=(uint)(l_y1-(l_xi-l_x1)*l_k);
			LCD_PointPos(l_xi,l_ty);//建立坐标
			LCD_WriteData(color);
		}
	}
	else
	{
		for(l_xi=l_y1;l_xi<=l_y2;l_xi++)
		{
			LCD_PointPos(l_x1,l_xi);
			LCD_WriteData(color);
		}
	}
}

/*zhengxian()函数意义*****************************
zhengxian(颜色)
引用:zhengxian(0xe0);
引用说明:
************************************************/
void zhengxian(char color)         //sin正弦波
{
	uint _xx;
	zuobiao(50,200,color);//坐标原点为(50,200)
	for(_xx=50;_xx<500;_xx++)
	{
			LCD_PointPos(_xx,(uint)(100*sin((_xx-50)*0.0419)*200));//2*3.14/(200-50)
			LCD_WriteData(color); //波形颜色
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -