八位流水灯的verilog代码_Arduino入门 第七节-彗星灯 呼吸流水灯
在前面的课程中,我们学习了流水灯、呼吸灯的实现方法,本期课程我们将把呼吸灯和流水灯"组合"到一起,做一个"呼吸流水灯"的效果。呼吸流水灯,实际上就是"流星灯",看上去就像一个"拖着尾巴"的彗星(或流星),头部最亮,越往尾部越暗。在实现这个效果的过程中,我们将应用到"流水灯"及"呼吸灯"的一些控制方法,因此给它取名为"呼吸流水灯"。
呼吸流水灯,本质上就是让几个亮度递减的LED在做流水灯一样的流动。在流水灯中"流动"的是LED的"开/关"状态,而在呼吸流水灯中"流动"的则是LED的"亮度"状态,也就是PWM的占空比,因此,LED的控制引脚必须全部具备PWM(DA)的输出能力,本次课程使用了MEGA2560板,它的2-13引脚都具备PWM功能,可以做一个12位的呼吸流水灯。而UNO或NANO板则只有3,5,6,9,10,11这六个PWM输出引脚,则只能做到6位呼吸流水灯。本次课程使用了NANO摇摇棒电路及MEGA2560mini型板,将MEGA2560板的D2-D13依次连接到NANO摇摇棒电路的D1-D12,并且将摇摇棒电路与MEGA2560mini板“共地”,如下图:
下图为呼吸流水灯的效果示意图:
图中的一行代表LED的一组状态,黑色的为熄灭的LED,红色深色的代表高亮度的LED,浅色的代表低亮度的LED。这样的一行,包括了12个LED,我们可以把"一行"看作一个可视的"视界",视界内是我们可以看到的12个LED,视界外我们假设还有一些"看不到"的LED。因此我们可以在5个"亮度"组成的"彗星"的左右两端各加上12个黑点组成一条"亮度分布带",然后我们在"亮度分布带"上滑动12个LED长度的可视"视界",就可以看到如上面图中所示的每一行不同的画面,也就是"彗星"飞过的效果。下面是原理图:
以上的"亮度分布带",实际上就是一系列PWM的值,把这些PWM的值放在一个总长度的29的数组中,然后再以一个长度为12的数组作为"视界","滑动"着在PWM数组中取12个值,每取完一次则将12个PWM状态写入对应的12个LED中,这样即完成了一个方向的"彗星"飞过。为了让"彗星"也能反向飞过,我们可以再建立一个"反向"分布的"亮度分布带",然后"视界"从右往左滑动,即实现了"彗星"的反向飞过。下面是示例代码:
实现"彗星灯"-呼吸流水灯的方法有很多种,以上是比较直观的一种。其他实现方法欢迎各位读者在评论区留言讨论。
八位流水灯的verilog代码_Arduino入门 第七节-彗星灯 呼吸流水灯相关推荐
- e300氛围灯哪里调节_保时捷macan内饰改装升级32色呼吸氛围灯
保时捷MACAN虽然有着不俗的外表,豪华的内饰,但是车内氛围却总还是缺少了那么一丢丢,随着新车的更新,车友对汽车的内饰特别的着重,品味也在逐步提升,汽车氛围灯也随之诞生,目前新车系都几乎标配各种各种的 ...
- Java入门 第七节 类和对象
文章目录 1. 引言 1.1 什么是对象 1.2. 什么是类 2. 类和对象的关系 2.1 计算机怎么描述世界 2.2 类和对象 语法结构 2.3 创建类 和 调用对象 2.4 简单分析对象创建过程 ...
- 基于Proteus无实物STM32入门自学教程(二)--LED流水灯
本教程面向新手,前期没有用到stm32的内部库,源程序尽量使用单文件.方便从51直接转过来的同学有个适应期.proteus仿真stm32总所周知没有51仿真的那么完美.笔者在51年代进行仿真时基本与实 ...
- 【51单片机入门】点亮多个LED流水灯
[51单片机&入门]点亮多个LED流水灯 实验环境 功能实现 PCB原理图 代码 要点 仿真 代码 实验环境 Keil C51 Proteus 8.9 功能实现 LED流水灯依次从右向左亮起, ...
- 【Verilog零基础入门-边看边练】学习笔记——第三讲 组合逻辑代码设计和仿真(补码转换和七段译码逻辑设计)(二)
二.七段译码逻辑设计 所需软件 Verilog编程软件:Lattice Diamond(3.11.0.396.4_Diamond_x64) Verilog仿真软件:ModelSim SE-64 10. ...
- 四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)
移位寄存器总结 一.前言 二.简单循环左移/右移/双向移位寄存器 2.1 简单循环左移/右移/双向移位寄存器 2.2 verilog代码 2.3 Testbench 2.4 仿真结果 三.逻辑移位与算 ...
- 网页版的svn怎样同步代码_学会使用Hdlbits网页版Verilog代码仿真验证平台
大家推荐一款网页版的 Verilog代码编辑仿真验证平台,这个平台是国外的一家开源FPGA学习网站,通过 "https://hdlbits.01xz.net/wiki/Main_Page&q ...
- (67)FPGA面试题-为priority encoder编写Verilog代码,实现MUX4_1
1.1 FPGA面试题-为priority encoder编写Verilog代码,实现MUX4_1 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-为pr ...
- (66)FPGA面试题-为parallel encoder编写Verilog代码,实现MUX4_1
1.1 FPGA面试题-为parallel encoder编写Verilog代码,实现MUX4_1 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-为pa ...
最新文章
- 2019 GDUT Rating Contest I : Problem H. Mixing Milk
- Web设计离不开的4项基本原则
- JavaSE_坚持读源码_ClassLoader对象_Java1.7
- Linux下多网卡MAC配置问题
- 运满满的技术架构演进之路
- Linux打印指定的行范围
- SPICE:过程改进的又一种选择
- C#黔驴技巧之去重(Distinct)
- 草稿 ktv 航版 1211 rs ga 打开文件控件 文件的复制操作
- 装饰模式【设计模式学习-03】
- 《2022爱分析·人工智能应用实践报告》发布:从点到面,人工智能推动企业智能化转型
- 深入浅出理解SVM支持向量机
- java练习题-猜数字游戏
- 用户个人隐私保密协议
- [JAVA]EXCEL工具推荐-MyExcel
- SpringBoot整合RedisTemplate实现缓存信息监控
- STM32CubeMX新建工程+基本IO配置过程
- 淘宝技术发展3(Oracle/支付宝/旺旺)
- yarn install报错及解决办法
- 数据库查询优化(转载)
热门文章
- display 隐藏css,CSS-元素的显示与隐藏
- 快充线与普通线的区别_四种不同线身材质对比:iPhone12首次标配编织线或将引领潮流?...
- c语言程序设计基础广西师范大学漓江学院,广西师范大学漓江学院试卷-计算机基础A方案.doc...
- pymysql使用变化的变量,构造SQL语句
- 配置python程序debug/run,避免每次运行都会重复加载数据集或模型,节约大量等待时间
- tshark查看、指定网卡
- 数据分箱1——人工手动分箱
- python使用logging捕获异常后继续执行函数
- php 模型 关联,PHP模型关联一对多如何给关联表加条件?
- php5.6代码转换7.1,通过PHP5.6源代码在WINDOWS 7下进行编译生成(最详细步骤)