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

编程入门 行业动态 更新时间:2024-10-28 11:22:13

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


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

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

 

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

 

图二: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灯,这样可以看到我们的程序是否在正常运行,可以很直观地看到程序运行

图三:代码展示效果

 


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()

 

 

更多推荐

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

本文发布于:2023-06-10 23:54:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1356703.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:示例   实际应用   屏幕   Pico   Micropython

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!