找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3595|回复: 7
收起左侧

关于SSD1306驱动的OLED低四位地址指定的困惑

[复制链接]
ID:686782 发表于 2020-5-3 15:00 | 显示全部楼层 |阅读模式
新手最近刚刚开始学OLED。照着资料给的源码看的时候在OLED屏幕定位的函数时遇上了理解问题。如下所示函数,OLED_WR_byte是向SSD1306写入一个字节的指令函数

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);
}   


看了一下SSD1306的数据手册,前两句不难理解,y指定页数,x高四位或上0x10表示指定SSD1306起始列的高四位。
那么请问在取这个低四位的时候,为何要或上0x01呢?
我看SSD1306的手册上也只对指令高四位要求是0000,并无其他要求。是为了显示上的方便吗?
还请大佬不吝解答。
回复

使用道具 举报

ID:686782 发表于 2020-5-6 11:43 | 显示全部楼层
顶一顶,求大佬解惑
回复

使用道具 举报

ID:282850 发表于 2020-5-6 15:54 | 显示全部楼层
jjq.png
手上的程序与你这个完全一样,4线SPI,由于搞了两个都用IIC,没关注这问题。你看的很仔细。
按上图,确实不可理解第3句|1,如按图4行21命令,或1可有道理,即页址模式,但第2行又有问题。
分析可能的原因:
1、原作者写错了。
2、估计SEG接线中0号是空的,列址从1~128,不是0~127.

解决方法:实测写0、1、2列0xff看看
把|1删除看看。
上述两个试验完就知道原来是否正确。
jjq.png
回复

使用道具 举报

ID:282850 发表于 2020-5-6 16:06 | 显示全部楼层
        for(m=0;m<8;m++)
        {
                Write_IIC_Command(0xb0+m);                //page0-page1
                Write_IIC_Command(0x00);                //low column start address
                Write_IIC_Command(0x10);                //high column start address
                for(n=0;n<132;n++)
                        {
                                Write_IIC_Data(fill_Data);
                        }
IIC的程序中,确实是高4位0x10,低4位0x00就OK的。还是测试一下不要|1看看。
回复

使用道具 举报

ID:686782 发表于 2020-5-7 09:29 | 显示全部楼层
f556 发表于 2020-5-6 15:54
手上的程序与你这个完全一样,4线SPI,由于搞了两个都用IIC,没关注这问题。你看的很仔细。
按上图,确 ...

多谢指教!
这就去试试
回复

使用道具 举报

ID:686782 发表于 2020-5-7 12:42 | 显示全部楼层
写了两版不同的定位函数(主体函数去掉0x01,另一个保留0x01作对比),分别让其在0xb0和0xb1页点亮第一列。
效果如图所示,和代码理解的差不多,或上0x01的版本保留了第一列不被点亮,而去掉0x01的版本也能正常工作,而且就这样看或上0x01的版本列有效范围应该只有1-127,不知是否有其它用意。
现在基本觉得是作者参考了手册图的指令21然后误写了。实际运行应该是只需要保证高四位为0,就能正常定位列地址低四位吧。
个人理解,若有错误还请指出
R%Z07AW)}4S$O53DOJ(H3`Y.png
回复

使用道具 举报

ID:282850 发表于 2020-5-7 16:13 | 显示全部楼层
OHHO 发表于 2020-5-7 12:42
写了两版不同的定位函数(主体函数去掉0x01,另一个保留0x01作对比),分别让其在0xb0和0xb1页点亮第一列。
...

从你试验看出,是原来写错了。要不就是不让写0列,也有一种可能,0列被外壳窗沿挡住不用。
丢弃|1,放心用吧。
回复

使用道具 举报

ID:227832 发表于 2020-6-12 22:29 | 显示全部楼层
我也遇到这个问题,丢弃|1后正常,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表