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驱动 二.开发板电路 ...
最新文章
- java -jar 和 -cp详解
- error LNK2001:错误解决过程
- Linux压缩打包命令
- Linux 下的/usr/bin /usr/sbin /usr/local/bin /usr/local/sbin区别
- WSDM Cup 2020检索排序评测任务第一名经验总结
- python处理子进程_Python多处理+子进程问题
- php输出内容到页面,php实时输出内容
- exception The valid characters are defined in RFC 7230 and RFC 3986
- java bartender_BarTender Web Print Server可用的打印方法
- python 爬取生意参谋数据_用Excel实现生意参谋爬虫,伪装登陆状态
- MetaMask新版本新增获取并修改用户剪切板内容权限
- 新浪短连接(t.cn)在线生成工具
- IDEA集成Gerrit插件
- HTML+CSS+JS实现鼠标点击特效富强民主文明方法
- 懒汉式单例模式的多线程问题
- xs128 D-Flash读写
- 金蝶加密服务器ip地址修改密码,金蝶加密服务器在哪里设置密码
- 企业不良资产的定义是什么?
- python字符串方法replace_Python字符串的方法
- 云顶之弈5.26服务器维护,云顶之弈维护到几点 云顶之弈维护公告最新 云顶之弈12月26日几点能上...