文档章节

用官方的SSD1306.py 驱动 OLED

shaoziyang
 shaoziyang
发布于 2017/04/23 17:01
字数 560
阅读 1.6W
收藏 6

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

这几天看了一下micropython的I2C OLED驱动(SPI的类似),发现有几个版本。一个是官方的版本,还有早期网上流传的版本。

网上的版本使用了pyb.I2C驱动,是将Arduino的OLED驱动移植过来,只能用在STM32上;而官方的驱动使用了machine.I2C,这样有更好的兼容性,适合不同的硬件平台,还可以用软件I2C。

因为没有看到有人介绍官方的SSD1306驱动,所以我就简单的介绍一下I2C接口的OLED使用方法,SPI的也是类似的。下面以比较常见的0.96寸的128x64 I2C OLED为例:

  • 从github下载micropython的源码(或者只下载其中的ssd1306.py文件),然后将ssd1306.py复制到PYB Nano或其它micropython板
  • 连接I2C和电源到I2C的OLED上,如果没有硬件I2C,使用任意GPIO也可以。
  • 在终端里输入下面代码
from machine import I2C
i2c=machine.I2C(-1, sda=machine.Pin("PB9"), scl=machine.Pin("PB8"), freq=400000)  

from ssd1306 import SSD1306_I2C
oled = SSD1306_I2C(128, 64, i2c)
oled.text("Hello PYB Nano", 0, 0)
oled.show()


如果可以看到Hello这一段文字,就说明驱动成功了。

 

SSD1306.py中带有的函数不多,主要函数有:

  • text(string, x, y),在(x, y)处显示字符串,注意text()函数内置的字体是8x8的,暂时不能替换
  • poweroff(),关闭OLED显示
  • poweron(),空函数,无任何效果。可以用 write_cmd(0xAF) 代替
  • fill(n),n=0,清空屏幕,n大于0,填充屏幕
  • contrast(),调整亮度。0最暗,255最亮
  • invert(),奇数时反相显示,偶数时正常显示
  • pixel(x, y, c),在(x, y)处画点
  • show(),更新显示内容。前面大部分函数只是写入数据到缓冲区,并不会直接显示到屏幕,需要调用show()后才能显示出来。


另外还有部分功能可以用下面方法实现:

  • framebuf.line(x1,y1,x2,y2,c),画直线
  • framebuf.hline(x,y,w,c),画水平直线
  • framebuf.vline(x,y,w,c),画垂直直线
  • framebuf.fill_rect(x,y,w,h,c),画填充矩形
  • framebuf.rect(x,y,w,h,c),画空心矩形

大家也可以自己封装一下,甚至加入画园、字体选择、显示logo等功能。

© 著作权归作者所有

下一篇: Newbit的引脚图
shaoziyang
粉丝 16
博文 77
码字总数 26345
作品 0
武汉
程序员
私信 提问
加载中

评论(0)

MicroPython实例之TPYBoard开发板控制OLED显示中文

0x00 前言 之前看到一篇文章是关于TPYBoard v102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文。最近利用空余时间搞定了这个实验,特此将实验过程及源码分享出来,方便以后使...

bodasisiter
2018/09/20
2K
1
[MicroPython]STM32F407开发板驱动OLED液晶屏

1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法。 2.进一步学习编制数据输出程序的设计方法。 3.学习 F407 Micropython开发板控制OLED显示字符。 2.所需元器件 F407 Micropython开发板...

bodasisiter
2018/08/20
444
0
[MicroPython]TPYBoard开发板DIY小型家庭气象站

对于喜欢登山的人来说,都会非常关心自己所处的高度跟温度,海拔高度的测量方法,海拔测量一般常用的有两种方式,一是通过GPS全球定位系统,二是通过测出大气压,根据气压值算出海拔高度。 ...

osc_tk7vvz7n
2018/07/16
8
0
教程Micropython自制小型家庭气象站(萝卜教育)

对于喜欢登山的人来说,都会非常关心自己所处的高度跟温度,海拔高度的测量方法,海拔测量一般常用的有两种方式,一是通过GPS全球定位系统,二是通过测出大气压,根据气压值算出海拔高度。萝...

bodasisiter
2018/12/20
179
0
linux3.2 spi框架分析

linux3.2 spi框架分析 刘术河 2017.04.12 写oled的驱动时,核心板用的是am335x,spi用的是ti自带的spi驱动框架,为了弄清楚spi底层工作流程,特意分析了spi驱动框架 g:嵌入式linux-3.2.0arch...

osc_1tlbypwh
2018/09/08
6
0

没有更多内容

加载失败,请刷新页面

加载更多

IP地址正则表达式

提取一段内容中的所有IP地址 ((2(5[0-5]|[0-4]d))|[0-1]?\d{1,2})(.((2(5[0-5]|[0-4]d))|[0-1]?\d{1,2})){3} 判断字符串是否是IP地址 ^((2(5[0-5]|[0-4]d))|[0-1]?\d{1,2})(.((2(5[0-5]|[0-4......

哆啦D梦幻
3分钟前
9
0
CDH在yarn上运行程序乱码

参考文章:CDH在yarn上运行程序乱码 安装完成CDH后,在yarn上不管是使用hive运行mapreduce还是spark,中文全都会乱码。 1. linux的环境变量设置字符集 vi /etc/profile export LANG=zh_CN.UT...

osc_40usjisk
4分钟前
0
0
公积金无租房备案提取如何办理?(以成都为例)

  无租房备案是什么?   首先你要知道租房备案是什么?简单来说就是房东想要对外租房,需要到房管局办理相关手续,   如果你要以租房的名义提取公积金需要提供与房东签订的合同等材料后...

osc_3aqbiyys
4分钟前
0
0
公积金状态封存怎么解封?

  前言   公积金的缴存状态一般有2种,正常和封存,如下截图         公积金状态为封存是什么意思?   指职工因为各种原因导致住房公积金缴存中断,其住房公积金账户无法转移且又...

osc_51airx3z
5分钟前
3
0
你应该知道的公积金基础知识科普

  公积金是什么?   简单来说公积金全称为住房公积金,是一种国家法律规定的住房保障制度,也是普通工薪族的一种福利   公积金的用途?   可用于贷款买房,租房,还房贷,房屋大修等...

osc_u9wft6hh
7分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部