基于Verilog HDL的按键控制流水灯即打地鼠小游戏的设计

这篇具有很好参考价值的文章主要介绍了基于Verilog HDL的按键控制流水灯即打地鼠小游戏的设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

设计任务:

(1)用4个按键key0-key3对应控制4个小灯LED0-LED3;用触摸按键进行模式切换;用一位数码管显示当前控制模式,两位数码管显示当前得分。

(2)触摸按键没有按下时处于模式1,按下后处于模式2。用模式数码管显示当前的控制模式。

(3)模式1工作方式:当点亮LED0时,若按下对应的控制按键key0,则得分加1,如若按下别的按键,得分不变。每次点亮一个小灯,得分规则相同。当得分累加到15,不再增加,表示本轮游戏胜利。(注:小灯的切换频率可自行调节)

(4)模式2工作方式:随机的点亮小灯,若按下对应的控制按键,则得分加1,如按下别的按键,得分减1。

(5)当得分累加到15,不再增加,表示本轮游戏胜利;当得分减到0,表示本轮游戏失败。

(6)若游戏胜利,可加快小灯的切换频率,再次尝试;若游戏失败,可放慢小灯的切换频率,再次尝试。

设计方案:

通过触控板对两种模式进行切换,未按下触控板时,处于模式一;按下触控板时,处于模式二;若再次按下则切换到模式一。

模式一工作方式:从左往右依次点亮LED。若在LED点亮时按下对应key,得分+1;若按下key与LED灯不对应,得分不变。当得分累加到15时,仍继续按对,则得分清零,进入下一关,蜂鸣提醒且流水灯闪烁频加快。

模式二工作方式:随机点亮LED。若在LED点亮时按下对应key,则得分+1;若按下key与LED灯不对应,得分-1。当得分累加到15时,仍继续按对,得分清0,进入下一关,蜂鸣提醒且流水灯闪烁频率加快;当得分为0时,仍继续按错后,回到上一关,蜂鸣提醒且小灯闪烁频率减慢。

功能模块包括:LED点亮模块;按键防抖模块;得分计数模块;数码管显示模块。

LED点亮模块:

本程序中输入时钟为50MHz,所以一个时钟周期为20ns(1/50MHz)。因此计数器counter 通过对50MHz系统时钟计数,计时到1s,需要累加1s/20ns=50000000次。频率加快和减慢部分由计数模块中输出的计满信号A,减0信号B来进行控制,当A为1时,计时减小0.2s,当B为1时,计时增加0.2s,其设计语句为“TIME-A*push+B*push”。

模式一中LED点亮的设计方案是利用计数器计时,当计时到1s时,让led_control+1,使led_control在四个状态(00,01,10,11)内依次变化,然后利用case条件语句在四种LED灯点亮模式(4’b0001、4’b0010、4’b0100、4’b1000)进行选择,达到从左到右依次点亮LED的效果。

模式二中LED点亮的设计方案是利用伪随机数的产生,当计数器计时到1s时,将伪随机数传输给led达到点亮LED灯的效果。

按键防抖模块:这一模块在CSDN上有很多啦,这里就不在画蛇添足啦。

得分计数模块:

其计数功能分为两种工作方式:模式一和模式二。模式一工作方式:若在LED点亮时按下对应key,DATA+1;若按下key与LED灯不对应,DATA不变。当DATA累加到15时,继续得分,则DATA清零,蜂鸣提醒。模式二工作方式:若在LED点亮时按下对应key,则得分+1;若按下key与LED灯不对应,得分-1。当得分累加到15时,继续按对后,得分清0,蜂鸣提醒;当得分为0时,继续按错后,蜂鸣提醒。故通过使用if_else语句对条件进行判断,来实现上述计数功能。

当touch为“1”时,处于模式一,使用条件语句进行判断。当key_pluse为“1”且对应led灯点亮时,使data加1,否则不变。当data为于15时,对data清0,并给计满信号A赋值为“1”,使蜂鸣器鸣叫,并将计满信号A输出给LED灯点亮模块,实现频率的加快。

当touch为“0”时,处于模式二,使用条件语句进行判断。当只要是key_pluse有效时,就对key_pluse和对应led进行判断。若key_pluse和对应led相等时,使data+1,否则data-1。当data为15时,对data清0,并给计满信号A赋值为“1”,使蜂鸣器鸣叫,并将计满信号A输出给LED灯点亮模块,实现LED闪烁频率加快。当data为0时,给减0信号B赋值为“1”,使蜂鸣器鸣叫,并将减0信号输出给给LED灯点亮模块,实现LED闪烁频率减慢。

数码显示模块:这一块也有很多资料啦,也就不赘述啦。文章来源地址https://www.toymoban.com/news/detail-528602.html

到了这里,关于基于Verilog HDL的按键控制流水灯即打地鼠小游戏的设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯

    实验内容: 利用所学的单片机知识及电路知识编程实现单片机 I/O 口检测按键输入电平。         1.选中 8 位数码管的其中 1 位数码管,当独立按键 1 每按下一次,数码管加一(按下期间加 1),范围为 0—F;         2.选中 8 位数码管的另 1 位数码管,当独立按键 2

    2024年02月06日
    浏览(44)
  • 51单片机通过两个按键控制流水灯方向

    按键一接单片机P3_1,按键2接P3_0 8个流水灯接P2口 以下是代码:

    2024年02月11日
    浏览(44)
  • 51单片机--定时器与按键控制流水灯模式

    51单片机上的定时器是一种硬件模块,用于计时和生成特定的时间延迟。 它的电路和运转都在单片机内完成 ,它是嵌入在单片机内部的一个功能模块,具有多种工作模式和功能。 在51单片机中,通常有两个定时器/计数器:定时器0(Timer 0)和定时器1(Timer 1)。每个定时器都

    2024年02月13日
    浏览(40)
  • FPGA学习——按键控制LED流水灯(附源码 无按键消抖版本)

    在博主的cyclone4开发板上一共有4个按键,本次实验的目的是为了实现每按下一次按键,都会使开发板上的4个LED灯切换一次状态,博主一共设计了四种状态,分别是: 按键 状态 按键1按下 自右向左的流水灯 按键2按下 自左向右的流水灯 按键3按下 四灯常亮 按键4按下 四灯闪烁

    2024年02月06日
    浏览(45)
  • 在51单片机中使用一个独立按键控制流水灯方向

    用独立按键控制流水灯转向,按下独立按键流水灯向右移动,再按下独立按键流水灯向左移动 此代码用到 逻辑左移:_crol_(移动对象,移动的位数) 逻辑右移:_cror_(移动对象,移动的位数)

    2024年02月07日
    浏览(38)
  • 51单片机学习--按键控制流水灯模式&定时器时钟

    TMOD负责确定T0和T1的工作模式,TCON控制T0和T1的启动或停止计数,同时包含定时器状态 TF1:定时器1溢出标志 TF0:定时器0溢出标志 0~65535 每隔1微秒计数器+1,总时间65535微秒,赋上初值64535,则只有1000微秒即1毫秒 首先配置TMOD 所以初始化TMOD = 0x01; //0000 0001 整体操作:TMOD = TM

    2024年02月14日
    浏览(43)
  • 51单片机入门 - 详解定时器实现按键控制流水灯方向

    操作系统:Windows 10 x84-64 单片机:STC89C52RC 编译器:SDCC 烧录软件:stcgal 1.6 开发板:普中51单片机开发板A2套件(2022) 在 VS Code 中新建项目到烧录的过程: 左侧EIDE图标 - 新建项目 - 空项目 - 8位MCU项目 - 保存文件夹。 更改构建配置: SDCC ;更改烧录配置: stcgal 。 在项目文件

    2024年02月06日
    浏览(45)
  • FPGA 学习笔记:Verilog 实现LED流水灯控制

    在初步了解 Xilinx Vivado 的使用后,开启了FPGA Hello World 程序:LED 流水灯控制 在嵌入式MCU中,流水灯需要延时来实现,FPGA的延时,使用外部晶振来实现 实现 3个 LED 流水灯控制,也就是循环依次点亮, LED 低电平亮, 高电平灭,FPGA 有一个40MHz的外部晶振,作为系统时钟输入开

    2023年04月08日
    浏览(38)
  • 51-定时器与按键控制LED流水灯模式&定时器时钟

    按键(以独立按键为例)控制LED流水灯模式: 在按键控制LED流水灯模式中,如果仅仅简单的把独立按键与LED流水灯拼接起来,则会出现一些问题:在LED流水灯的代码中会有长时间的Delay,此时按键检测就会很不灵敏:按下时不灵敏,需要一些时间才能被检测到,按下后再松手时

    2024年02月08日
    浏览(43)
  • C51单片机按键控制流水灯模式(定时器版本)以及定时器时钟

      上篇文章我们学了关于定时器的三大组成部分及许多寄存器的概念问题,这篇文章我们就要开始讲解实操部分。 首先,我们先来看看本文最后写成的代码:      以上三张是代码的主函数,此外,代码中还需用到的独立按键检测代码在下面:  注意:头文件中#ifndef和#def

    2023年04月17日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包