ESP32-S3外接SSD1306 OLED显示8*8字符和16*16汉字

一、接线图

在这里插入图片描述
二、实物
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、代码

#include <stdio.h>
#include <string.h>
#include "unity.h"
#include "driver/i2c_master.h"
#include "driver/gpio.h"
#include "esp_lcd_panel_io.h"
#include "esp_lcd_panel_vendor.h"
#include "esp_lcd_panel_ops.h"
#include "esp_system.h"
#include "driver/i2c.h"#define SSD1306_LCD_H          128
#define SSD1306_LCD_V          64#define I2C_SDA_GPIO_PIN       1  // 连接 SSD1306 的 SDA
#define I2C_SCL_GPIO_PIN       2  // 连接 SSD1306 的 SCL#define I2C_BUS_PORT           0 // ESP32-S3有两个I2C端口,选择第一个
#define I2C_SSD1306_ADDR       0x3C //SSD1306 I2C 地址#define LCD_SCL_CLOCK_HZ       (400 * 1000) // SSD1306 时钟速度 400Kconst uint8_t words [][16] = {
{0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00},
{0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00},/*"中",0*/
{0x00,0xFE,0x02,0x12,0x92,0x92,0x92,0xF2,0x92,0x92,0x92,0x12,0x02,0xFE,0x00,0x00},
{0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x4A,0x4C,0x48,0x40,0xFF,0x00,0x00},/*"国",1*/
};const uint8_t alpha[][8] ={{0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00},{0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00},//E 0{0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00},{0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00},//S 1{0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00},{0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00},//P 2{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00},{0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},//3 3{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00},{0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},//2 4{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01},//- 5{0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00},{0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00},//S 6{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00},{0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},//3 7};const uint8_t blank[] ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};void app_main(void)
{    //设置 I2C,使用新版本v2.0 I2C驱动i2c_master_bus_config_t i2c_bus_conf = {.clk_source = I2C_CLK_SRC_DEFAULT,.sda_io_num = I2C_SDA_GPIO_PIN,.scl_io_num = I2C_SCL_GPIO_PIN,.i2c_port = -1,.flags.enable_internal_pullup = 1,};i2c_master_bus_handle_t bus_handle;TEST_ESP_OK(i2c_new_master_bus(&i2c_bus_conf, &bus_handle));//设置 SSD1306esp_lcd_panel_io_handle_t io_handle = NULL;esp_lcd_panel_io_i2c_config_t io_config = {.dev_addr = I2C_SSD1306_ADDR,.scl_speed_hz = LCD_SCL_CLOCK_HZ,.control_phase_bytes = 1, .dc_bit_offset = 6,      .lcd_cmd_bits = 8,        .lcd_param_bits = 8,      };TEST_ESP_OK(esp_lcd_new_panel_io_i2c(bus_handle, &io_config, &io_handle));esp_lcd_panel_handle_t panel_handle = NULL;esp_lcd_panel_dev_config_t panel_config = {.bits_per_pixel = 1,.reset_gpio_num = -1,};TEST_ESP_OK(esp_lcd_new_panel_ssd1306(io_handle, &panel_config, &panel_handle));TEST_ESP_OK(esp_lcd_panel_reset(panel_handle));TEST_ESP_OK(esp_lcd_panel_init(panel_handle));// 打开显示TEST_ESP_OK(esp_lcd_panel_disp_on_off(panel_handle, true));//清屏for (int i = 0; i < 120; i++) {for(int j = 0;j < 56;j++){TEST_ESP_OK(esp_lcd_panel_draw_bitmap(panel_handle, i * 8, j * 8, i * 8 + 8, j * 8 + 8, blank));}}//显示 8 x 8 字母和数字for (int i = 0; i < 8; i++) {for(int j = 0;j < 2;j++){TEST_ESP_OK(esp_lcd_panel_draw_bitmap(panel_handle, i * 8, j * 8, i * 8 + 8, j * 8 + 8, alpha[i*2 + j]));}}//显示 16 x 16 汉字int location_x_start = 90; int location_y_start = 40;  for(int x = 0; x < 2; x++){for(int y = 0; y < 2; y++){TEST_ESP_OK(esp_lcd_panel_draw_bitmap(panel_handle, x * 16 + location_x_start, y * 8 + location_y_start , x * 16 + 16 + location_x_start ,y * 8 + 8 + location_y_start, words[x*2+y]));}}}

四、效果

在这里插入图片描述

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

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

相关文章

【Qt】QWidget中的常见属性及其功能(二)

目录 六、windowOpacity 例子&#xff1a; 七、cursor 例子&#xff1a; 八、font 九、toolTip 例子&#xff1a; 十、focusPolicy 例子&#xff1a; 十一、styleSheet 计算机中的颜色表示 例子&#xff1a; 六、windowOpacity opacity是不透明度的意思。 用于设…

Nginx Proxy Manager如何管理与配置反向代理服务并实现远程访问

文章目录 前言1. 一键安装2. 本地访问3. Linux 安装cpolar4. 配置公网访问地址5. 公网远程访问6. 固定公网地址 前言 Nginx Proxy Manager 是一个开源的反向代理工具&#xff0c;不需要了解太多 Nginx 或 Letsencrypt 的相关知识&#xff0c;即可快速将你的服务暴露到外部环境…

vscode中同时运行两个python文件(不用安装插件)

如何在vscode中同时运行两个python文件呢&#xff1f;今天在工作中遇到了这个问题。 查了网上的方法是安装coder runner插件&#xff0c;后来发现自身就有这个功能。所以记录一下,方便后续查找: 这是我的第一个文件&#xff0c;点击右上角的运行旁边的小箭头&#xff0c;有一…

Visio——导出的PDF文件缺乏嵌入字体的解决办法 / 设置导出的PDF文件添加嵌入字体的方法

导出PDF时&#xff0c;勾选 “符合PDF/A” 选项 这样就导出的PDF文件添加了嵌入字体了。

皮肤伤口分割数据集labelme格式248张5类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;284 标注数量(json文件个数)&#xff1a;284 标注类别数&#xff1a;5 标注类别名称:["bruises","burns","cu…

cpolar使用步骤

功能&#xff1a;内网穿透 下载地址&#xff1a;cpolar - secure introspectable tunnels to localhost 1 找到安装目录 2 进入命令行 目录处输入 cmd 3 验证 authtoken 不同用户 验证码不同。 注册后可以使用 cpolar.exe authtoken MzBlNzMwODktZjA3Yi00ZjJlLWJiMzQtNWU…

模具制造之三维扫描和逆向建模

模具是在工业生产中&#xff0c;用各种压力机和装在压力机上的专用工具&#xff0c;通过压力把金属或非金属材料制出所需形状的零件或制品&#xff0c;这种专用工具称为模具。模具的形状决定着这些产品的外形&#xff0c;模具的加工质量与精度也就决定着这些产品的质量。 汽车挡…

压力测试Jmeter简介

前提条件&#xff1a;要安装JDK 若不需要了解&#xff0c;请直接定位到左侧目录的安装环节。 1.引言 在现代软件开发中&#xff0c;性能和稳定性是衡量系统质量的重要指标。为了确保应用程序在高负载情况下仍能正常运行&#xff0c;压力测试变得尤为重要。Apache JMeter 是一…

[Pro Git#4] 标签 | 理解 | 创建 | push

目录 一、理解标签 二、创建标签 三、操作标签 一、理解标签 标签定义&#xff1a;在Git中&#xff0c;标签&#xff08;tag&#xff09;是对某次提交&#xff08;commit&#xff09;的一个标识&#xff0c;相当于起了一个别名。应用场景示例&#xff1a; 在项目发布某个版…

Linux命令--输入输出重定向、追加

原文网址&#xff1a;Linux命令--输入输出重定向、追加_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Linux中的输入输出重定向、追加。 Linux是通过文件描述符来控制输入和输出的&#xff0c;如下&#xff1a; 字段描述文件描述符默认设备stdin标准输入流0终端&#xff08;键盘…

【HarmonyOS】鸿蒙获取appIdentifier,Identifier

【HarmonyOS】鸿蒙获取appIdentifier&#xff0c;Identifier 一、前言 三方后台需要填写的所谓appIdentifier&#xff0c;Identifier信息&#xff0c;其实对应鸿蒙应用的appID。 二、解决方案&#xff1a; 注意&#xff0c;模拟器获取data.signatureInfo.appIndentifer为空…

欧科云链研究院:AI时代,如何证明“我是我”?

OKG Research&#xff5c;编辑 近日&#xff0c;OpenAI 发布了新模型 Sora。这是一款高性能的文本到多模态生成工具&#xff0c;支持从文本生成精细的图像和动态视频。 相较早先发布的视频样例&#xff0c;该功能目前已经可以由用户真实上手体验&#xff0c;目前由于服务过载…

进程通信方式---共享映射区(无血缘关系用的)

5.共享映射区&#xff08;无血缘关系用的&#xff09; 文章目录 5.共享映射区&#xff08;无血缘关系用的&#xff09;1.概述2.mmap&&munmap函数3.mmap注意事项4.mmap实现进程通信父子进程练习 无血缘关系 5.mmap匿名映射区 1.概述 原理&#xff1a;共享映射区是将文件…

javaweb-day10:综合案例

1.基础知识 2.环境搭建 3.Restful风格的开发规范 4. 开发流程 正式开发 5.部门管理 5.1 查询部门 6.文件上传 6.1 文件上传三要素 &#xff08;1&#xff09;本地存储–生成随机名称 Slf4j RestController public class UploadController {PostMapping("/upload"…

java全栈day17--Web后端实战(java操作数据库)

前言&#xff1a;本章应该是针对数据库基础讲解&#xff0c;数据的增删改查但是本人忘记对知识进行归纳总结就直接跳过&#xff0c;基本的内容都很简单&#xff0c;都是套式子使用。现在开始学习本章&#xff0c;很重要需要好好掌握。 一、使用的工具 二、JDBC 2.1概述 JDBC …

Scala的泛型界限

泛型界限 上限 泛型的上限&#xff0c;下限。对类型的更加具体的约束&#xff01; 如果给某个泛型设置了上界&#xff1a;这里的类型必须是上界 如果给某个泛型设置了下界&#xff1a;这里的类型必须是下界

【C++复习第5小节】类和对象

文章目录 1. 内存对齐2. this 指针3. 构造函数 1. 内存对齐 #pragma pack(1) //指定对齐数为 1&#x1f4a7;有一个小问题问大家&#xff0c;内存对齐其实也会造成空间浪费&#xff0c;为什么还要内存对齐呢&#xff1f; 》因为计算机读取数据是有要求的&#xff0c;要么就读…

【HarmonyOS】HarmonyOS 和 Flutter混合开发 (一)之鸿蒙Flutter环境安装

【HarmonyOS】HarmonyOS 和 Flutter混合开发 &#xff08;一&#xff09;之鸿蒙Flutter环境安装 一、前言 flutter作为开源适配框架方案&#xff0c;已经在Android&#xff0c;IOS&#xff0c;Web&#xff0c;Window四大平台进行了适配&#xff0c;一套代码&#xff0c;可以同…

2024年企业中生成式 AI 的现状报告

从试点到生产&#xff0c;企业 AI 格局正在被实时改写。我们对 600 名美国企业 IT 决策者进行了调查&#xff0c;以揭示新兴的赢家和输家。 从试点到生产 2024 年标志着生成性人工智能成为企业关键任务的一年。这些数字讲述了一个戏剧性的故事&#xff1a;今年人工智能支出飙升…

Linux 磁盘空间不足之排查方法(Troubleshooting Method for Linux Disk Space Shortage)

Linux 磁盘空间不足之排查方法 在Linux系统运维过程中&#xff0c;磁盘空间不足是一个常见且棘手的问题。当磁盘空间被占满时&#xff0c;系统的正常运行会受到影响&#xff0c;甚至可能导致服务中断。因此&#xff0c;迅速有效地排查和解决磁盘空间问题显得尤为重要。本文将详…