pwm呼吸灯

news2025/1/12 19:53:12

文章目录

  • 一、呼吸灯
  • 二、代码实现
  • 三、引脚分配


一、呼吸灯

呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化,使用开发板上的四个led灯实现1s间隔的呼吸灯。

二、代码实现


```c
module pwm_led( 
    input				clk		,
    input				rst_n	,
    
    output reg [3:0]    led
);								 
parameter CNT_US = 6'd49;//50x20=1000ns=1us
parameter CNT_MS = 10'd999;//1usx1000=1ms
parameter CNT_S  = 10'd999;//1msx1000=1s

reg [5:0] cnt_us;
wire      add_cnt_us;
wire      end_cnt_us;

reg [9:0] cnt_ms;
wire      add_cnt_ms;
wire      end_cnt_ms;

reg [9:0] cnt_s;
wire      add_cnt_s;
wire      end_cnt_s;

reg flag;//闪烁标志
always @(posedge clk or negedge rst_n)begin 
   if(!rst_n)begin
        cnt_us <= 0;
    end 
    else if(add_cnt_us)begin 
            if(end_cnt_us)begin 
                cnt_us <= 0;
            end
            else begin 
                cnt_us <= cnt_us + 1;
            end 
    end
   else  begin
       cnt_us <= cnt_us;
    end
end 

assign add_cnt_us = 1'd1;
assign end_cnt_us = add_cnt_us && cnt_us == CNT_US;

always @(posedge clk or negedge rst_n)begin 
   if(!rst_n)begin
        cnt_ms <= 0;
    end 
    else if(add_cnt_ms)begin 
            if(end_cnt_ms)begin 
                cnt_ms <= 0;
            end
            else begin 
                cnt_ms <= cnt_ms + 1;
            end 
    end
   else  begin
       cnt_ms <= cnt_ms;
    end
end 

assign add_cnt_ms = end_cnt_us;
assign end_cnt_ms = add_cnt_ms && cnt_ms == CNT_MS;

always @(posedge clk or negedge rst_n)begin 
   if(!rst_n)begin
        cnt_s <= 0;
    end 
    else if(add_cnt_s)begin 
            if(end_cnt_s)begin 
                cnt_s <= 0;
            end
            else begin 
                cnt_s <= cnt_s + 1;
            end 
    end
   else  begin
       cnt_s <= cnt_s;
    end
end 

assign add_cnt_s = end_cnt_ms;
assign end_cnt_s = add_cnt_s && cnt_s == CNT_S;

always @(posedge clk or negedge rst_n)begin 
    if(!rst_n)begin
        flag <= 1'b0;
    end 
    else if(end_cnt_s)begin 
        flag <= ~flag;//1s取反
    end 
    else begin 
        flag <= flag;
    end 
end

always @(posedge clk or negedge rst_n)begin 
    if(!rst_n)begin
        led <= 4'b0;
    end 
    else begin
        if(flag)begin//亮pwm
            led <= {cnt_s > cnt_ms, cnt_s > cnt_ms,cnt_s > cnt_ms,cnt_s > cnt_ms};
        end 
        else begin//灭pwm
            led <= {cnt_s < cnt_ms, cnt_s < cnt_ms,cnt_s < cnt_ms,cnt_s < cnt_ms};
        end
    end 
end
endmodule



三、引脚分配

请添加图片描述

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

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

相关文章

当你输入URL并按下回车后,发生了什么?

大概发生了八步的事情&#xff1a; URL解析->DNS解析->服务器建立连接->发送HTTP请求->服务器处理请求->服务器响应->接收和渲染页面->关闭连接 URL解析 URL&#xff0c;统一资源定位符&#xff0c;是用来表示从互联网上得到的资源位置和访问这些资源的…

ARM DynamIQ简介

DynamIQ是ARM一个新的底层solution&#xff0c;用于连接在一个芯片上的不同core&#xff0c;将多个core连接起来。 有了DynamIQ&#xff0c;我们可以将不同类型的core放到一个cluster中。比如&#xff0c;将性能高的core&#xff0c;和功耗低的core放进一个cluster&#xff0c;…

【uni-app】常用图标、头像汇总

在做小程序的时候&#xff0c;有时候需要各种图标和头像素材&#xff0c;而百度一堆基本都是收费的。所以&#xff0c;整理一些免费好用的图标&#xff0c;头像库&#xff1a; 1、iconfont-阿里巴巴矢量图标库 基本上常用的矢量图标&#xff0c;在这儿都有&#xff0c;而且可…

基于SSM框架的汽车在线销售系统设计与实现

博主介绍&#xff1a;专注于Java技术领域和毕业项目实战。专注于计算机毕设开发、定制、文档编写指导等&#xff0c;对软件开发具有浓厚的兴趣&#xff0c;工作之余喜欢钻研技术&#xff0c;关注IT技术的发展趋势&#xff0c;感谢大家的关注与支持。 技术交流和部署相关看文章…

Eureka的使用手册

一、导入依赖&#xff08;服务端和客户端导入的依赖不一样&#xff09; 服务端&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependenc…

『数据增强』yolov5 数据增强 与 红外数据增强

目录 yolov5 数据增强 Mosaic Copy paste Random affine MixUp Albumentations Augment HSV(Hue, Saturation,Value) Random horizontal flip 红外数据增强 红外图像的缺点 红外成像技术的特点 红外图像增强经…

常用电子元器件检测方法与经验

电子元器件检测是电子工程师和技术人员工作中不可或缺的一部分。在电子元器件制造和使用过程中&#xff0c;需要对元器件进行检测&#xff0c;以确保其质量和性能符合要求。在本文中&#xff0c;我们将介绍常用的电子元器件检测方法和经验&#xff0c;以帮助读者更好地了解和掌…

redux之reducer 为什么必须是纯函数?

在一个应用中&#xff0c;所有的 state 都是以一个对象树的形式存在一个单一的 store 中&#xff0c;唯一改变 state 的办法就是触发 action&#xff0c;而 reducer 就是用来编写专门的函数决定每个 action 如何改变应用的 state 。 在 Redux store 中保存了 reducer 返回的 这…

make/makefile的使用

make/makefile 文章目录 make/makefile初步认识makefile的工作流程依赖关系和依赖方法make的使用 总结 make是一个命令&#xff0c;是一个解释makefile中指令的命令工具&#xff0c;makefile是一个文件&#xff0c;当前目录下的文件&#xff0c;两者搭配使用&#xff0c;完成项…

RabbitMQ ---- 延迟队列

RabbitMQ ---- 延迟队列 1. 延迟队列的概念2. 延时队列使用场景3. RabbitMQ 中的 TTL3.1 消息设置 TTL3.2 队列设置 TTL3.3 两者的区别 4. 整合 springboot4.1 创建项目4.2 添加依赖4.3 修改配置文件4.4 添加 Swagger 配置类 5. 队列 TTL5.1 代码架构图5.2 配置文件类代码5.3 消…

基于PyQt5的UI界面开发——菜单与工具栏

窗口类型 我们进入QtDesigner&#xff0c;创建主窗口有三种类型&#xff1a;QMainWindow、QDialog 和 QWidget。 在新建应用程序窗口&#xff0c;通常选择 MainWindow 创建主窗口的图形界面就可以了。QtDesigner 创建的 “MainWindow” 虽然是一个空白的图形窗口&#xff0c;但…

Redis进阶底层原理 - 高可用哨兵模式

Redis哨兵模式是redis实现高可用的一种分布式架构。哨兵节点是一种特殊的Redis实例&#xff0c;它不用于存储业务数据&#xff0c;它主要工作内容如下&#xff1a;&#xff08;高可用不是指不出问题&#xff0c;而是出了问题后能及时的自动化解决&#xff0c;从而在客户端无感&…

Qt 项目架构之----MVC架构

MVC 模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式。这种模式用于应用程序的分层开发。 Model&#xff08;模型&#xff09;-是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View&#xff08;视图&#x…

web攻击

web攻击分为&#xff0c;信息泄露&#xff0c;弱口令&#xff0c;xss攻击&#xff0c;sql注入&#xff0c;文件上传&#xff0c;文件包含&#xff0c;webs hell&#xff0c;命令执行&#xff0c;xml实体注入。 #信息泄露 信息泄露主要包括敏感信息的信息&#xff0c;像口令&…

leetcode1171. 从链表中删去总和值为零的连续节点

1171. 从链表中删去总和值为零的连续节点 - 力扣&#xff08;Leetcode&#xff09; 累加数据和重复出现相同时&#xff0c;说明从相同和的第一次出现的下一个结点到最后一次相同累加数据的结点和为0&#xff0c;删除这段结点串、 给你一个链表的头节点 head&#xff0c;请你编…

Yocto系列讲解[技巧篇]92 - armv8 aarch64兼容armv7 32位程序运行环境

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述使能Multilib支持32位的helloworld程序执行出现No such file or directorylibc.so.6 cannot open shared object file修改内容固化…

整数数组的奇数位于数组的前半部分,偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变

题目&#xff1a;输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有的奇数位于数组的前半部分&#xff0c;所有的偶数位于数组的后半部分&#xff0c;并保证奇数和奇数&#xff0c;偶数和偶数之间的相对位置不变。 思路1&#xff1a; 类…

一.CreateFileMapping实现的共享内存及用法

共享内存概念 1.在32位的Windows系统中&#xff0c;每一个进程都有权访问他自己的4GB&#xff08;2324294967296&#xff09;平面地址空间&#xff0c;没有段&#xff0c;没有选择符&#xff0c;没有near和far指针&#xff0c;没有near和far函数调用&#xff0c;也没有内存模式…

CUDA并行编程

gpu 图形处理专用单元 cpu是主机单元 gpu显卡处理器 专门执行复杂数学和几何计算 不同表面有不同光纤效果 必须达到快速计算能力 gpu专门设计为大规模并行吞吐处理设计 用于加速图形显示 &#xff0c; 吞吐量高 峰值计算能力 4612 GFLOP/S 一秒钟可以计算4612G次浮点数计算…