ZC-CLS381RGB颜色识别+8x8点阵指示——WS2812点阵驱动(中)

news2024/11/26 15:24:32

文章目录

  • 前言
  • 一、WS2812简介
  • 二、WS2812配置说明
  • 三、波形图绘制
    • 1.配置模块
    • 2.控制模块
  • 总结


前言

  RGB888点阵是一个由64个WS2812 RGB LED灯珠组成的点阵显示屏,可以用于艺术装饰、玩具和游戏、时钟计时器和状态指示器等各种场景。
  本文将向各位读者展示,如何利用FPGA驱动该8x8点阵显示屏,使得点阵显示特定的字符信息。

一、WS2812简介

  WS2812 RGB LED灯珠广泛应用于LED灯带、室内和户外装饰照明、信号指示灯、车载设备等方面,由于它可以通过简单的控制器控制多个LED灯珠的颜色和亮度,因此具有非常广泛的市场前景。

二、WS2812配置说明

  根据WS2812特性可知,要实现8x8图像的显示,就必须要配置64x24个数据,在设计中可以把配置64个数据和配置24个数据这两部分分开,在设计时,可以分成三个模块来实现此功能:配置模块、控制模块和顶层模块。
  配置模块用来指示需要配置的是64个RGB LED灯中的哪一个,并提供开始配置信号和待显示的24位图像信息,将上述信号提供给控制模块完成对LED灯显示与色彩信息的配置。
  控制模块用来配置配置模块发送过来的24位图像信息,对每一位进行解码然后按照特定格式发送“0”或者发送“1”,当配置完成24x64个数据并持续一段时间的低电平复位,就能够驱动8x8点阵显示了。
  顶层模块用来级联配置模块和控制模块,此处不再过多叙述。
  发送的“0”码或者“1”码配置规则如下图所示:
在这里插入图片描述
  在本设计中,设定发送“0”码的总时间为1180ns,其中高电平占据300ns;发送“1”码的总时间为1280ns,其中高电平占据640ns;复位总时间为300us。

三、波形图绘制

1.配置模块

  配置模块信号波形图如下图所示:
在这里插入图片描述
  如图所示,cfg_start信号为控制模块每完成一个24bit数据的配置,就发送拉高信号告知配置模块可以开始配置下一个24bit数据了。需要注意的是,cnt_wait信号为上电等待信号,这里人为设定等待20ms等待电源电压稳定、器件初始化和内部元件自适应调节,等待完成之后拉高start_en,指示器件开始工作。cfg_num是指示配置了多少个LED灯,cfg_data是指示需要向该LED灯里面写入什么数据去配置它,ws2812_start是控制模块的开始配置信号,与cfg_num和cfg_data是保持同步的。

2.控制模块

  控制模块状态转移图如下图所示:
在这里插入图片描述
  如图所示,初始时控制模块状态为空闲IDLE状态,即不进行任何数据的配置,当检测到配置模块发送的开始信号时,空闲状态就会跳转到仲裁ARBIT状态,仲裁状态仲裁发送的24位数据,每一位应该是发“0”还是发“1”,每一次发“0”或者发“1”完成后,又重新回到仲裁状态仲裁下一个数据的发送状态(“0”或“1”).当发送完成64x24个数据时,表明一副8x8图像数据配置完成,此时跳转都复位RST状态,数据持续发送一段时间低电平,结束后又重新回到空闲IDLE状态等待配置模块的开始信号到来,再继续开始配置。
  控制模块信号波形图如下图所示:
在这里插入图片描述
  如图所示,cfg_data为待配置的24位数据,这里为了描述状态的跳转,假设配置的前两位数据分别位“0”和“1”,cfg_num初始为不定态,表示配置的是哪一个LED灯是不关心的,ws2812_start为该模块的开始工作信号。
  skip_en_0为仲裁状态跳转到发“0”码状态的跳转信号,或者是发“0”码状态跳转到仲裁状态的跳转信号;skip_en_1为仲裁状态跳转到发“1”码状态的跳转信号,或者是发“1”码状态跳转到仲裁状态的跳转信号;skip_en_rst为发“0”码或者“1”码状态跳转到复位状态的跳转信号,或者是复位状态跳转到空闲状态的跳转信号。
  n_state为次态,c_state为现态,两者具有一个时钟周期的差异。cnt_wait为全局计数器,计数仲裁、发“0”码或者“1”码、复位状态的时间,data为解码得到的24bit待配置数据的每一位数据,cnt_num位配置的数据个数,最多配置24个数据。
  led_data为输出信号,根据led_data高低电平持续时间不同,用来指示配置的LED灯不同的色彩信息。如图所示,发送“0”码总时间为SEND_ZERO_time+ARBIT_time=1180ns,高电平占据300ns;发送“1”码总时间为SEND_ONE_time+ARBIT_time=1280ns,高电平占据640ns。
  cfg_start为输出给配置模块的开始配置信号,该信号在控制模块每配置完成24bit图像数据时会拉高。

总结

  本文介绍了如何利用FPGA驱动RGB888点阵显示屏显示特定的字符信息,详细阐述了配置模块和控制模块之间的协作关系,以及两个模块之间的信号传递图示以及每个信号的作用。下一章演示颜色识别与RGB88点阵关联效果。

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

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

相关文章

漏洞复现--安恒明御安全网关文件上传

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

思维训练1

题目描述2 Problem - A - Codeforces ​ 题目分析 思路一: 由于是连续的数,我们可以使用f1, f2, f3来记录连续数的开头数字,只可能有三种情况 ①开头数为第一个数-1 ②开头数为第一个数 ③开头数为第一个数1 分别观察这三个情况&…

osWorkflow-1——osWorkflow官网例子部署启动简单使用(版本:OSWorkflow-2.8.0)

osWorkflow-1——osWorkflow官网例子部署启动简单使用(版本:OSWorkflow-2.8.0) 1. 前言——准备工作1.1 下载相关资料1.2 安装翻译插件 2. 开始搞项目2.1 解压 .zip文件2.2 简单小测(war包放入tomcat)2.3 导入项目到 I…

2023年信息科学与工程学院学生科协第一次软件培训

2023年信息科学与工程学院学生科协第一次软件培训 文章目录 2023年信息科学与工程学院学生科协第一次软件培训运行第一个代码(“Hello World!”)初识C语言代码的具体结构头文件(主)函数 输入与输出scanf函数printf函数转义字符 变量的定义进一…

如何选择全面型企业备份软件以提高数据可用性?

通常,备份数据是指服务器正在运行的工作负载所需的所有数据。这可以包括文档、媒体文件、配置文件、机器映像、操作系统和注册表文件。本质上,您想要保留的任何数据都可以存储为备份数据。 在日益数字化的商业环境中,数据备份对于组织的生存…

C语言复杂表达式与指针高级

一、指针数组与数组指针 1.指针数组VS数组指针 (1)指针数组:实质是一个数组,因为这个数组中传参的内容全部是指针变量。 (2)数组指针:实质是一个指针,这个指针指向一个数组 2.分析指…

C语言,打印指定大小的X

要打印一个X,无非是在一个二维数组一个矩形中操作,将不是X的部分赋值为空格字符,将是X部分打印为*字符。 矩形的边长就是输入的n,由于矩形的边长是不固定的,所以要找到应该被赋值为*的坐标之间有什么数学关系。 以矩…

宏电股份AI BOX新产品首次亮相2023中国移动全球合作伙伴大会,以创新性AI、5G技术推动数实共生

10月11-13日,2023中国移动全球合作伙伴大会在广州开幕,本次大会以“算启新程,智享未来”为主题,作为中国移动多年来的重要合作伙伴,宏电股份AI BOX新产品在大会上首次精彩亮相,并重点展示了5G Redcap工业智…

格雷码加相移三维重建

之前所做的三维重建系统基本上都是基于多频率外差 的方法 (交流方式可以点这个链接),最近整理了一下格雷码加相移的算法,与多频外差相比格雷码在对反光物体的重建效果稍微好一点,也可以投诉更少的图像 。采用6介互补格…

Python使用Selenium库如何绕过Cloudflare验证,网页请确认你是不是机器人

大家好,我是淘小白~ 前段时间使用selenium库写chatGPT的脚本,遇到过一个问题,那就是cloudflare的机器验证,让你点击确认不是机器人,这个问题最后找人解决掉了,我也是百度了很久没找到答案,B站找…

053:mapboxGL中sources的6种类型及各类型的示例代码

第053个 点击查看专栏目录 本篇文章是mapbox的source的归纳总结。 mapbox中 sources 是什么 sources:数据源集合(必填,用于包含一系列数据源 source,这些数据源提供了在地图上显示的数据) sources 是对象 {} 的形式,其属性名就是 数据源的名称(或者说 数据源的 id),…

网络基础初谈

0.一些无关紧要的心里话 ​ 一转眼学习计算机知识已经一年多了,中间起起伏伏,断断续续,但还算好也是坚持到了今天,之所以把这些基础知识写成一个系列,一方面方便知识巩固,另一方面至少还有三三两两的几个朋…

Linux命令之chpasswd命令

一、chpasswd命令简介 chpasswd命令用于同时更改多个用户的密码。它可以从标准输入或指定的文件中读取用户名和密码的组合,并将其应用于系统中的用户。chpasswd命令通常用于批量更改用户密码,特别是在自动化脚本或批处理任务中,该命令需要roo…

ERP系统供应商协同:优化企业供应链管理

一、ERP系统供应商协同的概念和功能 供应商协同是指在供应链中,企业与供应商之间通过ERP系统进行紧密合作和信息共享,实现供应链各个环节的协调和优化。ERP系统供应商协同功能涉及以下方面: 1. 供应商管理:ERP系统提供完善的供应…

华为云云耀云服务器L实例评测|windows系统3389防爆破之安全加固教程

为什么要选择华为云云耀云服务器L实例: 华为云在全国范围内建立了多个数据中心,这些数据中心之间相互冗余,以确保高可靠性和可用性,用户可以选择最适合的区域来部署应用程序,以实现更好的性能和延迟。 相对于传统的物…

选择什么电容笔比较好?平板手写笔推荐

由于苹果Pencil的热销,让华国内市场上,也出现了不少的平替式电容笔,这些产品,有好有坏,价格也很公道。不过,也有很多产品的价格都很平价。我是一个拥有多年经验的数码发烧友,在前几年就开始用上…

docker安装和docker安装RabbitMQ

docker安装 执行命令,先查看是否有Docker docker --version 如果想要删除:yum -y remove docker-ce 如果没有需要安装: 1.执行命令,实现Docker安装 yum install -y yum-utils yum-config-manager --add-repo http://mirrors.…

数组模拟堆实现堆排序

文章目录 QuestionIdeasCode Question 输入一个长度为 n 的整数数列,从小到大输出前 m 小的数。 输入格式 第一行包含整数 n 和 m 。 第二行包含 n 个整数,表示整数数列。 输出格式 共一行,包含 m 个整数,表示整数数列中前 m …

如何选择安全可靠的跨网文件安全交换一体机?

各行各业为了保护核心数据,绝大多数企业采取的第一个步骤是将企业内网与互联网进行隔离,将内部数据“困在”内网,同时也能够有效屏蔽外部网络攻击的风险。较大规模的企业,比如金融、政府、集成电路等行业机构,还可能对…

UE5----使用C++的项目重新打开后东西丢失

最近开始学习c编写代码,发现在场景里放置了Actor后,第二天打开项目,场景里边的放的球啊啥的东西没有了,蓝图类也丢失了父类。 解决方案: 不在Epic里打开虚幻引擎,在VS中打开。点击这个小绿三角&#xff0…