📄 main.c
字号:
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 + -