/******************* 畫點函數 **************************
參數:
Xpos:X軸坐標
Ypos:Y軸坐標
Color:像素點顏色
********************************************************/
void LCD_Draw_Point(u16 Xpos, u16 Ypos, u16 Color)
{
//int i;
LCD_ILI9486_CMD(0x2A); //發送0x2A命令,設置X軸坐標
LCD_ILI9486_Parameter((Xpos -4& 0xff00) >> 8); //發送X軸起始坐標的高8位
LCD_ILI9486_Parameter((Xpos -4& 0x00ff)); //發送X軸起始坐標的低8位
LCD_ILI9486_Parameter((Xpos +4& 0xff00) >> 8); //發送X軸結束坐標的高8位
LCD_ILI9486_Parameter((Xpos +4& 0x00ff)); //發送X軸結束坐標的低8位
LCD_ILI9486_CMD(0x2B); //發送0x2B命令,設置Y軸坐標
LCD_ILI9486_Parameter((Ypos -4& 0xff00) >> 8); //發送Y軸起始坐標的高8位
LCD_ILI9486_Parameter((Ypos -4& 0x00ff)); //發送Y軸起始坐標的低8位
LCD_ILI9486_Parameter((Ypos +4& 0xff00) >> 8); //發送Y軸結束坐標的高8位
LCD_ILI9486_Parameter((Ypos +4& 0x00ff)); //發送Y軸結束坐標的低8位
LCD_ILI9486_CMD(0x2C);//發送像素點的顏色信息
// for(i=0;i<25;i++)
LCD_ILI9486_Parameter(Color);//顏色漸變
}
/*************
功能:LCD畫任意角度函數
參數:x1,y1:起始點坐標(x取值范圍:0~319,y:0~479)
x2,y2:終點坐標
color:線顏色(除白色0xFFFF)
**************/
void draw_line(u16 x1,u16 x2,u16 y1,u16 y2,u16 color)
{
//循環需要變量,斜率需要保存
u16 i,k;
//斜率是否等于0
if(x1==x2)//斜率等于0
{
if(y1<y2)
for(i=y1;i<=y2;i++){LCD_Draw_Point(x1, i, color);}
else
for(i=y2;i<=y1;i++){LCD_Draw_Point(x1, i, color);}
}
else//斜率不等0
{
if(y1==y2)//斜率不等于0且不存在
{
if(x1<x2)
for(i=x1;i<=x2;i++){LCD_Draw_Point(i, y1, color);}
else
for(i=x2;i<=x1;i++){LCD_Draw_Point(i, y1, color);}
}
else//斜率不等于0且斜率存在
{
k=(double)(y2-y1)/(x2-x1);
if(x1<x2)
for(i=0;x1+i<=x2;i++){LCD_Draw_Point(x1+i, y1+i*k, color);}
else
for(i=0;x2+i<=x1;i++){LCD_Draw_Point(x2+i, y2+i*k, color);}
}
}
}
/***********
函數功能:清屏函數
參數:x1,y1:起始點坐標,y1,y2:終點坐標,color清屏顏色
返回值:無
***********/
void QP(u16 x1,u16 y1,u16 x2,u16 y2,u16 color)
{
int i;
LCD_ILI9486_CMD(0x2A); //發送0x2A命令,設置X軸坐標
LCD_ILI9486_Parameter((x1& 0xff00) >> 8); //發送X軸起始坐標的高8位
LCD_ILI9486_Parameter((x1& 0x00ff)); //發送X軸起始坐標的低8位
LCD_ILI9486_Parameter((x2& 0xff00) >> 8); //發送X軸結束坐標的高8位
LCD_ILI9486_Parameter((x2& 0x00ff)); //發送X軸結束坐標的低8位
LCD_ILI9486_CMD(0x2B); //發送0x2B命令,設置Y軸坐標
LCD_ILI9486_Parameter((y1& 0xff00) >> 8); //發送Y軸起始坐標的高8位
LCD_ILI9486_Parameter((y1& 0x00ff)); //發送Y軸起始坐標的低8位
LCD_ILI9486_Parameter((y2& 0xff00) >> 8); //發送Y軸結束坐標的高8位
LCD_ILI9486_Parameter((y2& 0x00ff)); //發送Y軸結束坐標的低8位
LCD_ILI9486_CMD(0x2C);//發送像素點的顏色信息
for(i=0;i<(x2-x1)*(y2-y1);i++)
LCD_ILI9486_Parameter(color);
}
/***********
函數功能:畫圓形
參數:x1,y1:圓心,r:半徑
返回值:無
u=2*3.14*(i/360)
***********/
//極坐標系
void YUAN(u16 i, u16 j, u16 r, u16 color)
{
double n,x,y,m;
if(r == 0)
{
LCD_Draw_Point(i,j,color);
}
else
{
for( m=0; m<36000; m=m+1)
{
n=2*3.1415926*(m/36000.0);
x = r*cos(n)+i;
y = r*sin(n)+j;
LCD_Draw_Point( x, y, color);
}
}
}
//直角坐標系
void yuan(u16 a,u16 b,u16 r,u16 color)
{
u16 i,x,y;
//以x(i)為自變量
for(i=a-r;i<=a+r;i++)
{
y=sqrt(r*r-(i-a)*(i-a));
LCD_Draw_Point(i,b+y,color);
LCD_Draw_Point(i,b-y,color);
}
for(i=b-r;i<=b+r;i++)
{
x=sqrt(r*r-(i-b)*(i-b));
LCD_Draw_Point(a+x,i,color);
LCD_Draw_Point(a-x,i,color);
}
}
|