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按键控制蜂鸣器程序及流程图相关推荐

  1. 51单片机怎么显示当前时间_(进阶篇)51单片机之按键控制蜂鸣器、数码管、按键值移位显示...

    一.实操演示- 按键控制蜂鸣器 1.图文详细 独立按键硬件电路 蜂鸣器硬件电路 2.连接方式: J20的第3号引脚连接到J7引脚,即P15连接J7. J29的第7.8号引脚连接到JP1的第1.2号引脚 ...

  2. FPGA:基础入门按键控制蜂鸣器

    题目概述: 使用按键控制蜂鸣器发声.初始状态为蜂鸣器鸣叫,按下开关后蜂鸣器停止鸣叫,再次按下开关,蜂鸣器重新鸣叫. key_debounce.vmodule key_debounce( input s ...

  3. FPGA实战篇——【3】按键控制蜂鸣器

    FPGA实战--按键控制蜂鸣器 目录 FPGA实战--按键控制蜂鸣器 实验任务: 蜂鸣器 硬件设计 程序设计 rtl文件 按键消抖 ucf文件 编译 RTL图 补充--例化模块 的软件操作: 下载及d ...

  4. c语言写按键控制蜂鸣器,51单片机用按键控制蜂鸣器发出do re mi fa...的声音,...

    满意答案 0fhk9 2017.12.30 采纳率:53%    等级:7 已帮助:1961人 T0HEQU 30H T0L EQU 31H ORG 0000H LJMP MAIN ORG 000BH ...

  5. Verilog实现4位按键分别控制蜂鸣器发出不同音阶(未完成,请指导)

    实验任务: 使用板载4位独立按键,进行4位按键消抖检测,当没有按键按下时不响,按下则发出声响,分别为 DO RE MI FA. 实验思路 还是有两个part,一个part用来检测按键是否按下,输入ke ...

  6. Chapter002-FPGA学习之按键控制LED灯和蜂鸣器

    硬件原理 在正点原子开发板中,LED模块高电平驱动,蜂鸣器也是高电平驱动,按键按下,对应引脚为低电平: 原理图如下: 以上设备与FPGA引脚的对照表如下: 设备 引脚名称 对应FPGA引脚 按键 PL ...

  7. 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...

    基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文) 物理与电子工程学院2014级课程设计 PAGE IV 物理与电子工程学院 <单片机原理与接口技术> 课程设计报告书 ...

  8. 【Arduino】一个按键开关控制RGB音乐彩灯(蜂鸣器播放音乐+按键控制播放暂停+RGB彩灯随音乐节奏跳动)

    一.项目说明 这里我们需要使用到RGB LED.蜂鸣器.按键开关这个元件.为什么要叫RGB呢?是因为这个LED是由红(Red).绿(Green)和蓝(Blue)三种颜色组成.我们可以通过调整三个LED ...

  9. STM32F40实现 按键密码锁、按键控制LED 、串口选择菜单 、串口控制LED开关 、串口控制蜂鸣器开关及响度 、串口控制蜂鸣器播放音乐 、按键控制LED的亮度

    本人第一次发文,很多都不懂,尤其害怕版权问题,如果有人质疑我有盗权行为,请联系我,因为项目也遇到很多问题,然后就解决嘛,可印象中只有播放音乐代码有借鉴,所以如果有质疑盗了权的,请务必联系我.板子是使用 ...

  10. 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速-萌新入门

    ** 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速 ** 分享一个萌新入门小工程 一.原件连接: 第一种直接用51开发板 第二种用最小单元加unl2003驱动 二.开发板电路 ...

最新文章

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

热门文章

  1. 机器视觉 计算机专业,机器视觉属于什么专业
  2. python 使用 reportlab 生成 pdf
  3. 计算机组成原理课程设计报告,计算机组成原理课程设计报告.doc
  4. 西工大机考《概率论与数理统计》大作业网考
  5. dts同步常见问题_家庭影院十大常见故障解决办法
  6. python时频图_怎样用python画wav文件的时频分析图
  7. 【控制】反馈控制入门,PID控制
  8. 无人驾驶汽车系统入门(四)——反馈控制入门,PID控制
  9. 高等数学公式(latex)
  10. 深度学习——目前可用的3D人体数据集