MicroPython-On-ESP8266——8x8LED点阵模块(1)驱动原理

news2025/7/18 5:48:09

MicroPython-On-ESP8266——8x8LED点阵模块(1)驱动原理

1. 8x8LED点阵模块介绍

1.1. 显示模块的升级

之前已经试过点亮8段数码管,并能够使用两片HC595芯片来驱动数码管。今天我又找来了一个8x8点阵LED屏,下面分析一下这个屏幕并尝试点亮它。

首先大家要建立一个概念,这个8x8点阵,其实根8个数码管是一样一样的。看看后面的原理图就知道了。

1.2. 8x8LED点阵介绍

在这里插入图片描述

因为这个模块是个淘宝货,没查到权威的官方手册,只是从网上搜罗了一些资料过来。我手上这个led点阵型号是1088AS(AS共阴,BS共阳),点阵内部结构原理如下:
在这里插入图片描述

2. 原理图解读

2.1. 原理图解读

  1. 先看中间的引脚位置图,模块上下两排各8各引脚,下边引脚号①到⑧,上面倒序的⑨到⑯。我手上模块把印有型号的一边朝向自己就是①到⑧引脚了(确定方法见后)
  2. 最下面的电路图可以知道,每一行的阴极连接在一起,每一列的阳极连接在一起。所以1088AS之所以叫共阴LED点阵模块,应该是以行连接方式来命名的。
  3. 需要点亮其中的某一个led,只需要把该led对应的正负极引脚接通即可。特别注意的是,引脚号是带圆圈的那个数字,从①到⑯不重复的。
  4. 从整个原理看,跟前面学习数码管时的段码、位码如出一辙。所以凡是能驱动数码管的IC,都一样能驱动这个点阵屏。

备注:
为了确认手上点阵屏具体的引脚号,咱么可以拿万用表,换到LED档,正负极接上对应的引脚试试。如下图,我正极接③脚,负极接①脚,点亮的led刚好跟原理图一致。再试其他也对应的上,那就能确认下来了。

在这里插入图片描述

2.2. 点亮多个led的逻辑

按照原理图,横排的led负极都短接在一起,纵排的led正极短接在一起。当我们电源正极接③脚,负极接①脚后,虽然亮的只是其中一个led,实际上①、③脚对应的横排和竖排都处于半导通状态。

我们使用这个屏幕可不是只为了点亮某一个led,而是根据实际需要点亮多个led。

比如咱们来实现一个常见的爱心图案:

在这里插入图片描述
根据这个图案,我们需要接通的管脚如表所示

(x,y)列1列2列3列4列5列6列7列8
行1(13,9)(3,9)(4,9)(10,9)(6,9)(11,9)(15,9)(16,9)
行2(13,14)(3,14)(4,14)(10,14)(6,14)(11,14)(15,14)(16,14)
行3(13,8)(3,8)(4,8)(10,8)(6,8)(11,8)(15,8)(16,8)
行4(13,12)(3,12)(4,12)(10,12)(6,12)(11,12)(15,12)(16,12)
行5(13,1)(3,1)(4,1)(10,1)(6,1)(11,1)(15,1)(16,1)
行6(13,7)(3,7)(4,7)(10,7)(6,7)(11,7)(15,7)(16,7)
行7(13,2)(3,2)(4,2)(10,2)(6,2)(11,2)(15,2)(16,2)
行8(13,5)(3,5)(4,5)(10,5)(6,5)(11,5)(15,5)(16,5)

表格里面红色(x,y)代表需要接通的引脚,其中

  1. x: 列引脚,给高电平
  2. y: 行引脚,给低电平
  3. 其他非红色位置不需要点亮,x,y同时给高电平或低电平都行

3. 底层驱动方法:动态扫描

3.1. 底层驱动方式确定

因为led灯的两极短接在一起,所以不可能一次性通过控制16个管脚的高低电平来点亮咱们的爱心图案。

根据前面学习数码管的知识,需要使用动态扫描机制来实现。遗忘的话可以回看一下: MicroPython-On-ESP8266——数码管的使用,四位数码管及动态扫描显示

具体到咱们这个8x8点阵来说呢,可以依照按行扫描的方式来逐行点亮对应的位置,通过快速循环而让人眼看到需要的图案。

3.2. 底层驱动代码

伪代码:

# 初始
引入GPIO库
初始需要的开发板引脚为输出状态

# 准备工作
定义行列需要显示爱心图案的管脚
所有行列管脚都置为高电平  # 没有电位差整体不亮
 
# 按行扫描点亮该行需要位置的led
while 1:
	for 行y in [1 ~8]:
	    for 列x in [1 ~8]:
	        根据爱心对应位置,不需要点亮时,'列x'置为低电平
   	        根据爱心对应位置,需要点亮时,'列x'置为高电平
	    '行y'管脚置为低电平  # 亮起本行指定的led
    	'行y'管脚置为低电平  # 熄灭本行

3.3. 实际上层驱动

为什么说这里又是“底层”,又是“上层”的。这个概念是相对的。

底层:也就是直接跟点阵屏幕的16个管脚相连的GPIO,需要使用上面咱们分析出来的动态扫码的机制(可以按行也可以按列来扫描)

上层:因为ESP8266能作为GPIO输出的引脚不够16个,需要借助其他模块来辅助转化为16个GPIO。相应的,上层的编码方式就可以不拘泥于动态扫描了,可以根据实际使用的驱动IC来调整实现方式。

点阵屏专用的驱动IC实在是太多,咱手上资源有限,后面就实验一下595锁存器和MAX7219来驱动点阵屏。

那么上下层之间如何更换的衔接呢,或者说我想随意输出一个想要的字符(8x8暂时显示不了中文,中文问题后续再提),那这个字符怎么来?怎么转换成上层想要的编码?又如何由上层发送给下层去驱动点阵屏呢?

有问题就好办,先解决字符怎么来的问题。

4. 显示图案取模

4.1. 取模软件

为了在点阵屏上显示出我们需要的图案(无论是数字、字母、符号,都是一个组合图案),就像前面画的那个爱心一样,点亮需要位置坐标上的led,其他的不亮,那就得到结果了。

8x8LED,我们直观的把它看做8x8=64个像素点,那么想要指定的图案这个问题就转换为该点亮哪些坐标的像素问题,也就是像素取模问题。

前面写了一篇介绍OLED屏幕的文章,MicroPython-On-ESP8266——OLED屏幕的使用方法(含显示中文) 其中有介绍到使用PCtoLCD2002这个取模软件来绘制需要的字符并生成字库。那咱么8x8LED也一样用这个来实现。

4.2. 实现方式

新建一个8 * 8像素的图案,用鼠标点击出爱心图形。字模选项可以按如图方式进行设置。其实,取模方式和取模走向完全可以自主决定,只不过要根据自己的配置去调整接线方式和实现代码了。

在这里插入图片描述

通过上面的配置,我们生产出来的字模呢,结果只是列码。

{0x00, 0x66, 0x99, 0x81, 0x42, 0x24, 0x18, 0x00}

因为我们选择的是“行列式”,相对于行需要由我们自行控制,可以像前面学习4段数码管时一样,把每段当作这里点阵屏的一行。数码管的位码就跟这里的列码对应起来了。数码管显示数字或字母时位码是固定的,我们这里需要显示自由图案,列码就从取模软件里面拿就行了。

4.3. 上层驱动代码

伪代码

# 定义由何种产生驱动16个点阵屏管脚的方式,并初始相应的GPIO

# 逐行编码,相当于拉低当前行的电平,配合列码就能显示当前行需要的led,其他行高电平都不亮
row = [
    0x7F,  # 01111111
    0xBF,  # 10111111
    0xDF,  # 11011111
    0xEF,  # 11101111
    0xF7,  # 11110111
    0xFB,  # 11111011
    0xFD,  # 11111101
    0xFE,  # 11111110
]
# 逐列编码,这里就是对应不同行时,列led的亮灭
col = [
    0x00,  # 00000000
    0x66,  # 01100110
    0x99,  # 10011001
    0x81,  # 10000001
    0x42,  # 01000010
    0x24,  # 00100100
    0x18,  # 00011000
    0x00,  # 00000000
]

while True:
    取出整行、整列的编码,再把该编码去驱动底层代码(见上)控制每个led的亮灭
    # 由于取模时采用的逆向走向,所以一般处理整行/列的编码时,从低位处理到高位

到这里原理部分就写这么多吧,接下来咱们下篇就是实操了,把点阵屏整亮,并先从简单的展示一个爱心图案开始玩起。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【用户画像】Redis的简介和安装

文章目录一 Redis简介1 应用场景(1)业务系统:配合关系型数据库做高速缓存(2)大数据场景:缓存数据(3)大数据场景:临时数据(4)大数据场景&#xff1…

【计算机毕业设计】医院管理系统源码

一、系统截图(需要演示视频可以私聊) 一.摘要 目前各医疗机构中,绝大部分中小型医疗机构内部没有实现任何信息化管理,医院临床信息,业务流程的数据依然采取纸质记录,造成数据容易丢失&#xff…

CCSP通过经验 | 讲义覆盖的知识点更全面(含题型分析)

我一直就职于国内网络安全乙方,自2014年接触云安全后,一直希望能获取一个比较官方的云安全从业水平的资格证书。 在横向比较了如腾讯云、华为云、阿里云以及国外如亚马逊云认证后,在没有明确就职意向的情况下,选择了ISC2的认证资…

如何用等价类划分法设计测试用例, 来测试程序的日期检查功能?

某学籍排查系统要求学生输入入学日期,日期限制在2008年9月至2012年7月,即系统只能对该段期间内的学籍进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字 字符组成,前四位代表年&#xf…

多环境 运维

启动dev 同时包含 下面的 MVC DB 做配置时 如果 遇到相同参数 后加载的 覆盖前加载的 先加载 include 的 active 的是最后加载的 如果需要该 dev 需要该很多 include 换成 group 如果 active 是 dev 则加载dev组 如果 active 是pro 则加载pro组 在pom文件中 设置多环境 &l…

[UE][UE5]像素流送,像素流去掉黑边和按钮

[UE]这里写目录标题1.写在前面01.作者碎碎念02.结果演示截图视频教程2.需要准备的软件3.步骤01.准备一个打包好的项目02.启动服务器03.连接!去掉黑边和按钮结尾1.写在前面 01.作者碎碎念 2022.11.19初次更新 俺是不是很粗长!老仔细了,全是截图&#xf…

目标检测算法——YOLOv5/YOLOv7改进|结合涨点Trick之ASFF_Detect(自适应空间特征融合)

>>>深度学习Tricks,第一时间送达<<< 🚀🚀🚀NEW!!!魔改YOLOv5/YOLOv7目标检测算法来啦 ~ 💡💡魔法搭配计算机视觉领域各类创新新颖且行之有效的网络结构,平均精度均值mAP涨点明显,实验效果也俱佳。有需要的小伙伴可以在CSDN后台留言+点赞收藏…

Linux环境搭配

Linux环境搭配 文章目录Linux环境搭配1.Linux背景介绍1.1 系统发展史1.2 开源与官方网址1.3 企业Linux应用现状1.4 Linux发行版本2.Linux环境搭配2.1 Linux环境搭配方式2.2 服务器购买2.3 云服务器配置3.Linux远程登陆3.1 Linux桌面3.2 远程登陆工具3.3 Xshell登陆服务器(单用户…

开放式无线运动耳机怎么挑选,适合在运动佩戴的几款耳机推荐

作为一个运动爱好者而言&#xff0c;耳机是可以堪称灵魂伴侣&#xff0c;好比如在健身房运动的时候可以一边戴着耳机&#xff0c;一边在跑步机上刷着剧&#xff0c;不仅能将两小时的需求量直接浓缩为一小时的使用量&#xff0c;想想都觉得自己赚到了&#xff0c;但是在耳机选购…

Windows11 Android开发相关记录(持续更新...)

Windows11 Android开发相关记录&#xff08;持续更新…&#xff09; 本章节主要记录安装好Windos系统后开发环境搭建及其心得。 以及开发常用软件和相关配置。 以下属于个人做法&#xff0c;仅供参考&#xff1a; 文章目录Windows11 Android开发相关记录&#xff08;持续更新…

【计算机网络】Tomcat和Servlet基础知识汇总

目录 1.Tomcat&#xff1a; 2.Servlet&#xff1a; 1.Tomcat&#xff1a; Tomcat是一个HTTP的服务器&#xff0c;本质上就是一个TCP服务器&#xff0c;只不过加上了一些按照HTTP协议格式进行解析/构造这样的代码。学习Tomcat的目的就是能够熟练掌握Tomcat api&#xff0c;基…

公司的这种打包启动方式,我简直惊呆了

前言 大家都知道&#xff0c;SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到的全部依赖&#xff0c;启动也非常简单&#xff0c;java -jar xxx.jar即可。 但是我们公司打出的最终包&#xff0c;将依赖包挪到了外部&#xff0c;然后启动的时候通过loader.path指定依赖包…

第1章 数据库及其表的自动生成与前言

001 RootEntityTkey<Tkey>、BlogArticle RootEntityTkey<Tkey>&#xff1a;该实体类以泛型形式&#xff0c;定义了当前程序中所有实体的自增型主键。 BlogArticle&#xff1a;继承了RootEntityTkey<Tkey>&#xff0c;通过该实体类及其属性成员&#xff0c;用…

基于sklearn的机器学习实战

本文目录如下&#xff1a;LinearRegression线性回归入门数据生成定义模型模型测试与比较多项式回归具体实现LogisticRegression算法思想简述算法实现Decision TreeMLPSVM线性SVM多项式核高斯核对比不同核在Mnist上的效果读取数据高斯核多项式核线性核NBayesbagging与随机森林Ad…

适用于Linux的6个最佳Python IDE

早在 1991 年&#xff0c;当Guido van Rossum第一次引入 Python 时&#xff0c;他不会想到 Python 的未来发展这么好。现在我们在这里规模地使用Python构建项目。根据 2022 年的一份报告&#xff0c;Python 在全球拥有 29.53% 的份额&#xff0c;位居榜首。 Python 的设计牢记…

④开启shift后门实验报告

班级 计科1班 姓名 彭彭头 学号 时间 2022.05.13 成绩 实验项目名称 开启shift后门 实验目的 1、了解常用入侵主机的方法 2、掌握操作系统常见漏洞&#xff0c;并学会防范 实验内容 利用Windows7系统的shift漏洞&#xff0c;开启后门。 实验环境 操作系统&a…

分布式前修课:Zookeeper锁实现方式

前言 聊完MySQL和Redis&#xff0c;我们接下来在聊一聊Zookeeper。相信大家都已经发现了&#xff0c;这些都是我们在开发过程非常常用的技术。搞定他们&#xff0c;一切难题都不在话下。 Zookeeper&#xff0c;盘它 官网是我们学习某一种技术框架的第一手资料&#xff0c;通…

JAVA泛型

泛型的由来 因为JAVA中假如构建了一个object集合&#xff0c;在集合里存储任何的数据类型对象&#xff0c;定义了一个字符串&#xff0c;又定义一个常数。呢么在遍历数组Arraylist的时候&#xff0c;在代码行里并不会报错&#xff0c;但是运行之后会出现ClassCastException异常…

传奇私服开服架设教程 传奇服务端设置教程

首先开区要使用两个必备的软件&#xff1a;DBC2000、传奇引擎&#xff0c;当然也少不了传奇服务端(传奇服务端在论坛免费服务端和商业服务端中有下载)。 先把下载好的服务端解压到D盘或者某个般的根目录(所谓根目录&#xff0c;就是D盘或E盘&#xff0c;不是D盘和E盘的某个文件…

TCN代码详解-Torch (误导纠正)

1. 绪论 TCN网络由Shaojie Bai&#xff0c; J. Zico Kolter&#xff0c; Vladlen Koltun 三人于2018提出。对于序列预测而言&#xff0c;通常考虑循环神经网络结构&#xff0c;例如RNN、LSTM、GRU等。他们三个人的研究建议我们&#xff0c;对于某些序列预测&#xff08;音频合…