树莓派使用java控制ssd1306驱动12832-优化版

今天看了下树莓派使用python点亮oled的整体指导,非常详细,按步骤走可以轻易点亮oled,建议大家跟着玩玩。

其中引用了python的Adafruit_Python_SSD1306库,上github中找到了对应的源代码:

https://github.com/adafruit/Adafruit_Python_SSD1306

找到初始化12832的具体python代码,看下是使用什么指令初始化的:

地址见:

https://github.com/adafruit/Adafruit_Python_SSD1306/blob/master/Adafruit_SSD1306/SSD1306.py

其中,初始化12864和12832代码的不同之处见(左边为12864,右边为12832):

最大的区别指令以下两个命令

1、0xA8:MUX比率设置,实际上我没有理解是啥意思,12864写入0x3F(对应十进制为63),12832写入0x1F(对应十进制为31),难道是表示屏幕高度的意思?12864屏幕高度是64,0到63一共64个像素点。12832屏幕高度是32,0到31一共是32个像素点。我猜的,请知道这个命令是啥意思的给些指导谢谢。

2、0xDA:设置COM脚,我理解这个就是制定硬件的接线方式,12864写入0x12,12832写入0x02。先看self.command(SSD1306_COMSCANDEC)指令(在写入0xDA指令的上一行),SSD1306_COMSCANDEC=0xC8(见下面截图蓝字说明),所以对应的ssd1306的指令说明为:

12832写入0x02,实际上只展示奇数行,强制理解一下吧,说明截图见:

12864写入0x12,row0、row1、row2……row63顺序排列,说明截图见:

最后,参考以上Adafruit_Python_SSD1306的初始化方式,改动github中java的12864驱动(原先只支持12864),也就是新增12832的初始化方式,就可以无缝使用到12832上,初始化代码参考:

private void init12832() throws IOException {
	writeCommand((byte) 0xAE); //关显示

	writeCommand((byte) 0xD5); //设置显示始终 分比率
	writeCommand((byte) 0x80); //建议比率0x80

	writeCommand((byte) 0xA8); //设置MUX比率
	writeCommand((byte) 0x1F); //设置为0x1F,即十进制31

	writeCommand((byte) 0xD3); //设置显示补偿
	writeCommand((byte) 0x00); //no offset
	writeCommand((byte) (0x40 | 0x0)); //line #0

	writeCommand((byte) 0x8D); //是否使用电源
	writeCommand((byte) 0x14); //使用外置电源,固定值,见ssd1306文档

	writeCommand((byte) 0x20); //设置内存地址模式
	writeCommand((byte) 0x00); //水平地址模式

	writeCommand((byte) (0xA0 | 0x1)); //实在没搞懂这个是什么用处的

	writeCommand((byte) 0xC8); //设置列输出扫描方向,Scan from COM[N-1] to COM0
	writeCommand((byte) 0xDA); //设置列引脚硬件配置
	writeCommand((byte) 0x02); //上文已经描述该字段

	writeCommand((byte) 0x81); //设置对比度
	writeCommand((byte) 0x8F);

	writeCommand((byte) 0xD9); //设置预充电周期
	writeCommand((byte) 0xF1);
	writeCommand((byte) 0xDB); //设置VCOMH反压值
	writeCommand((byte) 0x40);
	writeCommand((byte) 0xA4); //启用输出GDDRAM中的数据
	writeCommand((byte) 0xA6); //设置正常显示,A7表示反转显示

	writeCommand((byte) 0xAF);//--turn on oled panel
}

具体代码maven打好包了之后,放入树莓派中,同时12832同树莓派连接好(i2c方式),跑下这个jar包即可点亮12832-oled。

比上一篇将数据映射到奇数行的方式简单了很多。上一篇传送门:树莓派使用java控制ssd1306驱动12832

源代码下载地址:https://download.csdn.net/download/chenqide163/12512004

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值