单片机-STM32 IIC通信(OLED屏幕)(十一)

一、屏幕的分类

1、LED屏幕:

由无数个发光的LED灯珠按照一定的顺序排列而成,当需要显示内容的时候,点亮相关的LED灯即可,市场占有率很高,主要是用于户外,广告屏幕,成本低。

LED屏是一种用发光二极管按顺序排列而制成的新型成像电子设备。由于其亮度高、可视角度广、寿命长等特点,正被广泛应用于户外广告屏等产品中。

采用LED光源进行照明,首先取代耗电的白炽灯,然后逐步向整个照明市场进军,将会节约大量的电能。近期,白色LED已达到单颗用电超过1瓦,光输出 25流明,也增大了它的实用性。

2、LCD屏幕:

液晶显示器,或称LCD(Liquid Crystal Display),为平面超薄的显示设备,它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。

液晶显示器:是一种借助于薄膜晶体管驱动的有源矩阵液晶显示器,它主要是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面,

LCD屏幕目前是市面消费类电子设备主流屏幕,主要在电脑 电视机,智能手表......

3、OLED屏:

OLED (Organic Light-Emitting Diode)即有机发光二极管,在手机OLED上属于新型产品,被称誉为“梦幻显示器”。

OLED显示技术与传统的LCD显示方式不同,无需背光灯,采用非常薄的有机材料涂层和玻璃基板(或柔性有机基板),当有电流通过时,这些有机材料就会发光。而且OLED显示屏幕可以做得更轻更薄,可视角度更大,并且能够显著的节省耗电量。

2023年5月,三星展示了一款具有革命性的 12.4 英寸可卷曲 OLED 面板。

OLED也被称之为第三代显示技术。OLED不仅更轻薄、能耗低、亮度高、发光率好、可以显示纯黑色,并且还可以做到弯曲,如当今的曲屏电视和手机等。当今国际各大厂商都争相恐后的加强了对OLED技术的研发投入,使得OLED技术在当今电视、电脑(显示器)、手机、平板等领域里应用愈加广泛。

4、数码管显示:

数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部分数码管阴极的形状为数字。管中充以低压气体,通常大部分为氖加上一些汞和/或氩。给某一个阴极充电,数码管就会发出颜色光,视乎管内的气体而定,一般都是橙色或绿色。

二、基本概念

像素点:在显示屏幕上成像的最小单位

像素:在拍照的过程中,一次曝光采集的像素点个数

分辨率:在屏幕中,固定的尺寸大小中,集成的像素点个数

我们目前使用的屏幕分辨率:128*64

一行:128像素点

一列:64像素点

三、屏幕接口

1. GND 电源地
2. VCC 电源正(3~5.5V)
3. SCL OLED 的 D0 脚,在 IIC 通信中为时钟管脚
4. SDA OLED 的 D1 脚,在 IIC 通信中为数据管脚

我们使用的屏幕接口是:IIC

IIC通信

IIC通信主要用于低速传输,速度没有SPI传输高

IIC全双工还是半双工??

IIC只有一条数据线,所以肯定是半双工

IIC和主机连接:

I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。

SDA--数据线

SCK--时钟线

IIC通信原理

IIC收发过程

1.假设微控制器 A 要发送信息到微控制器 B

• 微控制器 A 主机 寻址微控制器 B 从机

微控制器 A 主机 发送器 发送数据到微控制器 B 从机 接收器

• 微控制器 A 终止传输

2.如果微控制器 A 想从微控制器 B 接收信息

• 微控制器 A 主机 寻址微控制器 B 从机

• 微控制器 A 主机 接收器 从微控制器 B 从机 发送器 接收数据

• 微控制器 A 终止传输

IIC中的几个要点

位传输

由于连接到 I2C 总线的器件有不同种类的工艺 CMOS NMOS 双极性 逻辑 0 低 和 1高 的电平不是固定的 它由 VDD 的相关电平决定 , 每传输一个数据位就产生一个时钟脉冲

时钟为高电平--数据保持稳定,只能传输

时钟为低电平--数据可以切换

0101 0101

数据的有效性

为了让数据传输的过程时序和起始信号终止信号不冲突,制定了以下规则

SDA 线上的数据必须在时钟的高电平周期保持稳定 数据线的高或低电平状态只有在 SCL 线的时钟

信号是低电平时才能改变

起始和停止条件

应答信号

确保数据的正确性

IIC通信中,每发一个字节的数据,都需要接收设备给出应答,代表当前接收到了数据

数据传输必须带响应 相关的响应时钟脉冲由主机产生 在响应的时钟脉冲期间 发送器释放 SDA 线

有效响应:低电平

错误响应:高电平

IIC通信的要点

依发数据为例:

1.主机寻址 ---7bit

2.从机给出应答信号,

3.主机发送数据给从机,每一个字节都需要从机给出响应信号

4.当传输结束,主机发送停止信号。

7 位的地址格式

7Bit的地址+1bit的读写标志位

在起始条件 S 后 发送了一个从机地址 这个地址共有 7 位紧接着的第 8 位是数据方向位 R/ W 0 表示发送 写 1 表示请求数据 读 数据传输一般由主机产生的停止位 P 终止 但是 如果主机仍希望在总线上通讯 它可以产生重复起始条件 Sr和寻址另一个从机 而不是首先产生一个停止条件 在这种传输中 可能有不同的读 写格式结合。

0--写操作

1--读操作

驱动器

SSD1306B--用于接收MCU的数据和指令,控制OLED屏幕的显示,以及字符的位置。

SSD1306 的每页包含了128 个字节,总共 8 页,这样刚好是 128*64 的点阵大小

需要详细的去了解SSD1306B驱动器,需要查看以下手册:

驱动器介绍:

接口:

6800/8080--并行接口

SPI通信---串行接口,全双工

IIC通信--串行接口,半双工(我们使用的)

在驱动器中IIC应用:

SCL OLED 的 D0 脚,在 IIC 通信中为时钟管脚

SDA OLED 的 D1 脚,在 IIC 通信中为数据管脚

不同的通信接口引脚定义:

SPI通信可以通过片选选择从设备,那么我们的IIC可以通过什么选择从设备?---IIC可以通过地址(设备的地址)

驱动器中关于IIC的解释--SDA SCK 从机地址:

DC的设置:

co dc

0 0 000 000

命令指令:0x00

co dc

0 1 000 000

有效数据:0x40

4.指令

列地址设置:

将列地址分为高四位和低四位,分别存储

页地址设置:

OLED屏的SSD1306B中,8行为一个页

图像显示内存分布:

5.IIC配置

OLED的初始化

如何将MCU中的内容发送至OLED屏幕呢????

英文字符显示:

从空格到~,总共95个

将以上95个字符取模:

首先先配置:

{0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20},/"A",0/

图片的显示方式:

获取图片:

iconfont-阿里巴巴矢量图标库

打开图片取模工具:

设置:

将生成的.c文件中的内容复制到工程中:

去掉数组前面的const关键字

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

纯css实现div宽度可调整

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>纯css实现div尺寸可调整</title><style…

国产编辑器EverEdit - 输出窗口

1 输出窗口 1.1 应用场景 输出窗口可以显示用户执行某些操作的结果&#xff0c;主要包括&#xff1a; 查找类&#xff1a;查找全部&#xff0c;筛选等待操作&#xff0c;可以把查找结果打印到输出窗口中&#xff1b; 程序类&#xff1a;在执行外部程序时(如&#xff1a;命令窗…

小游戏源码开发搭建技术栈和服务器配置流程

近些年各种场景小游戏开发搭建版本层出不穷,山东布谷科技拥有多年海内外小游戏源码开发经验&#xff0c;现为从事小游戏源码开发或游戏运营的朋友们详细介绍小游戏开发及服务器配置流程。 一、可以对接到app的小游戏是如何开发的 1、小游戏源码开发的需求分析&#xff1a; 明…

Linux C\C++编程-文件位置指针与读写文件数据块

【图书推荐】《Linux C与C一线开发实践&#xff08;第2版&#xff09;》_linux c与c一线开发实践pdf-CSDN博客 《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 Linu…

一文简单回顾复习Java基础概念

还是和往常一样&#xff0c;我以提问的方式回顾复习&#xff0c;今天回顾下Java小白入门应该知道的一些基础知识 Java语言有哪些特点呢&#xff1f; Java语言的特点有&#xff1a; 面向对象&#xff0c;主要是封装、继承、多态&#xff1b;平台无关性&#xff0c;“一次编写…

Redis实战(黑马点评)——关于缓存(缓存更新策略、缓存穿透、缓存雪崩、缓存击穿、Redis工具)

redis实现查询缓存的业务逻辑 service层实现 Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY id;// 现查询redis内有没有数据String shopJson (String) redisTemplate.opsForValue().get(key);if(StrUtil.isNotBlank(shopJson)){ // 如果redis的数…

神经网络|(四)概率论基础知识-古典概型

【1】引言 前序学习了线性回归的基础知识&#xff0c;了解到最小二乘法可以做线性回归分析&#xff0c;但为何最小二乘法如此准确&#xff0c;这需要从概率论的角度给出依据。 因此从本文起&#xff0c;需要花一段时间来回顾概率论的基础知识。 【2】古典概型 古典概型是我…

【C++】特殊类设计、单例模式与类型转换

目录 一、设计一个类不能被拷贝 &#xff08;一&#xff09;C98 &#xff08;二&#xff09;C11 二、设计一个类只能在堆上创建对象 &#xff08;一&#xff09;将构造函数私有化&#xff0c;对外提供接口 &#xff08;二&#xff09;将析构函数私有化 三、设计一个类只…

微服务网关鉴权之sa-token

目录 前言 项目描述 使用技术 项目结构 要点 实现 前期准备 依赖准备 统一依赖版本 模块依赖 配置文件准备 登录准备 网关配置token解析拦截器 网关集成sa-token 配置sa-token接口鉴权 配置satoken权限、角色获取 通用模块配置用户拦截器 api模块配置feign…

16.好数python解法——2024年省赛蓝桥杯真题

问题描述 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位…)上的数字是奇数,偶数位(十位、千位、十万位…)上的数字是偶数,我们就称之为“好数”。 给定一个正整数N,请计算从1到N一共有多少个好数。 输入格式 一个整数N。 输出格式 一个整数代表答案。 样例输入 1 …

2025年数学建模美赛 A题分析(2)楼梯使用频率数学模型

2025年数学建模美赛 A题分析&#xff08;1&#xff09;Testing Time: The Constant Wear On Stairs 2025年数学建模美赛 A题分析&#xff08;2&#xff09;楼梯磨损分析模型 2025年数学建模美赛 A题分析&#xff08;3&#xff09;楼梯使用方向偏好模型 2025年数学建模美赛 A题分…

Redis实战(黑马点评)——涉及session、redis存储验证码,双拦截器处理请求

项目整体介绍 数据库表介绍 基于session的短信验证码登录与注册 controller层 // 获取验证码PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {return userService.sendCode(phone, session);}// 获…

Brightness Controller-源码记录

Brightness Controller 亮度控制 一、概述二、ddcutil 与 xrandr1. ddcutil2. xrandr 三、部分代码解析1. icons2. ui3. utilinit.py 一、概述 项目&#xff1a;https://github.com/SunStorm2018/Brightness.git 原理&#xff1a;Brightness Controlle 是我在 Ubuntu 发现上调…

STM32简介

STM32简介 STM32是ST公司基于ARMCortex-M内核开发的32位微控制器 &#xff08;Microcontroller&#xff09; MCU微控制器、MPU微处理器、CPU中央处理器 1.应用领域 STM32常应用于嵌入式领域。 如智能车&#xff1a;循迹小车 读取光电传感器或者摄像头的数据&#xff0c;…

qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别

qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别 code review! 参考笔记 1.qt-C笔记之重写QGraphicsItem的paint方法(自定义QGraphicsItem) 文章目录 qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphic…

浏览器IndexedDB占用大

使用鲁大师清理后&#xff0c;用 SpaceSniffer 查看C盘占用情况&#xff0c;发现浏览器的 IndexedDB 有3个文件夹占用特别大&#xff0c;从文件名看是 youku&#xff0c;bilibili&#xff0c;v.qq.com&#xff0c;浏览器的数据库并不需要长期保存&#xff0c;删除这3个文件夹&a…

MongoDB部署模式

目录 单节点模式&#xff08;Standalone&#xff09; 副本集模式&#xff08;Replica Set&#xff09; 分片集群模式&#xff08;Sharded Cluster&#xff09; MongoDB有多种部署模式&#xff0c;可以根据业务需求选择适合的架构和部署方式。 单节点模式&#xff08;Standa…

将 OneLake 数据索引到 Elasticsearch - 第二部分

作者&#xff1a;来自 Elastic Gustavo Llermaly 及 Jeffrey Rengifo 本文分为两部分&#xff0c;第二部分介绍如何使用自定义连接器将 OneLake 数据索引并搜索到 Elastic 中。 在本文中&#xff0c;我们将利用第 1 部分中学到的知识来创建 OneLake 自定义 Elasticsearch 连接器…

Formality:时序变换(三)(相位反转)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 一、引言 时序变换在Design Compiler的首次综合和增量综合中都可能发生&#xff0c;它们包括&#xff1a;时钟门控(Clock Gating)、寄存器合并(Register Merging)、…

php代码审计2 piwigo CMS in_array()函数漏洞

php代码审计2 piwigo CMS in_array()函数漏洞 一、目的 本次学习目的是了解in_array()函数和对项目piwigo中关于in_array()函数存在漏洞的一个审计并利用漏洞获得管理员帐号。 二、in_array函数学习 in_array() 函数搜索数组中是否存在指定的值。 in_array($search,$array…