Micropython——关于Pico中I2C和SPI的实际应用示例(OLED屏幕显示)

博主之前的文章简要介绍了一下I2C总线和SPI总线的原理,这篇文章来详细介绍一下我们如何通过 I2C总线和SPI与OLED屏幕进行通信(驱动芯片SSD1306),以及我们在现实生活中的简单应用。


博主在这里应用的是一款7针的0.96寸的OLED屏,可进行I2C和SPI双通信,如图一所示。

首先,我们在这里先使用的是I2C通信。该模块,兼容4线SPI接口3线SPI接口和IIC 接口,默认4线SPI接口。所以我们要在硬件上对其进行处理。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWGFfTA==,size_18,color_FFFFFF,t_70,g_se,x_16

 

图一:0.96寸 7针 OLED显示屏,兼容SPI/I2C

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWGFfTA==,size_16,color_FFFFFF,t_70,g_se,x_16

 

图二:OLED屏幕背面图

  • 4 线 SPI:默认方式 4 线 SPI,需要短接 R3、R4 电阻,去掉 R1、R2、R5、R6 电 阻
  • IIC 模式 需要短接 R1、R4、R8,去掉 R2、R3 电阻
  • 3 线 SPI 模式,建议不采用该模式,不常用

I2C总线与OLED屏幕通信

接法:

  • GND: 电源地
  • VCC: 2.2V~5.5V
  • SCL: CLK 时钟 (高电平 2.2V~5.5V)
  • SDA: MOSI 数据 (高电平 2.2V~5.5V)
  • CS:接地
#关于驱动代码,在下一篇文章详细讲解,作者正在整理文章
from machine import SoftI2C,Pin
from ssd1306 import SSD1306_I2C
import utime

vcc = Pin(19, Pin.OUT)
gnd = Pin(18, Pin.OUT)
led = Pin(25, Pin.OUT)
vcc.value(1)
gnd.value(0)
utime.sleep(1)
i2c = SoftI2C(scl = Pin(15),sda = Pin(14))
print("I2C设备号:" + str(i2c.scan()[0]))

oled = SSD1306_I2C(128, 64, i2c) #创建oled对象
while True:
    led.toggle()
    utime.sleep(3)
#屏幕上显示的图像
    oled.text("Raspberry Pi", 0, 0)
    oled.text("Pico", 80, 10)
    oled.text("MicroPython", 0, 20)
    oled.text("OLED(ssd1306)", 0, 40)
    oled.show()
#为什么要弄个LED灯,这样可以看到我们的程序是否在正常运行,可以很直观地看到程序运行

e5f125a3e96143048bac35810bf5d90d.png

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWGFfTA==,size_20,color_FFFFFF,t_70,g_se,x_16

图三:代码展示效果

 


SPI总线与OLED屏幕通信

import machine
from machine import Pin,SoftSPI
from ssd1306 import SSD1306_SPI
 
spi = SoftSPI(baudrate=80000000, polarity=0, phase=0, sck=Pin(15,Pin.OUT), sda=Pin(14,Pin.OUT)) #sck(D0)=6 sda(D1)=7
oled = SSD1306_SPI(128, 64, spi, Pin(4),Pin(5), Pin(10)) #4=dc 5=res 10=cs
 
oled.text("Raspberry Pi", 0, 0)
oled.text("Pico", 80, 10)
oled.text("MicroPython", 0, 20)
oled.text("OLED(ssd1306)", 0, 40)
oled.show()

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xa_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值