PWM脉冲宽度调制,实现呼吸灯_领航者开发板
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脉冲宽度调制,实现呼吸灯_领航者开发板相关推荐
- FIFO各端口详解_领航者开发板
1.先入先出(First In First Out ,FIFO) (1)根据下图讲解FIFO涉及的各引脚 ①根据使用的资源类型不同,FIFO可分为两类,一种是使用BRAM(Block RAM)的FIF ...
- STM32输出PWM波形并实现呼吸灯
文章目录 一.环境配置 二.PWM简介 三.使用STM32CubeMX配置工程 四.使用Keil配置代码 五.运行效果 六.用Keil自带的逻辑仿真器观察占空比 七.总结 八.参考资料 一.环境配置 ...
- 微雪树莓派PICO笔记——3.PWM(脉冲宽度调制)
文章目录 什么是PWM PWM的应用 RP2040 PWM框架图 PWM流程图 PWM内部框架图 [MicroPython]machine.PWM类函数详解 代码实现 什么是PWM 脉冲宽度调制 (P ...
- 蓝桥杯模块学习9——PWM脉冲宽度调制(深夜学习——单片机)
一.什么是PWM脉冲宽度调制: 对PWM简单理解(佛科院--深夜学习)_佛科院深夜学习的博客-CSDN博客 二.脉冲宽度调制实验: 1.代码思路: (1)我们可以利用定时器规定周期为10ms(100H ...
- 蓝桥杯单片机比赛学习:8、PWM的基本原理之呼吸灯
经过7节的学习,我们已经掌握了基本的硬件的使用规则,从本节开始我们开始学习一些模块的使用PWM.PCF8591.AT24C02.DS18B20.DS1302.555频率测量.光敏电阻测量.超声波测距等 ...
- STM8S003F3通过PWM波实现三基色呼吸灯
前段时间使用STM8S003F3实现了一个三基色灯的各种效果,故写一篇文章作为一个记录. 1 综述 我们知道,要是的LED灯亮直接通电即可.而要改变灯的亮度,我们有两种方法:改变电流和PWM调光. 我 ...
- 嵌入式STM32入门之定时器控制LED闪烁与产生PWM脉冲宽度调制信号
定时器控制LED闪烁与产生PWM脉冲宽度调制信号 一.前言 二.定时器基本介绍 (一)STM32定时器 (二)通用定时器主要功能 (三)计数器模式 (四)定时器工作原理 三.实验(1)初识定时器 (一 ...
- 拓展模块使用教程和心得(四):PWM脉冲宽度调制及普通有刷马达和空心杯电机(测试平台:STC8A8K,STM32F103)
成就更好的自己 这次内容是给未来的新专栏(控制算法)打一个小基础,而且是为了完善上一期拓展模块教程三:步进电机的内容(https://blog.csdn.net/qq_36098477/article ...
- STM8S003F3通过PWM波实现三基色呼吸灯(转)
源: STM8S003F3通过PWM波实现三基色呼吸灯 转载于:https://www.cnblogs.com/LittleTiger/p/10105311.html
最新文章
- PHP中的静态属性、静态方法、常量属性
- 【 C 】在单链表中插入一个新节点的尝试(一)
- TFTP commons-net-3.3.jar
- 5种网络IO模型介绍
- no.5_得到4升的水
- 十分钟让你明白AIDL
- HBase之HFile详解
- [转]提高PR值的具体方法
- 软件加入使用时间_2020年,加入“midi音乐制作讲堂”内部会员,学音乐制作变得更简单...
- html整人js代码大全,Fool.js恶搞整人网页特效jQuery插件
- hp服务器进智能配置是红屏,illegal opcode 红屏报错(hp 360 G6安装win2003)问题解决方法...
- 高数_第6章无穷级数
- laydate自定义开始日期和结束日期
- 有源信号 无源信号 模拟量 开关量 解释
- IT项目管理计算题【太原理工大学】
- 互联网出海现在还是风口么?
- cypress自动化测试工具开发指南
- [Unity3D]面试题集锦
- 飞思卡尔16位单片机(五)——ADC模数转换模块测试
- Win7资源管理器自动展开左侧文件夹如何设置
热门文章
- 基于ROS节点多机协同(无人机/无人车)分析
- (ROC-RK3568-PC) 裸机23_驱动VOP2显示彩条画面
- 【SaltStack官方版】—— returners——返回器
- STM32使用库函数点灯实验
- C++中UTF-8, Unicode, GB2312转换及有无BOM相关问题
- SIAL跻身世界三大食品展的成功哲学
- CSAPP第89章家庭作业(部分)
- Scaner和顺序语句
- 阿里云5m带宽能支持多少人访问_阿里云618年中大促:云服务器低至7.65元/月 可选购3年版免续费之忧...
- 2022年京东618红包开抢时间介绍和怎么抢红包攻略