【51单片机系列】proteus中创建16x16LED点阵

本文参考来源:

  1. Proteus8.6中16x16LED点阵制作教程
  2. 【Proteus】16乘16点阵滚动播放

文章目录

  • 一、测试proteus中的8x8点阵驱动方式
    • 1.1 测试电流通过方向
    • 1.2 测试行列控制接口
  • 二、使用proteus中的8x8点阵制作16x16LED点阵
  • 三、测试制作的16x16LED点阵
  • 四、使用自制的16x16LED点阵元件显示数字和字符

proteus中提供的LED点阵有5x7和8x8的,如下,没有其他尺寸的,但软件可以自制元件,所以可以使用8x8的点阵制作出16x16的点阵。

proteus提供的LED点阵

一、测试proteus中的8x8点阵驱动方式

在proteus中按如下操作找到8x8矩阵,依次左键单击【MATRIX-8X8-BLUE】后双击,可以将多个元件都显示到Selector中。

image-20231212112846998

创建四个8x8点阵,如下。

创建四个8x8LED点阵

使用电源和地就可检测出电流通过方向、上下接口控制行列等。

1.1 测试电流通过方向

为四个点阵添加电源和地,按照如下连接后,开始仿真。如下:

proteus检查LED点阵电流通过方向

从结果显示,红色LED点阵电流方向从上到下,现在把蓝色、绿色、橘色点阵的连接改成如下,进行仿真,如下:

proteus检查蓝色绿色橘色LED点阵电流通过方向

可以得出结论:proteus中的LED点阵,红色的电流通过方向为上->下,蓝色、绿色、橘色的电流通过方向为下->上

1.2 测试行列控制接口

按照如下连接方式可以测试上面的接口控制的是行还是列,结果如下:

proteus检查行列控制接口

从结果可以得出结论:proteus中的LED点阵,红色的上面的接口控制列,下面的接口控制行;蓝色、绿色、橘色的上面的接口控制行,下面的接口控制列。并且接口从左到右依次控制第一行到最后一行或第一列到最后一列。

总结proteus中的8x8LED点阵:电流方向从列->行(1->0),红色的LED点阵接口是上列下行,蓝色、绿色、橘色的LED点阵接口是上行下列

二、使用proteus中的8x8点阵制作16x16LED点阵

使用proteus中的8x8LED点阵制作16x16LED点阵详细步骤如下,这里以橘色为例。

  1. 点击菜单栏【View】,选择【Snap 50th】,如下

1-Snap50th选择

  1. 创建一个橘色的8x8LED点阵,如下

2-创建一个橘色的8x8LED点阵

  1. 分解LED点阵。点击左边工具栏的箭头,将鼠标移到LED点阵上,元件背景出现淡红色时单击右键,选择【Decompose】,如下。

3-分解LED点阵

3-分解LED点阵

  1. 单击左侧工具栏的【S】,如下,显示元件分解后的各个部分。

4-显示元件额各部分

  1. 移除黑色背景。鼠标移动到元件上面,背景出现淡红色时,右键选择【Drag Object】,将黑色背景移动到旁边,给16x16的点阵做背景,如下:

5-移动黑色背景

  1. 复制接口。将下面的接口复制一份,变成16个接口;选中16个接口移动到一旁,复制一份,选中复制的16个接口,右键选择【Y-Mirror】,如下。

6-复制接口

  1. 复制对角线LED。选择【LEDMATRIX_O_0_1】,往左下角对角线方向复制8个圆点,如下

7-复制对角线LED

  1. 分解复制的对角线圆点。点击左侧工具栏的箭头,将鼠标移动到复制的对角线上的圆点上,出现淡红色背景时右键单击,选择【Decompose】;对复制的8个圆点都要做次动作,如下:

8-分解复制的对角线上的圆点

  1. 将分解的标志位移到同一行,如下

9-将分解的标志位移动到同一行

  1. 制作Symbol。选择同一列的标志位和圆点,右键选择【Make Symbol】,输入名称【LEDMATRIX_O_8_1】,其中的‘O’标识Orange。对复制的对角线上的圆点和标志位都执行此操作,名称从8-15,每次输入名称完成后要点击一下左侧工具栏的箭头,如下

10-创建Symbol

全部完成后,在分解的元件部分会得到如下

10-创建的Symbol

  1. 复制对角线上的圆点。选择【LEDMATRIX_O_0_0】,放在浅黄色圆点的上面,重复7、8、9、10步骤,不同在于:这里选择的是【LEDMATRIX_O_0_0】;创建Symbol时输入的名称为LEDMATRIX_O_8_0,从8-15,如下

复制对角线上的圆点

11-复制对角线圆点

分解复制的圆点,并将标志位移动到同一行

11-分解复制的圆点并将标志位移动到同一行

制作Symbol

11-创建Symbol

  1. 复制整个对角线上的点,组成一个16x16的圆点,只复制对角线上的圆点

12-复制对角线上的圆点

最终效果如下,每一行只复制对角线上的圆点

12-16x16圆点效果

  1. 将最左边的标志位移到一旁,选中剩下的标志位和上面一行的接口,删除,将第6步复制的接口分别放到圆点点阵的上方和下方,如下

13-完成接口设置

  1. 设置接口属性。将标志位移动到左上角的接口上,鼠标移动到接口上面,背景出现淡红色时双击,编辑Pin Name。上面的接口从左到右依次是1-16,下面的接口从左到右依次是A-P,如下

14-设置接口属性

  1. 更改元件名称。鼠标移动到【NAME=MATRIX_8X8_ORANGE】,双击,在弹出的窗口中修改属性,将8改成16,接口改为16个,如下

15-更改元件名称

  1. 设置黑色背景。选中背景,移动到圆点点阵的左上角,更改背景大小,使其覆盖16x16个圆点点阵,如下

16-设置黑色背景

  1. 制作元件。选中刚刚制作的全部,右键,选择【Make Device】,在弹出的窗口中一直惦记【Next】,知道Next为灰色的,选择将元件放到某个库中。参考博文中将元件放到DISPLAY中,但制作时发现没有DISPLAY,也可以放到其它的库中。这里我放到USERDVC中。按照如下操作就制作完成了。

17-制作元件

三、测试制作的16x16LED点阵

制作元件完成后,在元件库中就可以找到了,如下,选择该元件,放置在界面上。

查找制作的元件LEDMATRIX-16x16-ORANGE

使用第一节的测试方法,结果如下,接口控制是上列下行,电流方向上->下,从左到右依次控制第一行到最后一行或第一列到最后一列

自制元件的使用方法

为了让元件使用时更清楚,这里把自制的元件做一下更改,具体操作如下。

首先,创建一个自制的16x16LED点阵,鼠标放到元件上,背景是淡红色时右键,选择【Decompose】,点击左侧工具栏的【S】,根据上面的测试可以知道下面的接口控制的是行,那么就将下面的接口移动到左侧,表示控制行,如下

三-更改行控制接口

然后按照制作元件的第17步制作元件,如下

三-制作更改后的元件

此时重新再添加自制的元件发现就会变成如下所示。

三-更改后的元件

四、使用自制的16x16LED点阵元件显示数字和字符

本实验的功能是使用自制16x16LED点阵元件简单显示数字”1“和字符”中“。直接使用51单片机的32个接口连接到LED点阵上,不额外使用其它的模块。proteus中设计如下:

四-自制元件显示数字和字符设计

软件设计如下:

/*实现功能:74HC595芯片控制16x16LED点阵显示数字1和汉字中[2023-12-13] zoya
*/
#include "reg52.h"
#include "intrins.h"
#include "HC595.h"#define GPIO_LED P0// 显示数字 1
u8 hang1[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
u8 hang2[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xfc, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00};
// 显示汉字 中
//u8 hang1[] = {0x00, 0x00, 0x00, 0x1f, 0x11, 0x11, 0x11, 0x7f, 0x11, 0x11, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00};
//u8 hang2[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
u16 lie=0x8000;
// 延时函数,i=1时延时10us
void Delay(u16 i)
{while(i--);
}// 数码管显示函数
void digDisplay()
{u8 i;for(i=0;i<16;i++){P0 = lie>>8;P1 = lie&0xff;P2 = ~hang1[i];P3 = ~hang2[i];Delay(100);lie = _iror_(lie,1);}
}void main()
{while(1){digDisplay();}
}

仿真结果,显示数字“1”如下

四-显示数字1

仿真结果显示汉字”中“如下

四-显示汉字中

红色、蓝色、绿色的16x16点阵也是按这个方法实现。

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

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

相关文章

【Hive】

一、Hive是什么 Hive是一款建立在Hadoop之上的开源数据仓库系统&#xff0c;将Hadoop文件中的结构化、半结构化数据文件映射成一张数据库表&#xff0c;同时提供了一种类SQL语言&#xff08;HQL&#xff09;&#xff0c;用于访问和分析存在Hadoop中的大型数据集。Hive的核心是将…

Collecting Application Engine Performance Data 收集应用程序引擎性能数据

You can collect performance data of any specific SQL action of an Application Engine program to address any performance issue. 您可以收集应用程序引擎程序的任何特定SQL操作的性能数据&#xff0c;以解决任何性能问题。 You can collect performance data of the S…

LeetCode 每日一题 Day 11||贪心

2697. 字典序最小回文串 给你一个由 小写英文字母 组成的字符串 s &#xff0c;你可以对其执行一些操作。在一步操作中&#xff0c;你可以用其他小写英文字母 替换 s 中的一个字符。 请你执行 尽可能少的操作 &#xff0c;使 s 变成一个 回文串 。如果执行 最少 操作次数的方…

【虹科分享】基于Redis Enterprise,LangChain,OpenAI 构建一个电子商务聊天机器人

如何构建你自己的商务聊天机器人&#xff1f;注意哦&#xff0c;是你自己的聊天机器人。一起来看看Redis Enterprise的向量检索是怎么帮你实现这个愿望的吧。 鉴于最近人工智能支持的API和网络开发工具的激增&#xff0c;似乎每个人都在将聊天机器人集成到他们的应用程序中。 …

HAProxy 根据报文解析来定义不同的acl

1 .在 HAProxy 中使用 ACLs&#xff08;Access Control Lists&#xff09;检查 TCP 报文内容时&#xff0c;你可以使用 payload 关键字。以下是一个例子&#xff0c;演示如何在 HAProxy 的 ACL 中使用 payload&#xff1a; frontend my_frontendbind *:80mode tcpacl payload_h…

原生cesium、mars3d、supermap-cesium在vue3+vite中引入

1. 原生cesium 需要下载 yarn add cesiumyarn add vite-plugin-cesium2. mars3d 需要下载 yarn add mars3d mars3d-cesiumyarn add vite-plugin-mars3d3. supermap-cesium 只需要引入官网下载的包&#xff0c;build文件夹下的cesium&#xff0c;以及项目中引入的其他cesiu…

【深度学习】PHP操作mysql数据库总结

一.PHP数据库的扩展分类 1.MySQL 扩展是针对 MySQL 4.1.3 或更早版本设计的&#xff0c;是 PHP 与 MySQL数据库交互的早期扩展。由于其不支持 MySQL 数据库服务器的新特性&#xff0c;且安全性差&#xff0c;在项目开发中不建议使用&#xff0c;可用 MySQLi 扩展代替。 2.MySQ…

Android BottomSheetBehavior(底部弹窗)

目录 一、BottomSheetBehavior 介绍 二、BottomSheetBehavior 基本使用 2.1 在 CoordinatorLayout 中添加底部工作表&#xff1a; 2.2 在代码中获取 BottomSheetBehavior 实例&#xff1a; 2.3 设置工作表的状态&#xff0c;如展开、折叠等 2.4 工作表的状态 三、Bottom…

嵌入式系统未来的发展趋势走向???

人工智能和机器学习应用 模型优化&#xff1a; 为了在资源有限的嵌入式系统上运行&#xff0c;将会看到更多的努力投入到精简、优化和量化模型&#xff0c;以适应边缘计算的环境。 边缘推理&#xff1a; 嵌入式设备将更多地执行本地推理&#xff0c;而不是将所有数据发送到云端…

Android原生 MQTT开发

一、引包 1.1.模块的build.gradle //mqtt框架implementation org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0implementation org.eclipse.paho:org.eclipse.paho.android.service:1.1.1implementation org.bouncycastle:bcpkix-jdk15on:1.59 1.2 旧版AndroidStudio开…

【设计模式--行为型--命令模式】

设计模式--行为型--命令模式 命令模式定义结构案例优缺点使用场景 命令模式 定义 将一个请求封装为一个对象&#xff0c;使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通&#xff0c;这样方便将命令对象进行存储&#xff0c;传递&#xff0c;调用…

Springboot整合Redis实现消息发布订阅

一、前言 有时候在实际项目中&#xff0c;某些业务场景下我们需要使用消息的发布订阅功能&#xff0c;以实现某些特殊的需求&#xff0c;那么我们实际上可以有多种选择&#xff0c;比如使用常见的消息中间件Rabbitmq&#xff0c;Kafka&#xff0c;Activemq等&#xff0c;但这几…

Nodejs 第二十四章(zlib)

在 Node.js 中&#xff0c;zlib 模块提供了对数据压缩和解压缩的功能&#xff0c;以便在应用程序中减少数据的传输大小和提高性能。该模块支持多种压缩算法&#xff0c;包括 Deflate、Gzip 和 Raw Deflate。 zlib 模块的主要作用如下&#xff1a; 数据压缩&#xff1a;使用 z…

07--面向对象OOP--02

学习面向对象内容的三条主线 Java类及类的成员&#xff1a;&#xff08;重点&#xff09;属性、方法、构造器&#xff1b;&#xff08;熟悉&#xff09;代码块、内部类面向对象的特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09;其他关键字的使用&#xff1a;…

城轨线路列车时刻表与车站客流控制协同优化方法

文章信息 论文题目为《城轨线路列车时刻表与车站客流控制协同优化方法》&#xff0c;该文于2021年发表于《交通运输系统工程与信息》上。文章考虑换入客流影响下列车时刻表与客流控制的协同优化问题&#xff0c;以最小化乘车延误人数为目标&#xff0c;以列车时刻表、客流控制和…

前端成神之路-CSS基础选择器

前端成神之路-CSS基础选择器 目录 前端成神之路-CSS基础选择器 CSS选择器&#xff08;重点&#xff09; 1. CSS选择器作用&#xff08;重点&#xff09; 选择器的作用 2. CSS基础选择器 2.1 标签选择器 2.2 类选择器 2.3 类选择器特殊用法- 多类名 2.4 id选择器 id选…

java代码编写twitter授权登录

在上一篇内容已经介绍了怎么申请twitter开放的API接口。 下面介绍怎么通过twitter提供的API&#xff0c;进行授权登录功能。 开发者页面设置 首先在开发者页面开启“用户认证设置”&#xff0c;点击edit进行信息编辑。 我的授权登录是个网页&#xff0c;并且只需要进行简单的…

动物姿态估计:微调 YOLOv8 姿态模型

动物姿态估计是计算机视觉的一个研究领域&#xff0c;是人工智能的一个子领域&#xff0c;专注于自动检测和分析图像或视频片段中动物的姿势和位置。目标是确定一种或多种动物的身体部位&#xff08;例如头部、四肢和尾巴&#xff09;的空间排列。这项技术具有广泛的应用&#…

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】边缘检测(附MATLAB代码实现)

目录 前言 知识储备 数字图像处理(Digital Image Processing) 数字图像处理基础知识与算法

子组件调用父组件的方法

在React中使用函数组件&#xff08;也称为无状态组件&#xff09;和Hooks时&#xff0c;你可以通过以下方式让子组件调用父组件的方法&#xff1a; 1. 使用回调函数&#xff08;Callback Function&#xff09; 这是最常见的方法。当子组件需要调用父组件的方法时&#xff0c;…