在LCD19264 中任意位置画一条直线,或者删除一条直线


// 函数名:write_xy_piont
// 功能: 在指定的行和列 画一个点或者删除一个点
// flag:  0  删除一个点 ,1  画一个点
// CS1 CS2 :00     ,01    ,10  

void write_xy_point(u8 x,u8 y,u8 flag)
{
  u8 oddwei;
u8 wholepage;
u8 rowdata;
rowdata=0;
wholepage=x/8;             //行所在的页数
oddwei=x%8;                //所在页数的第几页
if(y<64)
{
LCD_CS1=0;
LCD_CS2=0;
LCD_write_command(BEGIN_PAGE+wholepage);
LCD_write_command(BEGIN_Y+y);
checkbusy();
rowdata= LCD_read_data();
if(flag==1)
rowdata |= 1<<oddwei;
else
rowdata &=~(1<<oddwei);
write_page_8bit(&rowdata,wholepage,y,1);

}
else if((y>=64)&&(y<128))
{
LCD_CS1=0;
LCD_CS2=1;
LCD_write_command(BEGIN_PAGE+wholepage);
LCD_write_command(BEGIN_Y+y-64);
checkbusy();
rowdata= LCD_read_data();
if(flag==1)
rowdata |= 1<<oddwei;
else
rowdata &=~(1<<oddwei);
write_page_8bit(&rowdata,wholepage,y-64,1);

}
else
{
LCD_CS1=1;
LCD_CS2=0;
LCD_write_command(BEGIN_PAGE+wholepage);
LCD_write_command(BEGIN_Y+y-128);
checkbusy();
rowdata= LCD_read_data();
if(flag==1)
rowdata |= 1<<oddwei;
else
rowdata &=~(1<<oddwei);
write_page_8bit(&rowdata,wholepage,y-128,1);


}
}

//  函数名:  draw_line
//  功能  :  在任意两点间画一条直线或者删除一条直线
//Bresenham算法-直线光栅法算法  flag : 0  删除,1 画一条直线

void draw_line(u8 x0,u8 y0,u8 x1,u8 y1,u8 flag)
{
u16 t;
int nowrow,nowcol;   //   行 列
int incx,incy;    //   基准
int distance_x,distance_y,distance;   
int xerr=0,yerr=0;

nowrow=x0;   
nowcol=y0;
distance_x=(int)x1-(int)x0;
distance_y=(int)y1-(int)y0;
if(distance_x>0)incx=1;   //  判断x1 yu x0 大小,然后给基准x赋值
else if(distance_x==0)incx=0;
else 
{
incx=-1;
distance_x=-distance_x;
}
if(distance_y>0)incy=1;  //判断y1 与 y0 大小,然后给基准x赋值
else if(distance_y==0)incy=0;
else 
{
incy=-1;
distance_y=-distance_y;
}
if(distance_x>distance_y)distance=distance_x;
else distance=distance_y;
for(t=0;t<distance+1;t++)
{
write_xy_point(nowrow,nowcol,flag);
xerr+=distance_x;
yerr+=distance_y;
if(xerr>distance)
{
xerr-=distance;
nowrow+=incx;
}
if(yerr>distance)
{
yerr-=distance;
nowcol+=incy;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值