显示学习1(基于树莓派Pico) -- 基础

先上图为敬。

驱动的是0.96寸的OLED,SSD1315。使用的I2C接口驱动。

有一说一树莓派Pico用来学习底层真的太好了,没有之一。首先是价格便宜,10块钱包邮还要什么自行车。然后底层封装很完备,接近闭源。最后是用的python,开发效率最高。

使用Thonny进行开发。真的很简单,CSDN上就有示例。

首先是找SSD1315的驱动文件,网上看了下说SD1306的也是通用。

看了一下驱动,主要是以下几个部分:

1 设置寄存器和各个命令码。这个应该是要查阅硬件手册。

可以参考这位大佬的:oled--SSD1315驱动-CSDN博客

2 OLED初始化。在I2C中,主要是向地址0x3C写入命令,0x80应该是命令字,后面接命令。

for cmd in (SET_DISP | 0x00,  # off# address settingSET_MEM_ADDR,0x00,  # horizontal# resolution and layoutSET_DISP_START_LINE | 0x00,SET_SEG_REMAP | 0x01,  # column addr 127 mapped to SEG0SET_MUX_RATIO,self.height - 1,SET_COM_OUT_DIR | 0x08,  # scan from COM[N] to COM0SET_DISP_OFFSET,0x00,SET_COM_PIN_CFG,0x02 if self.width > 2 * self.height else 0x12,# timing and driving schemeSET_DISP_CLK_DIV,0x80,SET_PRECHARGE,0x22 if self.external_vcc else 0xF1,SET_VCOM_DESEL,0x30,  # 0.83*Vcc# displaySET_CONTRAST,0xFF,  # maximumSET_ENTIRE_ON,  # output follows RAM contentsSET_NORM_INV,  # not inverted# charge pumpSET_CHARGE_PUMP,0x10 if self.external_vcc else 0x14,SET_DISP | 0x01,):  # onself.write_cmd(cmd)

驱动中同时有I2C和SPI写命令的差异,可以看看。

I2C:

    def write_cmd(self, cmd):self.temp[0] = 0x80  # Co=1, D/C#=0self.temp[1] = cmdself.i2c.writeto(self.addr, self.temp)

SPI:

    def write_cmd(self, cmd):self.spi.init(baudrate=self.rate, polarity=0, phase=0)self.cs(1)self.dc(0)self.cs(0)self.spi.write(bytearray([cmd]))self.cs(1)

3 其它接口

比如poweron,poweroff,show。对于show的理解是framebuffer中进行操作,操作完成之后调用show显示。

    def show(self):x0 = 0x1 = self.width - 1if self.width == 64:# displays with width of 64 pixels are shifted by 32x0 += 32x1 += 32self.write_cmd(SET_COL_ADDR)self.write_cmd(x0)self.write_cmd(x1)self.write_cmd(SET_PAGE_ADDR)self.write_cmd(0)self.write_cmd(self.pages - 1)self.write_data(self.buffer)

暂时先写到这吧,关于framebuffer,我单独写一篇。还有各个接口的区别,比如I2C,SPI,PCIE。

显示学习2 -- Framebuffer(TODO)-CSDN博客

树莓派Pico的官方例子:

GitHub - raspberrypi/pico-micropython-examples: Examples to accompany the "Raspberry Pi Pico Python SDK" book.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/596790.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java笔试总结

. 操作系统中关于竞争和死锁的关系下面描述正确的是? A 竞争一定会导致死锁 B 死锁一定由竞争引起 C 竞争可能引起死锁 D 预防死锁可以防止竞争 答案: C 进程的控制信息和描述信息存放在()。 A JCB B PCB C AFT D SFT 答案: B 当系统发生抖动(thrash…

python上传以及下载AWS S3上的文件

​ 免死金牌 由于本人平常是做NodeJS开发的,本次做的任务含有 Scheduled Job ,所以选择了使用Python作为这次开发的语言,毕竟跑脚本还是这玩意适合。 其中有一个任务是要从S3上拉下一些文件来处理,处理完成后再push 上去的需求…

数据结构——堆的应用

堆的应用 1.堆排序2. topK问题 堆结构主要有两个应用:1、堆排序 2、topK问题 1.堆排序 现实中,排序是非常常见的,比如排序班级同学的各科分数,购物时,商品会按销量,价格,好评数等进行排序。相…

【游戏分析】非游戏领空追字符串来源

通过NPC名称找NPC数组 扫描 NPC名字 ASIC型 发现全部都有后缀 那么采用 字节集的方式去扫描 也是扫不到 说明:不是ASIC型字符串 扫描 NPC名字 Unicode型 没有结果 那么转换成字节集去扫描 终于发现结果了 把结果挨个修改字符串 发现 其中两个是可以用的 22和23 …

GIt 删除某个特定commit

目的 多次commit,想删掉中间的一个/一些commit 操作方法 一句话说明:利用rebase命令的d表示移除commit的功能,来移除特定的commit # 压缩这3次commit,head~3表示从最近1次commit开始,前3个commit git rebase -i head~3rebase…

海外仓的出入库流程有什么痛点?位像素海外仓系统怎么提高出入库效率?

随着跨境电商的蓬勃发展,海外仓是其中不可或缺的一个关键环节。而货物的出库与入库则是海外仓管理中的一个核心业务流程,它的运作效率直接影响到整个跨境物流的效率和客户体验。今天,让我们具体来看一看关于海外仓出入库的流程,其…

职场新变革:AI赋能ICT劳动力联盟的行动与展望

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

This app has no Android key hashes configured. . Configure your app key

Unity 接入 Facebook SDK 的过程中遇到这个问题,查了很多帖子,不太直观,记录下来方便需要的同学参考 报上面错误的原因是在https://developers.facebook.com/apps/ 设置里没有填入有效的密钥 怎么填入这个密钥呢,其实很简单&…

【单片机】心率传感器,串口发送,MAX30102心率传感器模块

数值还是稳定的,但太贵了,stm32单片机的话,直接用这篇博客(https://qq742971636.blog.csdn.net/article/details/137359381)的代码,一样稳定。 解析这个模块的数据 char rev_max30102_bufferdata[30]; cha…

I2C驱动实验:测试I2C驱动是否与设备匹配

一. 简介 前面一篇文章在设备树中创建 ap3216c设备节点信息。 第二篇文章编写了简单的 I2C设备驱动框架,包括 构造 i2c_driver结构体,i2c_driver的注册与注销等。文章如下: I2C驱动实验:向设备树添加 I2C设备的设备节点信息-C…

蓝桥杯-DS18B20温度传感器

一.管脚&芯片&寄存器 1.芯片 2.了解封装以及引脚的用法 3.相关寄存器 报警功能 二,如何使能DS18B20芯片 1.初始化芯片&比赛提供的驱动代码 比赛提供的底层驱动代码 /* # 单总线代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考…

前端学习之DOM编程-解除DOM2事件绑定

HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序。 事件通常与函数结合使用&#xff0c;函数不会在事件发生前被执行&#xff01; (如用户点击按钮)。 解除DOM2事件绑定 <!DOCTYPE html> <html lang"en"> <head><meta cha…