key_beep按键控制蜂鸣器程序及流程图
key_beep按键控制蜂鸣器程序及流程图
- 1.试验任务:
- 2. 按键消抖
- 3.程序设计
- 3.1消抖模块
- 3.2消抖模块流程图
- 3.3 蜂鸣器驱动模块程序
- 3.4 顶层例化模块程序
- 3.5 ucf模块
1.试验任务:
使用按键控制蜂鸣器发声。 初始状态为蜂鸣器鸣叫,按下开关后蜂鸣器停
止鸣叫,再次按下开关,蜂鸣器重新鸣叫。
2. 按键消抖
3.程序设计
3.1消抖模块
// An highlighted block
module key_debounce( //消抖模块 input sys_clk, //时钟信号,50Mhzinput sys_rst_n, //复位信号 input key, //按键output reg key_flag, //按键有效的标志 output reg key_value //按键有效的值
);reg key_reg; //key的寄存器,比对两个时钟时将值放在寄存器内
reg [19:0]delay_cnt; //延时20ns的寄存器,20ms=20000000ns,20000000ns/20=1000000个时钟周期,位宽为20位always @(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)begin //按下复位按键key_reg <= 1'b1; //key_reg按键为低电平有效,所以拉高delay_cnt <= 20'd0; //计数器清零endelse beginkey_reg <= key; //将key的值存入寄存器中(注,key的值等到下一个边沿过来时,才会传递给key_reg,既key_reg的值和key的值相差一个时钟周期)if(key_reg!=key) //上一个值是否和当前值相同,若按下按键则当前值和上一值不同,则进入该语句delay_cnt <= 32'd100_0000; //把delay_cnt寄存器充满20ms else if(key_reg==key)begin //上一个值是否和当前值相同,若没有按按键则当前值和上一值相同,则进入该语句if(delay_cnt > 32'd0)delay_cnt <=delay_cnt-1'b1; //elsedelay_cnt <=delay_cnt;endend
endalways @(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)begin key_flag <= 1'b0; //如果复位将flag清零key_value <= 1'b1; //为低时才判定按键按下endelse beginif(delay_cnt == 32'd1)beginkey_flag <= 1'b1;key_value <= key; endelse beginkey_flag <= 1'b0;key_value <= key_value;endend
endendmodule
3.2消抖模块流程图
3.3 蜂鸣器驱动模块程序
// An highlighted block
module beep_control( //消抖模块 input sys_clk, //时钟信号,50Mhzinput sys_rst_n, //复位信号 input key_flag, //按键有效的标志 input key_value, //按键有效的值output reg beep
);always @(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)beep <= 1'b1;else if(key_flag&&(~key_value))beep <=~beep;
endendmodule
3.4 顶层例化模块程序
// An highlighted block
module top_key_beep( input sys_clk, //时钟信号,50Mhzinput sys_rst_n, //复位信号 input key, output beep
);wire key_flag;
wire key_value;key_debounce key_debounce_u(.sys_clk (sys_clk),.sys_rst_n (sys_rst_n),.key (key),.key_flag (key_flag),.key_value (key_value)
);beep_control beep_control_u(.sys_clk (sys_clk),.sys_rst_n (sys_rst_n),.key_flag (key_flag),.key_value (key_value),.beep (beep)
);
endmodule
3.5 ucf模块
// An highlighted block
NET sys_clk TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 20ns HIGH 50%;#------------------------------系统时钟和复位-----------------------------------
NET sys_clk LOC = N8 | IOSTANDARD = "LVCMOS33";
NET sys_rst_n LOC = G16 | IOSTANDARD = "LVCMOS33"; NET "key" LOC = P5 | IOSTANDARD = "LVCMOS33";
NET beep LOC = P4 | IOSTANDARD = "LVCMOS33";
key_beep按键控制蜂鸣器程序及流程图相关推荐
- 51单片机怎么显示当前时间_(进阶篇)51单片机之按键控制蜂鸣器、数码管、按键值移位显示...
一.实操演示- 按键控制蜂鸣器 1.图文详细 独立按键硬件电路 蜂鸣器硬件电路 2.连接方式: J20的第3号引脚连接到J7引脚,即P15连接J7. J29的第7.8号引脚连接到JP1的第1.2号引脚 ...
- FPGA:基础入门按键控制蜂鸣器
题目概述: 使用按键控制蜂鸣器发声.初始状态为蜂鸣器鸣叫,按下开关后蜂鸣器停止鸣叫,再次按下开关,蜂鸣器重新鸣叫. key_debounce.vmodule key_debounce( input s ...
- FPGA实战篇——【3】按键控制蜂鸣器
FPGA实战--按键控制蜂鸣器 目录 FPGA实战--按键控制蜂鸣器 实验任务: 蜂鸣器 硬件设计 程序设计 rtl文件 按键消抖 ucf文件 编译 RTL图 补充--例化模块 的软件操作: 下载及d ...
- c语言写按键控制蜂鸣器,51单片机用按键控制蜂鸣器发出do re mi fa...的声音,...
满意答案 0fhk9 2017.12.30 采纳率:53% 等级:7 已帮助:1961人 T0HEQU 30H T0L EQU 31H ORG 0000H LJMP MAIN ORG 000BH ...
- Verilog实现4位按键分别控制蜂鸣器发出不同音阶(未完成,请指导)
实验任务: 使用板载4位独立按键,进行4位按键消抖检测,当没有按键按下时不响,按下则发出声响,分别为 DO RE MI FA. 实验思路 还是有两个part,一个part用来检测按键是否按下,输入ke ...
- Chapter002-FPGA学习之按键控制LED灯和蜂鸣器
硬件原理 在正点原子开发板中,LED模块高电平驱动,蜂鸣器也是高电平驱动,按键按下,对应引脚为低电平: 原理图如下: 以上设备与FPGA引脚的对照表如下: 设备 引脚名称 对应FPGA引脚 按键 PL ...
- 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...
基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文) 物理与电子工程学院2014级课程设计 PAGE IV 物理与电子工程学院 <单片机原理与接口技术> 课程设计报告书 ...
- 【Arduino】一个按键开关控制RGB音乐彩灯(蜂鸣器播放音乐+按键控制播放暂停+RGB彩灯随音乐节奏跳动)
一.项目说明 这里我们需要使用到RGB LED.蜂鸣器.按键开关这个元件.为什么要叫RGB呢?是因为这个LED是由红(Red).绿(Green)和蓝(Blue)三种颜色组成.我们可以通过调整三个LED ...
- STM32F40实现 按键密码锁、按键控制LED 、串口选择菜单 、串口控制LED开关 、串口控制蜂鸣器开关及响度 、串口控制蜂鸣器播放音乐 、按键控制LED的亮度
本人第一次发文,很多都不懂,尤其害怕版权问题,如果有人质疑我有盗权行为,请联系我,因为项目也遇到很多问题,然后就解决嘛,可印象中只有播放音乐代码有借鉴,所以如果有质疑盗了权的,请务必联系我.板子是使用 ...
- 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速-萌新入门
** 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速 ** 分享一个萌新入门小工程 一.原件连接: 第一种直接用51开发板 第二种用最小单元加unl2003驱动 二.开发板电路 ...
最新文章
- R语言使用DALEX包的model_performance函数对caret包生成的多个算法模型进行残差分布分析并可视化每个模型的残差反向累积分布图
- 关于Android 构建
- AWS S3宕机的启发: 云必须分散化
- SQL 判断表是否存在 数据表不存在是致命错误
- python networkx库_python之networkx库小结
- 《高性能JavaScript》第五章 字符串和正则表达式
- 笔记(用Python做些事情)--变量(数字、字符串)
- 『科学计算』科学绘图库matplotlib练习
- 中科院地平线开源state-of-the-art行人重识别算法EANet:增强跨域行人重识别中的部件对齐...
- [POJ1961 Period]
- THREEJS - 点击/拾取
- tcl之quartus 脚本学习 · 1 quartus tcl packages 介绍
- 新书榜TOP 20占了17位!榜单里有哪些值得入手的技术新书?
- net.sf.json.JSONObject.fromObject()方法的一个小秘密
- 原生开发什么意思_原生开发和混合开发的优劣势都是什么?
- 开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?
- html 苹果适应,苹果CMS自适应模板(1)
- CodeForces - 19E Fairy【二分图】【DFS】
- K8S以及Kubesphere离线部署方案
- HDU 5234 Happy birthday 最多蛋糕
热门文章
- You can't specify target table 'sdb_goods' for update in FROM clause
- React中插入视频(video-react),自动播放
- vb.net 实现编辑某列并回车后不换行,查询数据进行相关处理
- FusionCharts的使用方法
- [JZOJ3296] 【SDOI2013】刺客信条
- MMI、SS、USSD介绍
- 2022电大国家开放大学网上形考任务-电子商务概论非免费(非答案)
- android 将鼠标右键点击事件改为点击后返回功能
- Python_机器学习_常用科学计算库_第5章_Pandas
- 移动计算的未来:是什么在推动变革? | 幂集创新