找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8372|回复: 0
打印 上一主题 下一主题
收起左侧

LCD屏幕画点画线画圆清屏函数

[复制链接]
跳转到指定楼层
楼主
/******************* 画点函数 **************************

参数:
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);
}
  
}




IMG_1694.JPG (3.37 MB, 下载次数: 91)

IMG_1694.JPG

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表