1.脉冲宽度调制(Pulse Width Modulation,PWM)
仅从本次实验(呼吸灯)的角度进行解释:通过不断调节信号的占空比来改变LED灯的亮度,如占空比逐渐递增会使得LED逐渐变亮,占空比逐渐递减会使得LED逐渐变暗
其原因是LED会根据单位时间内通过的电量改变自身亮度

实验原理:
本实验中,占空比初始值为0,以1kHz的频率,即每隔1ms占空比增加一个定值(具体值的大小影响呼吸灯变化的快慢),当占空比增加到100%则开始递减,当占空比递减至0,继续开始递增,如此循环。


2.VHDL代码(基于领航者开发板)


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;entity breath_led is
Port (clk     :   in  std_logic;rst_n   :   in  std_logic;led     :   out std_logic
);
end breath_led;architecture Behavioral of breath_led is
signal  period_cnt      :   integer;       --周期计数器频率:1khz 周期:1ms  计数值:1ms/20ns=50000
signal  duty_cycle      :   integer;       --占空比数值
signal  inc_dec_flag    :   std_logic;     --0 递增  1 递减
begin--led赋值
led <= '1' when (period_cnt >= duty_cycle) else'0';--计时器,1ms
process(clk, rst_n)
beginif (rst_n='0') thenperiod_cnt <= 0;elseif (clk'event and clk='1') thenif (period_cnt = 50_000) thenperiod_cnt <= 0;    elseperiod_cnt <= period_cnt + 1;end if;end if;end if;
end process;--在周期计数器的节拍下递增或递减占空比
process(clk, rst_n)
beginif (rst_n='0') thenduty_cycle    <= 0;inc_dec_flag  <= '0';else if (clk'event and clk='1') thenif (period_cnt=50_000) then                 --计满1ms,即1ms才变换一次占空比if (inc_dec_flag='0') then              --占空比递增状态,呼吸灯逐渐变亮if (duty_cycle=50_000) then         --如果占空比已递增至最大inc_dec_flag <= '1';            --则占空比开始递减elseduty_cycle <= duty_cycle + 25;  --否则占空比以25为单位递增end if;else                                    --占空比递减状态,呼吸灯逐渐变暗if (duty_cycle=0) then              --如果占空比已递减至0inc_dec_flag <= '0';            --则占空比开始递增else    duty_cycle <= duty_cycle - 25;  --否则占空比以25为单位递减end if;end if;end if;end if;end if;
end process;end Behavioral;

管脚约束:

set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports clk]
set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS33} [get_ports rst_n]
set_property -dict {PACKAGE_PIN J16 IOSTANDARD LVCMOS33} [get_ports led]

PWM脉冲宽度调制,实现呼吸灯_领航者开发板相关推荐

  1. FIFO各端口详解_领航者开发板

    1.先入先出(First In First Out ,FIFO) (1)根据下图讲解FIFO涉及的各引脚 ①根据使用的资源类型不同,FIFO可分为两类,一种是使用BRAM(Block RAM)的FIF ...

  2. STM32输出PWM波形并实现呼吸灯

    文章目录 一.环境配置 二.PWM简介 三.使用STM32CubeMX配置工程 四.使用Keil配置代码 五.运行效果 六.用Keil自带的逻辑仿真器观察占空比 七.总结 八.参考资料 一.环境配置 ...

  3. 微雪树莓派PICO笔记——3.PWM(脉冲宽度调制)

    文章目录 什么是PWM PWM的应用 RP2040 PWM框架图 PWM流程图 PWM内部框架图 [MicroPython]machine.PWM类函数详解 代码实现 什么是PWM 脉冲宽度调制 (P ...

  4. 蓝桥杯模块学习9——PWM脉冲宽度调制(深夜学习——单片机)

    一.什么是PWM脉冲宽度调制: 对PWM简单理解(佛科院--深夜学习)_佛科院深夜学习的博客-CSDN博客 二.脉冲宽度调制实验: 1.代码思路: (1)我们可以利用定时器规定周期为10ms(100H ...

  5. 蓝桥杯单片机比赛学习:8、PWM的基本原理之呼吸灯

    经过7节的学习,我们已经掌握了基本的硬件的使用规则,从本节开始我们开始学习一些模块的使用PWM.PCF8591.AT24C02.DS18B20.DS1302.555频率测量.光敏电阻测量.超声波测距等 ...

  6. STM8S003F3通过PWM波实现三基色呼吸灯

    前段时间使用STM8S003F3实现了一个三基色灯的各种效果,故写一篇文章作为一个记录. 1 综述 我们知道,要是的LED灯亮直接通电即可.而要改变灯的亮度,我们有两种方法:改变电流和PWM调光. 我 ...

  7. 嵌入式STM32入门之定时器控制LED闪烁与产生PWM脉冲宽度调制信号

    定时器控制LED闪烁与产生PWM脉冲宽度调制信号 一.前言 二.定时器基本介绍 (一)STM32定时器 (二)通用定时器主要功能 (三)计数器模式 (四)定时器工作原理 三.实验(1)初识定时器 (一 ...

  8. 拓展模块使用教程和心得(四):PWM脉冲宽度调制及普通有刷马达和空心杯电机(测试平台:STC8A8K,STM32F103)

    成就更好的自己 这次内容是给未来的新专栏(控制算法)打一个小基础,而且是为了完善上一期拓展模块教程三:步进电机的内容(https://blog.csdn.net/qq_36098477/article ...

  9. STM8S003F3通过PWM波实现三基色呼吸灯(转)

    源: STM8S003F3通过PWM波实现三基色呼吸灯 转载于:https://www.cnblogs.com/LittleTiger/p/10105311.html

最新文章

  1. PHP中的静态属性、静态方法、常量属性
  2. 【 C 】在单链表中插入一个新节点的尝试(一)
  3. TFTP commons-net-3.3.jar
  4. 5种网络IO模型介绍
  5. no.5_得到4升的水
  6. 十分钟让你明白AIDL
  7. HBase之HFile详解
  8. [转]提高PR值的具体方法
  9. 软件加入使用时间_2020年,加入“midi音乐制作讲堂”内部会员,学音乐制作变得更简单...
  10. html整人js代码大全,Fool.js恶搞整人网页特效jQuery插件
  11. hp服务器进智能配置是红屏,illegal opcode 红屏报错(hp 360 G6安装win2003)问题解决方法...
  12. 高数_第6章无穷级数
  13. laydate自定义开始日期和结束日期
  14. 有源信号 无源信号 模拟量 开关量 解释
  15. IT项目管理计算题【太原理工大学】
  16. 互联网出海现在还是风口么?
  17. cypress自动化测试工具开发指南
  18. [Unity3D]面试题集锦
  19. 飞思卡尔16位单片机(五)——ADC模数转换模块测试
  20. Win7资源管理器自动展开左侧文件夹如何设置

热门文章

  1. 基于ROS节点多机协同(无人机/无人车)分析
  2. (ROC-RK3568-PC) 裸机23_驱动VOP2显示彩条画面
  3. 【SaltStack官方版】—— returners——返回器
  4. STM32使用库函数点灯实验
  5. C++中UTF-8, Unicode, GB2312转换及有无BOM相关问题
  6. SIAL跻身世界三大食品展的成功哲学
  7. CSAPP第89章家庭作业(部分)
  8. Scaner和顺序语句
  9. 阿里云5m带宽能支持多少人访问_阿里云618年中大促:云服务器低至7.65元/月 可选购3年版免续费之忧...
  10. 2022年京东618红包开抢时间介绍和怎么抢红包攻略