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

📄 lcd12864.c

📁 MSP430单片机用12864液晶绘制DS18B20温度曲线源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
    if(x0 > x1)
    {
        temp = x1;
        x1 = x0;
        x0 = temp;
    }
    do
    {
       DrawPoint(x0,y,color); 
       x0++;
    }while(x1 >= x0);
}
/******************************************************************************
                            画垂直直线
垂直于x轴的直线
y0起点,y1终点
*******************************************************************************/
void DrawVerticalLine(unsigned char x,unsigned char y0,unsigned char y1,unsigned char color)
{
    unsigned char temp;
    if(y0 > y1)
    {
        temp = y1;
        y1 = y0;
        y0 = temp;
    }
    do
    {
       DrawPoint(x,y0,color); 
       y0++;
    }while(y1 >= y0);   
}
/******************************************************************************
                   画任意两点(x0,y0)和(x1,y1)之间的直线
(x0,y0)起点,(x1,y1)终点
变量说明:dx表示直线X轴的差值变量,dy表示直线y轴的差值变量
dx_sym表示x轴增长方向(-1为减值方向,+1为增值方向)
dy_sym表示y轴增长方向(-1为减值方向,+1为增值方向)
dx_x2表示dx * 2;dy_x2表示dy * 2(用于加快运算速度)
di表示决策变量
*******************************************************************************/

char DrawLine(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char color)
{
    int  dx,dy,dx_sym,dy_sym,dx_x2,dy_x2,di;
    if(x0 == x1)
    {
      DrawVerticalLine(x0,y0,y1,1);  
      return 1;
    }
    if(y0 == y1)
    {
      DrawHorizontalLine(x0,x1,y0,1); 
      return 1;
    }
    dx = x1 - x0;
    dy = y1 - y0;
    if(dx > 0)
    {
        dx_sym = 1;
    }
    else 
    {   if(dx < 0)
        {
            dx_sym = -1;
        }
        else
        {
            DrawVerticalLine(x0,y0,y1,1);
            return 1;
        }
    }
    if(dy > 0)
    {
        dy_sym = 1;
    }
    else
    {   if(dy < 0)
        {
            dy_sym = -1;
        }
        else
        {
            DrawHorizontalLine(x0,x1,y0,1); 
            return 1;
        }
    }
    dx = dx * dx_sym;
    dy = dy * dy_sym;
    dx_x2 = dx * 2;
    dy_x2 = dy * 2;
    if(dx >= dy)
    {
        di = dy_x2 - dx;
        while(x0 != x1)
        {
           DrawPoint(x0,y0,1);  
           x0 = x0 + dx_sym;
           if(di < 0)
           {
                di += dy_x2;
           }
           else
           {
                di += dy_x2 - dx_x2;
                y0 += dy_sym;
           }
        } 
        DrawPoint(x0,y0,1); 
    }
    else
    {
        di = dx_x2 - dy;
        while(y0 != y1)
        {
           DrawPoint(x0,y0,1);  
           y0 = y0 + dy_sym;
           if(di < 0)
           {
                di = di + dx_x2;
           }
           else
           {
                di = di + dx_x2 - dy_x2;
                x0 = x0 + dx_sym;
           }
        } 
        DrawPoint(x0,y0,1); 
    }
   return 1;
}

/******************************************************************************
                            画填充矩形
(x0,y0)是矩形左上角端点,(x1,y1)是矩形右下角端点,
color = 1显示;color = 0不显示
*******************************************************************************/
char DrawFillRectangle(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char color)
{
    unsigned char temp;
    if(x0 > x1)
    {
        temp = x0;
        x0 = x1;
        x1 = temp;
    }
    if(y0 > y1)
    {
        temp = y0;
        y0 = y1;
        y1 = temp;
    }
    if(y0 == y1)
    {
       DrawHorizontalLine(x0,x1,y0,1);
       return 0;
    }
    if(x0 == x1)
    {
        DrawVerticalLine(x0,y0,y1,1);
        return 0;
    }
    while(y0 <= y1)
    {
        DrawHorizontalLine(x0,x1,y0,1);
        y0++;
    }
    return 0;
}

/******************************************************************************
                            画填充正方形
参数说明:
x0:正方形左上角x坐标值
y0:正方形左上角y坐标值
width:正方形的宽
color = 1显示;color = 0不显示
*******************************************************************************/
char DrawFillSquare(unsigned char x0,unsigned char y0,unsigned char width,unsigned char color)
{
    if(width == 0) return 0;
    if((x0 + width) > 127) return 0;
    if((y0 + width) > 63) return 0;
    DrawFillRectangle(x0,y0,x0 + width,y0 + width,1);
    return 0;
}
/******************************************************************************
                            画矩形
(x0,y0)是矩形左上角端点,(x1,y1)是矩形右下角端点,
color = 1显示;color = 0不显示
*******************************************************************************/
char DrawRectangle(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char color)
{
    unsigned char temp;
    if(x0 > x1)
    {
        temp = x0;
        x0 = x1;
        x1 = temp;
    }
    if(y0 > y1)
    {
        temp = y0;
        y0 = y1;
        y1 = temp;
    }
    if(y0 == y1)
    {
       DrawHorizontalLine(x0,x1,y0,1);
       return 0;
    }
    if(x0 == x1)
    {
        DrawVerticalLine(x0,y0,y1,1);
        return 0;
    }
    DrawHorizontalLine(x0,x1,y0,1);
    DrawHorizontalLine(x0,x1,y1,1);
    DrawVerticalLine(x0,y0,y1,1);
    DrawVerticalLine(x1,y0,y1,1);
    return 0;
}
/******************************************************************************
                            画正方形
参数说明:
x0:正方形左上角x坐标值
y0:正方形左上角y坐标值
width:正方形的宽
color = 1显示;color = 0不显示
*******************************************************************************/
char DrawSquare(unsigned char x0,unsigned char y0,unsigned char width,unsigned char color)
{
    if(width == 0) return 0;
    if((x0 + width) > 127) return 0;
    if((y0 + width) > 63) return 0;
    DrawRectangle(x0,y0,x0 + width,y0 + width,1);
    return 0;
}
/******************************************************************************
                            画方圆
参数说明:
(x0,y0)为圆心坐标,r为圆的半径;
color = 1显示;color = 0不显示
*******************************************************************************/
char  DrawCircle(unsigned char x0,unsigned char y0,unsigned char r,unsigned char color)
{
    char a,b;
    int di;
    if(r > 31 || r == 0) return 0;
    a = 0;
    b = r;
    di = 3 - 2 * r;
    while(a <= b)
    {
       DrawPoint(x0 - b,y0 - a,1);
       DrawPoint(x0 + b,y0 - a,1);
       DrawPoint(x0 - a,y0 + b,1);
       
       DrawPoint(x0 - b,y0 - a,1);
       DrawPoint(x0 - a,y0 - b,1);
       DrawPoint(x0 + b,y0 + a,1);
       
       DrawPoint(x0 + a,y0 - b,1);
       DrawPoint(x0 + a,y0 + b,1);
       DrawPoint(x0 - b,y0 + a,1);
       a++;
       if(di < 0)
       {
            di += 4 * a + 6;
       }
        else
        {
            di += 10 + 4 * (a - b);
            b--;
        }
        DrawPoint(x0 + a,y0 + b,1);
    }
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -