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

📄 lcd640480.c

📁 640480彩色液晶显示程序
💻 C
📖 第 1 页 / 共 3 页
字号:
		{
			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 + -