0.96OLED描点画线,画动态图点

前提是已经有了OLED的其它功能代码,此文仅用于介绍描点。

通常代码当中的,OLED位置设置为

void OLED_Set_Pos(unsigned char x, unsigned char y)

{

OLED_WR_Byte(0xb0+y,OLED_CMD);

OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);

OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD);

}

但这里的y,由于为了开发汉字和字符等,通常智能为0~8,汉字为16×16,字符8×16,在x,y方向y通常只能写4行,OLED本质为123(x)×64(y),64/16=4,估只能4行。

我用的OLED的主控制器为SSD1306,此处图片来源https://blog.csdn.net/dengjin20104042056/article/details/108404650?ops_request_misc=&request_id=&biz_id=102&utm_term=OLED%E6%8F%8F%E7%82%B9&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-9-108404650.nonecase&spm=1018.2226.3001.4187

 SSD1306,按页写入,共8页,每页128个可写入,我认为对应128个x坐标

对应为     参照下图指令,写入地址

OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);

OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD);

 而,我们知道y轴有64个单位长度,而对应每个点都在8个页内

ps:此处开始写找到y点的部分

一共有64个单位长度,对应8页,1~8在第一页,(注意0,这里为了方便理解,我就不写0了),9~18在第二页,以此类推

y为50所在的页数为   50/8 

OLED_WR_Byte(0xb0+(y/8),OLED_CMD);             前面的B0是看指令得来的

此时页的位置也已经确定了,但每一页可以写的点,有8行多,128列,

x已经确定,则得确定是那一行。则写入数据。

OLED_WR_Byte(0x01<<((y%8),OLED_DATA); //写入一个点

0x01,为第一行,0x02为第二行,0x04为第三行,

如y=9时,y%8=1,则为第二页的第一行,转化完成。   写入数据0x01

如y=11时,y%8=3,则为第二页的第一行,转化完成。  写入数据0x04  为0x01向左平移3个点(此时这里没考虑0)

故而综合一下

找到x,y页位置

写入具体点。

ps:本人水平较低,如有错误还请多多包涵!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值