📄 lcd640480.c
字号:
{
if(dx>=dy) // 1/8 octant
{
e=dy-dx/2;
while(x1<=x2)
{
PutPixel(x1,y1,color);
if(e>0){y1+=1;e-=dx;}
x1+=1;
e+=dy;
}
}
else // 2/8 octant
{
e=dx-dy/2;
while(y1<=y2)
{
PutPixel(x1,y1,color);
if(e>0){x1+=1;e-=dy;}
y1+=1;
e+=dx;
}
}
}
else // dy<0
{
dy=-dy; // dy=abs(dy)
if(dx>=dy) // 8/8 octant
{
e=dy-dx/2;
while(x1<=x2)
{
PutPixel(x1,y1,color);
if(e>0){y1-=1;e-=dx;}
x1+=1;
e+=dy;
}
}
else // 7/8 octant
{
e=dx-dy/2;
while(y1>=y2)
{
PutPixel(x1,y1,color);
if(e>0){x1+=1;e-=dy;}
y1-=1;
e+=dx;
}
}
}
}
else //dx<0
{
dx=-dx; //dx=abs(dx)
if(dy >= 0) // dy>=0
{
if(dx>=dy) // 4/8 octant
{
e=dy-dx/2;
while(x1>=x2)
{
PutPixel(x1,y1,color);
if(e>0){y1+=1;e-=dx;}
x1-=1;
e+=dy;
}
}
else // 3/8 octant
{
e=dx-dy/2;
while(y1<=y2)
{
PutPixel(x1,y1,color);
if(e>0){x1-=1;e-=dy;}
y1+=1;
e+=dx;
}
}
}
else // dy<0
{
dy=-dy; // dy=abs(dy)
if(dx>=dy) // 5/8 octant
{
e=dy-dx/2;
while(x1>=x2)
{
PutPixel(x1,y1,color);
if(e>0){y1-=1;e-=dx;}
x1-=1;
e+=dy;
}
}
else // 6/8 octant
{
e=dx-dy/2;
while(y1>=y2)
{
PutPixel(x1,y1,color);
if(e>0){x1-=1;e-=dy;}
y1-=1;
e+=dx;
}
}
}
}
}
/****************************************************************************
【功能说明】 画框
****************************************************************************/
void Glib_Rectangle(int x1,int y1,int x2,int y2,int color)//画框
{
Glib_Line(x1,y1,x2,y1,color);
Glib_Line(x2,y1,x2,y2,color);
Glib_Line(x1,y2,x2,y2,color);
Glib_Line(x1,y1,x1,y2,color);
}
/****************************************************************************
【功能说明】 填充
****************************************************************************/
void Glib_FilledRectangle(int x1,int y1,int x2,int y2,int color)//填充
{
int i;
for(i=y1;i<=y2;i++)
Glib_Line(x1,i,x2,i,color);
}
/****************************************************************************
【功能说明】 清屏
****************************************************************************/
/*
void Glib_ClearScr(uint c) //清屏
{
uint i,j;
for(j=0;j<LCD_MAX_Y;j++)
for(i=0;i<LCD_MAX_X;i++)
PutPixel(i,j,c);
}
*/
/****************************************************************************
【功能说明】 画圆
****************************************************************************/
void Glib_circle(uint Ox,uint Oy,uint Rx,uint c)
{
uint xx,rr,xt,yt,rs;
yt=Rx;
rr=Rx*Rx;
rs=Rx*71/100; //分开1/8圆弧来画,0.71=根号2
for (xt=0;xt<=rs;xt++)
{
xx=xt*xt;
while ((yt*yt)>(rr-xx))yt--;
PutPixel(Ox+xt,Oy-yt,c); //第一象限
PutPixel(Ox-xt,Oy-yt,c); //第二象限
PutPixel(Ox-xt,Oy+yt,c); //第三象限
PutPixel(Ox+xt,Oy+yt,c); //第四象限
/***************45度镜象变换,画另一半***************/
PutPixel(Ox+yt,Oy-xt,c); //第一象限
PutPixel(Ox-yt,Oy-xt,c); //第二象限
PutPixel(Ox-yt,Oy+xt,c); //第三象限
PutPixel(Ox+yt,Oy+xt,c); //第四象限
}
}
/********************************************************************
函 数 名:write_chinese24(x,y,c,array)
功 能:写汉字24点阵到X,Y
说 明:
入口参数:x,y,array[]
返 回 值:无
***********************************************************************/
void write_chinese24(uint x,uint y,uint c,array )
unsigned char array[];
{
uchar j,k,dd,m;
for(j=0;j<24;j++)
{
for(k=0;k<3;k++)
{
dd=array[j*3+k];
for(m=0;m<8;m++)
{
if((dd>>(7-m))&1==1)
PutPixel( x+k*8+m,y+j,c);//画点
}
}
}
}
/********************************************************************
函 数 名:write_chinese12(x,y,array)
功 能:写汉字12点阵到X,Y
说 明:
入口参数:x,y,array[]
返 回 值:无
***********************************************************************/
void write_chinese12(uint x,uint y,uint c,array )
unsigned char array[];
{
uchar j,k,dd,m;
for(j=0;j<12;j++)
{
for(k=0;k<2;k++)
{
dd=array[j*2+k];
for(m=0;m<8;m++)
{
if((dd>>(7-m))&1==1)
PutPixel( x+k*8+m,y+j,c);//画点
}
}
}
}
//写入字符串子程序
//x,y,*ptr,c,hztype,ulen分别为 (x,y)汉字输入起始地址,*ptr输入的字符串(必须先定义再使用)
//在字模表中增加该型号字模
//c为输入字符串的颜色,hztype为输入字符串的型号大小 (1)16字点阵、(2)32字点阵、(3)48字点阵
//ulen为输入字符串字节数 无法判断是可用strlen(字符串名字)
void putstr(uint x,uint y,char code *ptr,uchar c, uchar hztype,uchar uLen) //写字符串
{
uint c1,c2,uRow,uCol;
uchar i,j,dd,m;
uRow=x;
uCol=y;
i=0;
while(i<uLen)
{
c1 = ptr[i];
c2 = ptr[i+1];
if(c1 <=128) // 8X16 ASCII码
{
for(j=0;j<16;j++)
{
dd=ASC_MSK[(c1-0x20)*16 +j];
for(m=0;m<8;m++)
{
if((dd>>(7-m))&1==1)
PutPixel( uRow+8*i+m,uCol+j,c);//画点
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -