小弟我不是这个行业的,但是最近一年对嵌入式非常感兴趣,上学的时候就对数学应用题非常感兴趣,后来对于物理更是痴迷,但是工作后从事的工作却让我感觉到非常的乏味,半导体功率器件行业,每天盯着工艺参数,实际结果和理论计算值相差几个数量级是常有的事,太难熬了。
直到去年的有一天我听说了51单片机后来又接触到了STM32,这种所想即所得的感觉真的是太棒了,也沉浸在嵌入式这种缜密逻辑带来的快感而不能自拔。
接下来正题,昨天网购了一个0.96寸的12864OLED小屏幕,厂家自带例程,所以入手比较简单,但时里面没有斜线的例程,我突发奇想准备自己试一试。一下是我自己写的代码,有不足之处还请大佬优化
//画斜线。
void OLED_Line(u8 x1,u8 y1,u8 x2,u8 y2) //X1Y1是斜线的起始点,X2Y2是斜线的终止点
{
u8 x,y;
for(x=x1;x<=x2;x++)
{
y=y1+((((x-x1)*1000)/(x2-x1))*(y2-y1))/1000;//这是在X确定情况下当前斜线的Y点坐标
//(也是小学数学精华所在)。
OLED_DrawPoint(x,y,1);//这是厂家的画点例程
}
OLED_Refresh_Gram();//更新显示
}
其他的代码我就不写进来了,都是厂家例程网上一大堆。
代码主要部分就是用画点代码加上两点之间的直线运算,这部分得益于我小学时扎实的数学基础。哈哈
下面是效果图
OLED_Line(10,10,50,50);
OLED_Line(0,64,125,3);
OLED_Line(20,20,100,20);
![展示一下斜线的显示](https://img-blog.csdnimg.cn/709974d365f947189bc33acbeb587345.png
也欢迎有共同爱好的嵌入式菜鸡朋友大家一起切磋学习共同进步。