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

📄 main.c

📁 QingDa光电5.6吋彩色液晶屏的C51控制程序。 硬件采用的是寄存器选通的间接控制方式!
💻 C
📖 第 1 页 / 共 2 页
字号:
	WriteRec(BLUE,191,44,192,45);
	WriteRec(BLUE,191,48,192,49);
	WriteRec(BLUE,195,46,196,47);
	WriteRec(BLUE,199,48,200,49);
//对其中的9点做镜像
	WriteRec(WHITE,179,40,180,41);
	WriteRec(WHITE,179,44,180,45);
	WriteRec(WHITE,179,48,180,49);
	WriteRec(WHITE,175,42,176,43);
	WriteRec(WHITE,175,46,176,47);
	WriteRec(WHITE,171,44,172,45);
	WriteRec(WHITE,171,48,172,49);
	WriteRec(WHITE,167,46,168,47);
	WriteRec(WHITE,163,48,164,49);
//文字显示:模式选择
	Write32x32(0,  0,16);//模
	Write32x32(1, 32,16);//式
	Write32x32(2, 64,16);//选
	Write32x32(3, 96,16);//择
//文字显示:模式一
	WriteRec(RED,	104, 82,111, 89);//(104,82)到(111,89)的红色矩形区域
	Write24x24(0,122, 74);//模
	Write24x24(1,146, 74);//式
	Write24x24(4,194, 74);//一
//文字显示:模式二 
	WriteRec(YELLOW,104,111,111,118);//(104,111)到(111,118)的黄色矩形区域
	Write24x24(0,122,103);//模
	Write24x24(1,146,103);//式
	Write24x24(5,194,103);//二
//文字显示:模式三
	WriteRec(GREEN,	104,140,111,147);//(104,140)到(111,147)的绿色矩形区域
	Write24x24(0,122,132);//模
	Write24x24(1,146,132);//式
	Write24x24(6,194,132);//三
//文字显示:模式四
	WriteRec(PURPLE,104,169,111,176);//(104,169)到(111,176)的紫色矩形区域
	Write24x24(0,122,161);//模
	Write24x24(1,146,161);//式
	Write24x24(7,194,161);//四

	while(1);
}
/*-------------------------------------单色字节扩展函数-----------------------------------------------
void WriteByte( unsigned char datain)		//参数:8位单色数据,前景色,背景色
{
	unsigned char i,j;	
	for( i=0,j=0x80; i<8; i++,j=(j>>1))
	{
		WriteDAT(datain&j ? WHITE : BLUE);
	}		
}
/*-----------------------------------------------------------------------------------------------------*/
void SetDisp(void)// set back,front colors;clear display.
{	
	WriteCMD(0x04);//写背景色//	
	WriteDAT(0xdb);//灰色
	WriteCMD(0x02);//写前景色//	
	WriteDAT(BLUE);

	WriteCMD(0x08);//清屏
	delay10us(30000);//delay 300ms;	
	WriteCMD(0x00);//CMD寄存器归零
}	  
/*---------------------------------------140 x 170 LOGO写入程序---------------------------------------
void WriteLogo(unsigned int j,unsigned int i)//i初始行设定,j为初始列设定
{
	unsigned int  x,y,n;
	unsigned char k;

	n=0;
	for( y=i;y<i+170;y++ )//140 x 170  
	{
		x=j;		
		WriteX(x);//列地址寄存器 写入
		WriteY(y);//行地址寄存器 写入
		WriteCMD(0x01);//8点写模式
		for(k=0;k<18;k++)
			WriteDAT(TeliLogo[n++]);
	}	
	WriteCMD(0x00);//CMD归零
}
/*-----------------------------------------------------------------------------------------------------*/
void Write32x32(unsigned int m,unsigned int x,unsigned int y)
{						//起始地址(x,y),写一个32 x 32的汉字
	unsigned int  i,j,n; 
	unsigned char k;
	n=m*128; //计算地址,每个32*32点阵汉字有128个8位数据组成 
	for( i=y;i<y+32;i++ )  
	{
		j=x;
		WriteX(j);//列地址寄存器 写入
		WriteY(i);//行地址寄存器 写入
		WriteCMD(0x01);//8点写模式
		for(k=0;k<4;k++)
			WriteDAT(zk32[n++]);//写一个汉字32行中的一行,共32bits
	}
	WriteCMD(0x00);//CMD归零
} 
/*----------------------------------------------------------------------------------------------------*/
void Write24x24(unsigned int m,unsigned int x,unsigned int y)
{						//起始地址(x,y),写一个24 x 24的汉字
	unsigned int  i,j,n; 
	unsigned char k;
	n=m*72; //计算地址,每个24*24点阵汉字有72个8位数据组成 
	for( i=y;i<y+24;i++ )  
	{
		j=x;
		WriteX(j);//列地址寄存器 写入
		WriteY(i);//行地址寄存器 写入
		WriteCMD(0x01);//8点写模式
		for(k=0;k<3;k++)
			WriteDAT(zk24[n++]);//写一个汉字24行中的一行,共24bits
	}
	WriteCMD(0x00);//CMD归零
} 
/*----------------------------------------------------------------------------------------------------*/
void Write16x16(unsigned int m,unsigned int x,unsigned int y)
{						//起始地址(x,y),写一个16 x 16的汉字
	unsigned int  i,j,n; 
	unsigned char k;
	n=m*32; //计算地址,每个16*16点阵汉字有32个8位数据组成 
	for( i=y;i<y+16;i++ )  
	{
		j=x;
		WriteX(j);//列地址寄存器 写入
		WriteY(i);//行地址寄存器 写入
		WriteCMD(0x01);//8点写模式
		for(k=0;k<2;k++)
			WriteDAT(zk16[n++]);//写一个汉字16行中的一行,共16bits
	}
	WriteCMD(0x00);//CMD归零
} 
/*----------------------------------------------------------------------------------------------------*/
void WriteRec(unsigned char color,unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
{						//画一个左上角为(x1,y1)、右下角为(x2,y2)的矩形单色区域
	unsigned int  x,y;
	unsigned char k;

	for( y=y1;y<y2+1;y++ )
	{
		x=x1;		
		WriteX(x);//列地址寄存器 写入
		WriteY(y);//行地址寄存器 写入
		WriteCMD(0x00);//单点写模式
		for(k=0;k<x2-x1+1;k++)
			WriteDAT(color);
	}	
	WriteCMD(0x00);//CMD归零
} 
/*----------------------------------------------------------------------------------------------------
void WritePic(unsigned int x,unsigned int y)
{
	unsigned char k;
	unsigned int i,j,cnt;

	cnt=0;
	for (i=y;i<40+y;i++)
	{
		j=x;				
		WriteY(i);//行地址寄存器 写入				
		WriteX(j);//列地址寄存器 写入			
		WriteCMD(0x00);//单点写模式
		for (k=0;k<40;k++) 
			WriteDAT(rose[cnt++]);
	}   
}
/*------------------------------------------------------------------------------------------------------
void WriteGrid(void)//m为汉字代码,i初始行设定,j为初始列设定
{
	unsigned int  i, j, k, z, x, y, m;
	i=0;
	WriteCMD(0x00);
	for(j=0;j<8;j++)//显示彩色方格
	{
		for (z=0;z<18;z++)
		{
			for (k=0;k<13;k++)
			{
				x=j*40;
				y=z*13+k;
				WriteX(x);
//				WriteX(x/256);
				WriteY(y);
				for (m=0;m<40;m++)
					WriteDAT(i);
			}
			i++;
		}
	}
}
/*------------------------------------------------------------------------------------------------------*/
void delay10us(int delay)
{
    int delay1;
    for(delay1=0;delay1<delay;delay1++)
    _nop_();  
	_nop_();
	_nop_();//delay n*20*0.5us=n*10us
}
/*------------------------------------------------------------------------------------------------------
 5.6吋256色假彩屏控制器 QD13特点 
1、快速清屏功能;只需发送一条指令,控制板在16.6毫秒内以指定的颜色对整个画面进行清屏,
       清屏过程无须单片机的干预,极大地提高了开机和单一背景色的显示速度。
2、提供8点写模式;使得彩色屏的操作与单色屏一样,
       极大地提高了汉字、英文字母、数字、以及单色位图的显示速度。
3、提供灵活的地址自动加一功能;地址自动加一的方向可以任意设置为X方向或Y方向。
       地址沿X方向自动加一时,遇到行尾将自动跳到下一行的行首。
       地址沿Y方向自动加一时,遇到列尾将自动跳到下一列的列首。
/*------------------------------------------------------------------------------------------------------*/

⌨️ 快捷键说明

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