物联网AI MicroPython传感器学习 之 GC7219点阵屏驱动模块
学物联网,来万物简单IoT物联网!!
一、产品简介
LED-8 * 32点阵屏显示板由 4 块单色 8x8 共阴红色点阵单元组成,通过 SPI 菊花链模式将多块显示屏连接后可以组成更大的分辨率显示屏幕,任意组合分辨率。可用于简单仪表显示、LED显示屏、万年历、数字钟、温度计、计数器、电压表等显示使用。

引脚定义:
- VCC:接电源正极(3.3-5V)
- GND:接电源负极
- DIN:SPI MOSI信号
- CS:SPI 片选信号
- CLK:SPI 时钟信号
二、技术参数
- 采用常规SPI通讯,支持 16 级亮度调节
- 支持命令模式和数据模式
- 支持 SPI 的链接模式,扩展多级 LED 屏幕
- 工作电压:2.4-5.5V
- 工作电流:低亮度30mA,高亮度300mA(5V电压时)
- 尺寸:15.2 x 3.8 厘米
三、软件接口
GC7219(spiObj, CS) - 创建 GC7219 驱动对象
- 函数原型:
gc7219Obj = GC7219(spiObj ,CS)
- 参数说明:
| 参数 | 类型 | 必选参数? | 说明 |
|---|---|---|---|
| spiObj | SPI | 是 | 传入SPI对象 |
| CS | GPIO | 是 | 传入片选信号 CS 对象 |
- 返回值:
GC7219 对象成功,返回 GC7219 对象;GC7219 对象创建失败,抛出 Exception - 示例代码:
from machine import SPI, Pin
import gc7219# 初始化 SPI
spiObj = SPI(2, baudrate=2000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
# 初始化片选
csObj = Pin(21, Pin.OUT)
# 创建 GC7219 驱动
gc7219Obj = gc7219.GC7219(spiObj, csObj)
print("GC7219 inited!")
- 输出:
GC7219 inited!
flush() - 将驱动的 bitmap 数据刷到 LED 点阵屏幕上
- 函数功能:
将 bitmap 切割成每块8x8 LED 点阵屏数据,并通过 SPI DIN 口将数据刷到 LED 点阵屏幕上 - 函数原型:
gc7219Obj.flush()
- 参数说明:
无 - 返回值:
无 - 示例:
from machine import SPI, Pin
import gc7219# 初始化 SPI
spiObj = SPI(2, baudrate=2000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
# 初始化片选
csObj = Pin(21, Pin.OUT)
# 创建 GC7219 驱动
gc7219Obj = gc7219.GC7219(spiObj, csObj)
print("GC7219 inited!")# 准备 bitmap 点阵屏数据
# 一共 32x8 宽高的 bitmap,设置第一块 0 0、第二块1 1、第三块2 2、第四块3 3点亮
gc7219Obj.bitmap.setPixel(0, 0, True)
gc7219Obj.bitmap.setPixel(8+1, 1, True)
gc7219Obj.bitmap.setPixel(16+2, 2, True)
gc7219Obj.bitmap.setPixel(24+3, 3, True)
# 将 bitmap 刷新到 LED 屏幕上
gc7219Obj.flush()
print("drv.bitmap flush done")
- 输出:
GC7219 inited
drv.bitmap flush done
四、接口案例
- 代码:
# Python代码
from machine import SPI, Pin
import gc7219# 初始化 SPI
spiObj = SPI(2, baudrate=2000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
# 初始化片选
csObj = Pin(21, Pin.OUT)
# 创建 GC7219 驱动
gc7219Obj = gc7219.GC7219(spiObj, csObj)
print("GC7219 inited!")
# 一共 32x8 宽高的 bitmap,设置第一块 0 0、第二块1 1、第三块2 2、第四块3 3点亮
gc7219Obj.bitmap.setPixel(0, 0, True)
gc7219Obj.bitmap.setPixel(8+1, 1, True)
gc7219Obj.bitmap.setPixel(16+2, 2, True)
gc7219Obj.bitmap.setPixel(24+3, 3, True)
# 将 bitmap 刷新到 LED 屏幕上
gc7219Obj.flush()
print("drv.bitmap flush done")
- 输出:
...
GC7219 inited!
drv.bitmap flush done
...
五、通信协议
主控芯片与LED点阵屏之间使用 SPI 通讯,多块8x8点阵屏使用菊花链模式链接,即通过 SPI 主从串联方式,将一组数据刷新到所有点阵屏上。
六、工作原理
LED 控制芯片采用 GC7219,内部拥有 8x8 RAM 存储 64 个 LED 的点亮状态。
MCU 与从设备传输数据时,首先将 CS 片选信号置为低电平,随后通过 MOSI 传输数据存储到从设备的移位寄存器中,当 CS 信号从低电平设置为高电平时,从设备在上升沿将数据锁存,数据生效。

参考文献及购买链接
[1] GC7219 Datasheet参考资料
[2] GC7219购买链接
相关文章:
物联网AI MicroPython传感器学习 之 GC7219点阵屏驱动模块
学物联网,来万物简单IoT物联网!! 一、产品简介 LED-8 * 32点阵屏显示板由 4 块单色 8x8 共阴红色点阵单元组成,通过 SPI 菊花链模式将多块显示屏连接后可以组成更大的分辨率显示屏幕,任意组合分辨率。可用于简单仪表显…...
MySQL中查询重复字段的方法和步骤是怎样
示例 accountinfo 表数据如下: 场景一 单个字段重复数据查找 & 去重 我们要把上面这个表中 单个字段 account字段相同的数据找出来。 思路 分三步 简述: 第一步 要找出重复数据,我们首先想到的就是,既然是重复,…...
怎样才能去除视频中的背景音乐,保留人声?
做视频剪辑,二次创作的朋友,需要去除视频中的背景音乐,保留人声;或者去除人声,保留背景音乐。如果请身边做视频的朋友帮忙,可有时不能沟通到位,完成后的效果并不是很理想,就很尴尬了…...
【C语言程序设计】--C语言(一)计算机思维导论
控制台输出中文乱码问题解决: ref:https://blog.csdn.net/ymzhu385/article/details/121797080 基本数据类型 我们的程序离不开数据,比如我们需要保存一个数字或是字母,这时候这些东西就是作为数据进行保存,不过不同的数据他们的…...
三、git信息泄露
一、git信息泄露 解释:Git信息泄露是指通过公开或错误地配置版本控制系统Git,导致敏感数据(例如API密钥、数据库密码、个人信息等)被泄露到公共代码仓库或其他未授权的访问者手中。通俗来说,在公网暴露类似http://127…...
第 368 场 LeetCode 周赛题解
A 元素和最小的山形三元组 I 前后缀操作:求出前后缀上的最小值数组,然后枚举 j j j class Solution { public:int minimumSum(vector<int> &nums) {int n nums.size();vector<int> l(n), r(n);//l[i]min{nums[0],...,nums[i]}, r[i]mi…...
Qt中QFile、QByteArray QDataStream和QTextStream区别及示例
在Qt中,QFile、QByteArray、QDataStream和QTextStream是常用的文件和数据处理类。 主要功能和区别 QFile: QFile是用于读写文本和二进制文件以及资源的I/O设备。可以单独使用QFile,或者更方便地与QTextStream或QDataStream一起使用。 通常在…...
【操作系统】32进制小数转16进制
要将32进制的小数转换为16进制,可以按照以下步骤进行: 将32进制小数转换为10进制。可以使用上述提到的方法,将32进制小数转换为对应的10进制数。 将10进制数转换为16进制。使用常规的方法将10进制数转换为16进制数。可以将10进制数不断除以1…...
C#实现数据导出任一Word图表的通用呈现方法及一些体会
疲惫的修改 应人才测评产品的需求,导出测评报告是其中一个重要的环节,报告的文件类型也多种多样,其中WORD输出也扮演了一个重要的角色。 实现方法比较简单,结合分析结果数据,通过WORD模板文件进行替换输出。在实现的…...
2023-10 字节跳动面试整个过程 golang营销服务开发岗位
面试整个过程大约1个小时回答的中规中矩吧 很多问题回答的不具体 难受死我了非常简单的算法题下面列出来了面试步骤这里面有一点就是面试官本来想问问我数据结构这一块的问题 但是我说不太熟悉 他就没问了 1. 简单介绍个人信息 略2. 介绍简历上的项目 略3. 什么是分布式事务 主…...
Java类名的命名规范
Java中的类名必须以字母或者下划线开头,不能以数字开头。 类名的每个单词的首字母必须大写,这被称为帕斯卡命名法。 此外,类名不能使用关键字或保留字,不能使用数字除了_和$之外的任何符号,中间不能添加空格。 如果…...
【c++Leetcode】141. Linked List Cycle
问题入口 思想:Floyds Tortoise and Hare 这个算法简单来说就是设置一个慢指针(一次移动一个位置)和一个快指针(一次移动两个位置)。在遍历过程中,如果慢指针和快指针都指向同一个元素,证明环…...
Visa股票仍然值得投资
来源:猛兽财经 作者:猛兽财经 总结: (1)尽管Visa(V)的估值高于市场平均水平,但仍值得买入。 (2)Visa拥有强劲的基本面,销售额和每股收益一直在稳定增长,股息…...
【Android知识笔记】RecyclerView专题
RecyclerView工作流程 RecyclerView 的使用方法简单回顾: // 1. 添加gradle依赖 implementation androidx.recyclerview:recyclerview:1.1.0// 2. 布局文件 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http:…...
从头开始使用 KNN 进行 KNN 和 MNIST 手写数字识别的初学者指南
一、说明 MNIST (“修改后的国家标准与技术研究所”)是事实上的计算机视觉“hello world”数据集。自 1999 年发布以来,这个经典的手写图像数据集一直作为分类算法基准测试的基础。随着新的机器学习技术的出现,MNIST 仍然是研究人…...
文件的基本操作(创建文件,删除文件,读写文件,打开文件,关闭文件)
1.创建文件(create系统调用) 1.进行Create系统调用时, 需要提供的几个主要参数: 1.所需的外存空间大小(如:一个盘块,即1KB) 2.文件存放路径(“D:/Demo”) 3.文件名(这个地方默认为“新建文本文档.txt”) …...
微积分(二) 导数与微分
前言 导数反映了函数值相对于自变量的变化快慢程度,而微分则表明当自变量有微小变化时,函数值大体上变化多少 瞬时速度的解决——极限 牛顿采用了一种无限逼近的方法。 平均速度的定义:如果一个物体在一段时间△t内位移了s,它在这段时间内的平均速度…...
go语言Array 与 Slice
有的语言会把数组用作常用的基本的数据结构,比如 JavaScript,而 Golang 中的数组(Array),更倾向定位于一种底层的数据结构,记录的是一段连续的内存空间数据。但是在 Go 语言中平时直接用数组的时候不多,大多数场景下我…...
Ubuntu自启动设置
ubuntu中编写shell脚本开机自动启动(推荐)_Linux_脚本之家 1. vim test.sh 2. #!/bin/bash ### BEGIN INIT INFO # Provides: test # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 …...
Qwen 通义千问 14B 模型,长文本问答效果测试
千问的config: seq_len2k max_position_embedding8k 注意,以下实验结果的字数是token数,不是中文字符数。 不使用动态ntk 12000字输入: 乱码5000字输入:乱码1500字输入:正常 不使用动态ntk,…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

