0 st7920 控制的 12864 画线,画圆,作图成功(上图),拿来分享(注释很详细)
在这里首先要感谢那些好心人,没有他们的帮忙我是写不出来,真的很谢谢你们。我把最近所
调试成功的,都一一给大家说明,并上图和相关资料,希望对大家用。
1、打点部分
该部分已在该论坛发帖,这里不就重复了
(打点是所有绘图的基础)
2、画线部分
先看程序
/********************************************************
* 名称:GUI_Line()
采用布兰森汉姆(Bresenham)算法画线
* 功能:任意两点间的直线。根据硬件特点,实现加速。
* 入口参数:x0 直线起点所在行的位置
* y0 直线起点所在列的位置
* x1 直线终点所在行的位置
‘ y1 直线终点所在列的位置
* 出口参数: 无
* 说明:操作失败原因是指定地址超出缓冲区范围。
*********************************************************/
void GUI_Line8(uchar x0,uchar y0,uchar x1,uchar y1)
{
int temp;
int dx,dy; //定义起点到终点的横、纵坐标增加值
int s1,s2,status,i;
int Dx,Dy,sub;
dx=x1-x0;
if(dx>=0) //X 的方向是增加的
s1=1;
else //X 的方向是降低的
s1=-1;
dy=y1-y0; //判断 Y 的方向是增加还是降到的
if(dy>=0)
s2=1;
else
s2=-1;
Dx=fabs(x1-x0); //计算横、纵标志增加值的绝对值
Dy=fabs(y1-y0);
if(Dy>Dx) //
{ //以 45 度角为分界线,靠进 Y 轴是 status=1,靠近 X 轴是 status=0
temp=Dx;
Dx=Dy;