在proteus中仿真arduino驱动点阵屏matrix-led

news2024/12/23 22:15:23

我们都知道,如果我们仅仅在某个时间段点亮一个数码管是没有任何困难的,但如果我们点亮多个数码管就会出现问题,因为多个数码管都使用着同样的端口来控制数码管的各个段的亮灭。所以,就会用上一个很重要的方法,对,这个方法就是视觉暂离(人的视觉暂留是0.05~0.2秒),也就是利用它我们就可以让人眼看起来,多个数码管是同时点亮的。

下面我们要介绍的点阵屏(led-matrxi)要显示多种图形,也必须用到这种视觉暂留的方法。下面我们从点阵屏的一般使用开始来了解点阵屏显示各种花样图形的显示方法。

文章目录

  • 一、点亮点阵屏的接线方法
    • 1、如何点亮
    • 2、显示图形的尴尬
  • 二、图形显示的实现
    • 1、图形显示实现的原理
    • 2、简单的图形实现
    • 3、实现代码

文章出处:https://blog.csdn.net/haigear/article/details/131524893

一、点亮点阵屏的接线方法

1、如何点亮

首先,我们在器件库中找到matrix-8x8-Green,如下图,这里要特别注意两点:
1、上面是控制行,下面是控制列;
2、行必须接负极(GND),列必须接(POWER)正极
在这里插入图片描述
那么,我们发现,第三行的第二和第三列成功被点亮。
像这样,如果我们只是选择点亮某个nxm的阵列是很容易的,正负极分别接上n个行和m个列,如下图(4x3阵列):
在这里插入图片描述

2、显示图形的尴尬

但如果,我们想显示一个图形,哪怕最简单的数字“0”的图形,恐怕就会没有一条路可以行得通。看起来只是去掉最中间的那个点即可,如下图一样:
在这里插入图片描述
这个显示如何做到的呢?很直白的告诉你,上面的图是PS合成的,并不可能用上面的接线实现。
那我们如何才能够实现呢??那就要用到文章开头我们提到的视觉暂留的方法了。

二、图形显示的实现

1、图形显示实现的原理

要实现我们需要显示的图形,方法只有一个,就是使用视觉暂留,即在非常短的时间内(至少0.2秒内)使我们需要亮灯的点都点亮一次即可,不论他们的点亮顺序如何,只要点亮即可,我们的人眼,自然就会觉得这个点被点亮了。当然,后面至少每间隔0.2秒又要点亮一次,这样就实现了我们想要的效果了。

2、简单的图形实现

要实现视觉暂留时间内的亮灭控制,那非得有单片机来控制,这里我们就使用了arduino来控制。这里使用的芯片仍然是328p,有点麻烦的是点阵屏需要用到8x2个端口,所以这里我们将arduino的模拟端口也只好用上,否则13个数字端口是不能满足要求的。电路连接如下:

在这里插入图片描述
运行的效果:

在这里插入图片描述

3、实现代码

int row[10]={2,2,2,3,4,5,5,5,4,3};
int col[10]={2,3,4,4,4,4,3,2,2,2};

void setup () {

// TODO: put your setup code here, to run once:
	for(int r=0;r<8;r++)
	{
	pinMode(r,OUTPUT);
	digitalWrite(r,1);
	}

	for(int c=8;c<16;c++)
	{
	pinMode(c,OUTPUT);
	digitalWrite(c,0);
	}

}

void loop() {

// TODO: put your main code here, to run repeatedly:

for(int i=0 ;i<10;i++)
{
	digitalWrite(row[i],0);
	digitalWrite(col[i]+7,1);
    delay(0.2);
    digitalWrite(row[i],1);
	digitalWrite(col[i]+7,0);
}

}

上面的方法实现的图形,思路简单,但操作起来,要得到图形的引脚代码也是比较麻烦的,换一个图形我们就需要一个个点来用数组描述他们的正极和负极引脚。
所有,我们后面将继续介绍,使用编码生成器来解决,然后,为了节约管脚,我们可以考虑使用max7219芯片来实现扫描来实现。

感兴趣的童鞋可以继续关注
创作不易,转载请注明出处,文章出处:https://blog.csdn.net/haigear/article/details/131524893

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

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

相关文章

使用javaScript脚本生成openFoam网格

简介 OpenFoam的首选网格生成器是blockMesh。blockMesh可以根据blockMeshDict这个字典中的信息生成openFoam网格。但是有时候需要修改网格&#xff0c;而网格中的几何点之间又存在约束关系&#xff0c;如果手动修改blockMeshDict那么工作量将是巨大的&#xff0c;所以有必要使…

有没有免费提取音频的软件,分享几个给大家!

在日常生活中&#xff0c;我们经常遇到需要从视频中提取音频的情况&#xff0c;无论是为了制作音频片段、录制语音笔记还是进行后期编辑。本文将介绍三种免费提取音频的方法&#xff0c;分别是记灵在线工具、PR&#xff08;Adobe Premiere Pro&#xff09;和剪映。通过这些方法…

【Vue3】学习笔记-自定义hook函数

概念 什么是hook? 本质是一个函数&#xff0c;把setup函数中使用的Composition API进行了封装。 类似于vue2.x中的mixin。(但是mixins会组件的配置项覆盖。vue3使用了自定义hooks替代mixnins&#xff0c;hooks本质上是函数&#xff0c;引入调用。) 自定义hook的优势: 复用代…

PPU (power policy unit)

写在前边 最近在做低功耗验证&#xff0c;项目中涉及到PPU这一块儿&#xff0c;在家查了好久资料&#xff0c;发现能找到的有价值的文章真的好少&#xff0c;机缘巧合之下&#xff0c;让我找到下边总结&#xff0c;分享出来&#xff0c;希望对和我有相同境遇的小伙伴带来帮助&a…

每周学点数学 2:概率论基础1

泊松分布、正态分布、二项分布 文章目录 1.概率论学习中的重难点2.主要工具介绍1. Python2. MATLAB3. R4. Octave5. Microsoft Excel6. 统计软件 3.理论内容概览&#xff08;前两点&#xff09;1. 概率2. 概率分布 注&#xff1a;本文适用于在在数学建模的应用中&#xff0c;回…

牛客网基础语法101~110题

牛客网基础语法101~110题&#x1f618;&#x1f618;&#x1f618; &#x1f4ab;前言&#xff1a;今天是咱们第十期刷牛客网上的题目。 &#x1f4ab;目标&#xff1a;对打印图案做到有手就行。 &#x1f4ab;鸡汤&#xff1a;与其花时间应付以后不理想的生活&#xff0c;不如…

学习c++ Part02

学习c Part02 前言1.函数注意点&#xff1a;全局函数&#xff08;默认函数&#xff09;静态函数 2.预处理2.1 变量 3.头文件4.宏函数5.指针5.1 普通变量与指针变量建立关系&#xff1a;5.2 指针初始化5.3 指针变量的注意事项5.3.1 void 不能定义普通变量,void * 可以定义指针变…

SpringBoot源码解析

1.Spring Boot介绍,源码阅读环境搭建,插件安装 2.spring boot 源码解析2-SpringApplication初始化 3.spring boot 源码解析3-SpringApplication#run 4.spring boot 源码解析4-SpringApplication#run第4步 5.spring boot 源码解析5-SpringApplication#run第5步 6.spring boot 源…

springboot医院挂号小程序

医院挂号系统 springboot医院挂号系统小程序 java医院挂号小程序 技术&#xff1a; 基于springbootvue小程序医院挂号系统的设计与实现 运行环境&#xff1a; JAVA版本&#xff1a;JDK1.8 IDE类型&#xff1a;IDEA、Eclipse都可运行 数据库类型&#xff1a;MySql&#xff08;…

在线教育场景下客户端实践与优化——RTC服务在线教育

在线教育场景下对提供稳定、高质量的音视频服务提出了非常高的要求。而不断推陈出新的课堂形式以及新技术的应用&#xff0c;使得好未来自研音视频SDK面临更多的挑战。 LiveVideoStackCon 2022北京站邀请到好未来音视频开发高级专家郭晓明介绍好未来自研SDK在工程化上所做出的努…

【编译、链接、装载十五】系统调用与API——printf源码分析

【编译、链接、装载十五】系统调用与API——printf源码分析 一、系统调用介绍1、什么是系统调用2、Linux系统调用3、系统调用的弊端 二、系统调用原理1、中断 三、linux下系统调用实现1、 strace 查看可知&#xff0c;printf调用了系统函数write2、gdb调试查看——printf3、gdb…

实践|随机森林中缺失值的处理方法

动动发财的小手&#xff0c;点个赞吧&#xff01; 除了在网上找到的一些过度清理的数据集之外&#xff0c;缺失值无处不在。事实上&#xff0c;数据集越复杂、越大&#xff0c;出现缺失值的可能性就越大。缺失值是统计研究的一个令人着迷的领域&#xff0c;但在实践中它们往往很…

并查集的讲解

什么是并查集&#xff1f; --是一个森林&#xff1b;&#xff08;由多颗树构成的&#xff09; 并查集原理 在一些应用问题中&#xff0c;需要 将 n 个不同的元素划分成一些不相交的集合 。 开始时&#xff0c;每个元素自成一个 单元素集合&#xff0c;然后按一定的规律将归于…

springboot开启热部署

第一步引入spring-boot-devtools依赖 <!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><!--默认false改依赖是否可以传递&…

【Servlet】如何使用 Servlet 编写第一个 helloword 程序

文章目录 前言一、创建 Maven 项目二、引入依赖三、创建目录四、编写代码五、打包项目六、部署程序七、运行程序总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习…

transforms数据增强

在AI领域的模型训练中通常会遇到模型过拟合问题&#xff0c;通常采取的办法就是数据增强处理&#xff0c;例如在图像处理中&#xff0c;数据增强是指对原始图像进行旋转、缩放、剪切、翻转等操作&#xff0c;以扩大训练数据集的规模&#xff0c;提高模型泛化能力&#xff0c;降…

Gradio HTML组件详解

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

【23-07-03:HTTP协议的结构学习】

目录 HTTP 请求的结构HTTP 请求的整体架构请求方法&#xff08;Method&#xff09;请求路径&#xff08;URI&#xff09;GET 参数&#xff08;Parameters for GET)协议说明&#xff08;Protocol&#xff09;头部字段&#xff08;Headers&#xff09;请求体&#xff08;Body&…

论文与专利查找和下载

例如我想查找和下载视频理解(video understanding)相关论文 路线大纲如下&#xff1a; 一、最主要方式&#xff1a; 大纲&#xff0c;蓝色都是有超级链接的可以直接打开: 第一步 谷歌搜索(英文) 学校的知网(中文)第二步 下载论文(谷歌学术--英文 学校的知网--中文)下载不了…

CMA

文章目录 前言概念功能启用CMA 内存的创建方式一、使用 cmdline方式二、使用 dts CMA 内存分配和释放实例&#xff08;dts 方式&#xff09; 前言 在嵌入式设备中&#xff0c;很多外设&#xff08;如摄像机、硬件视频解码器等&#xff09;需要较大的内存缓冲区&#xff0c;kma…