当前位置: 首页 > news >正文

esp32-c3驱动MAX6955AAX并驱动1088AS点阵屏

实际上还是有很多不确定的地方,先记录下来,希望后续如果碰到类似的情况可以提供思路

 

原理图如下,使用esp32-c3的GPIO0和GPIO1作为I2C输出,MAX6955的O0~O7、O10~O17

image

image

 

先上代码:

#include <Arduino.h>#include <Wire.h>// ======================== 硬件固定配置 ========================
#define MAX6955_ADDR 0x60
#define I2C_SDA 0  // SDA引脚
#define I2C_SCL 1  // SCL引脚#define MAX6955_I2C_ADDR 0x60#define MAX6955_REG_DECODE_MODE 0x01
#define MAX6955_REG_GLOBAL_INTENSITY 0x02
#define MAX6955_REG_SCAN_LIMIT 0x03
#define MAX6955_REG_CONFIGURATION 0x04
#define MAX6955_REG_DISPLAY_TEST 0x0F
#define REG_DIGIT_P0_BASE 0x20void i2c_send(uint8_t reg, uint8_t data) {Wire.beginTransmission(MAX6955_ADDR);Wire.write(reg);Wire.write(data);Wire.endTransmission();
}const uint8_t row_7_col_map[8] = { 5, 2, 7, 4, 6, 0, 1, 3 };const uint8_t col_data_map[7] = { 0x04, 0x40, 0x20, 0x01, 0x08, 0x02, 0x10 };int getBit(int num, int n) {return (num >> n) & 1;
}uint8_t** draw(uint8_t x[8]) {uint8_t** result = (uint8_t**)malloc(16 * sizeof(uint8_t*));if (result == NULL) return NULL;for (int i = 0; i < 16; i++) {result[i] = (uint8_t*)malloc(2 * sizeof(uint8_t));if (result[i] == NULL) {for (int k = 0; k < i; k++) free(result[k]);free(result);return NULL;}result[i][0] = 0x20 + i;result[i][1] = 0;//0x2i的时候 应该传0还是1if (i < 8) {//左边算col//右边算位result[i][1] = getBit(x[7], 7 - row_7_col_map[i]);//i=0 0bit col7  0000 0001//i=1 5bit col2  0010 0000//i=2 2bit col5  0000 0100//i=3 3bit col4  0000 1000//i=4 1bit col6  0000 0010} else {//2,2 i=9   0010 0000    取5位 0x20//2,3 i=16  0001 0000    取4位 0x20for (int j = 0; j < 7; j++) {uint8_t b = getBit(x[j], 7 - row_7_col_map[i - 8]);if (b) {result[i][1] = result[i][1] | col_data_map[j];}}}}return result;
}// ======================== 初始化 ========================
void setup() {Wire.begin(I2C_SDA, I2C_SCL);delay(100);i2c_send(MAX6955_REG_GLOBAL_INTENSITY, 0x0F);  // 亮度最大(0~F可调)delay(100);// 核心寄存器配置(点阵模式)i2c_send(MAX6955_REG_CONFIGURATION, 0x01);  // 正常工作模式(非关机)delay(100);i2c_send(MAX6955_REG_SCAN_LIMIT, 0x07);  // 扫描8位(8行)i2c_send(MAX6955_REG_DECODE_MODE, 0x00);  // 关闭译码 = 点阵模式delay(100);//单颗 最后一行 row7// i2c_send(0x20, 0xff); //col5// i2c_send(0x21, 0xff);//col2// i2c_send(0x22, 0xff);//col7// i2c_send(0x23, 0xff);//col4// i2c_send(0x24, 0xff);//col6// i2c_send(0x25, 0xff);//col0// i2c_send(0x26, 0xff);//col1// i2c_send(0x27, 0xff);//col3//整列row3//0x28 col5// i2c_send(0x28, 0x01);//0x29 对应col2// i2c_send(0x29, 0x01);//0x2a 对应col7// i2c_send(0x2a, 0x01);//  对应col4// i2c_send(0x2b, 0x01);//  对应col6// i2c_send(0x2c, 0x01);//  对应col0// i2c_send(0x2d, 0x01);//  对应col1// i2c_send(0x2e, 0x01);//  对应col3// i2c_send(0x2f, 0x01);//row0 数据0x04//row1 数据0x40//row2 数据0x20//row3 数据0x01//row4 数据0x08//row5 数据0x02//row6 数据0x10// i2c_send(0x2e,0x04);// i2c_send(0x29,0x04);// i2c_send(0x2f,0x04);// i2c_send(0x2b,0x04);// i2c_send(0x28,0x04);// i2c_send(0x2c,0x04);// i2c_send(0x2a,0x04);uint8_t x[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};uint8_t** result = draw(x);for (int i = 0; i < 16; i++) {i2c_send(result[i][0], result[i][1]);}free(result);
}void loop() {
}

 

http://www.jsqmd.com/news/604384/

相关文章:

  • 突破网盘限速壁垒:八大平台通用直链下载解决方案
  • 从COCO到3DPW:聊聊那些‘养活’了姿态估计模型的真实数据集背后的故事
  • 《星尘传说》游戏源码分析:从引擎架构到客户端渲染的技术揭秘
  • PipelineDB社区生态:开源项目的发展历程与未来展望
  • Linuxbrew在Docker中的应用:构建可重复的开发环境
  • 记一次 ALB 概率性 TCP 连接超时排查:从现象到根因(附完整排查流程)
  • 借助AIBIYE的AI改写功能,学习五个核心技巧,快速优化论文内容以达到低重复率标准。
  • AI博主私藏|4款PPT神器,课件/汇报高效出片,新手也能轻松上手 - 品牌测评鉴赏家
  • 终极EdgeGPT版本迁移指南:从v1到v2的无缝适配技巧
  • 智能调控:华硕笔记本散热优化与风扇转速调节全攻略
  • 如何设置cmd的权限为管理员权限方法——采用任务管理器最为方便快捷。
  • 20254126 王溪泽 实验二《Python程序设计》实验报告
  • 鸿蒙RdbPredicates实战:从SQL思维到链式API的范式转换与性能调优
  • 2026年初中中考英语大纲词汇表1600个电子版PDF(含单词音频和默写本)
  • OpenClaw 2026.4.5版本更新详解
  • MT6701磁编芯片SSI接口调试踩坑记:一个CRC-6校验让我折腾了三天
  • DeepSeek写的论文AI率怎么降?5步完整操作从96%降到15%以下 - 还在做实验的师兄
  • Solon社区生态建设:如何参与开源项目并获得技术支持
  • 终极指南:Docker Minecraft Server数据持久化策略——从Volume挂载到自动备份
  • MindSpore 模型压缩与量化实战
  • 如何使用WiFiManager打造智能零售网络:从自助结账到智能货架的无缝配置方案
  • 中国半导体行业展会优选,专业半导体论坛实力对比与推荐 - 品牌2026
  • 2026AI学习路线图|30天从小白到高手
  • AI Agent:大模型产业落地的核心引擎,8大组件+8类应用架构全解析!
  • Research Proposal写作全攻略:从结构解析到实战技巧
  • 电脑经常开机卡在-请稍等-用360修复删除下那些插件看看,看看是否有关。
  • 我的AI大模型转行记录,非常详细收藏我这一篇就够了
  • 5分钟快速激活Windows和Office:KMS_VL_ALL_AIO完整使用指南
  • 2026年SCI论文AI率要求5%以下?这3款降AI工具期刊场景亲测 - 还在做实验的师兄
  • Figma