Порылся нашел алгоритмы для расования линий и окружностей
что такое glcd_put_pixel(x, y, color); думаю понятно

(color != 0 - черная точка)
Код
/*************************************************************************
Рисование 8-связной развертки отрезка методом Брэзенхема
Начало в точке (x1,y1), конец в (x2,y2)
*************************************************************************/
void glcd_line(int x1, int y1, int x2, int y2,unsigned char color)
{
int x;
int y;
int dx;
int dy;
int sx;
int sy;
int z;
int e;
int i;
bit ch;
x = x1;
y = y1;
dx = abs(x2-x1);
dy = abs(y2-y1);
sx = sign((double)(x2-x1));
sy = sign((double)(y2-y1));
if( dx==0&&dy==0 )
{
glcd_put_pixel(x1, y1, color);
return;
}
if( dy>dx )
{
z = dx;
dx = dy;
dy = z;
ch = true;
}
else
{
ch = false;
}
e = 2*dy-dx;
i = 1;
do
{
glcd_put_pixel(x, y, color);
while(e>=0)
{
if( ch )
{
x += sx;
}
else
{
y += sy;
}
e -= 2*dx;
}
if( ch )
{
y += sy;
}
else
{
x += sx;
}
e += 2*dy;
++i;
}
while(i<=dx);
glcd_put_pixel(x, y, color);
}
/*************************************************************************
Рисование развертки круга методом Брэзенхема
Центр в точке (xc, yc), радиус r.
*************************************************************************/
void glcd_circle(int xc, int yc, int r,char color)
{
int x;
int y;
int d;
x = 0;
y = r;
d = 3-2*r;
while(y>=x)
{
glcd_put_pixel((x+xc), (y+yc), color);
glcd_put_pixel((x+xc), (-y+yc), color);
glcd_put_pixel((-x+xc), (y+yc), color);
glcd_put_pixel((-x+xc), (-y+yc), color);
glcd_put_pixel((y+xc), (x+yc), color);
glcd_put_pixel((y+xc), (-x+yc), color);
glcd_put_pixel((-y+xc), (x+yc), color);
glcd_put_pixel((-y+xc), (-x+yc), color);
if( d<0 )d += 4*x+6;
else{
d += 4*(x-y)+10;
--y;
}
++x;
}
}