FPGA之按键控制LED

这篇具有很好参考价值的文章主要介绍了FPGA之按键控制LED。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、按键开关

       1、按键开关(轻触开关):主要是指轻触式按键开关,属于电子元器件类,使用时以满足操作力的条件向开关操作方向施压开关功能闭合接通,当撤销压力时开关即断开,其内部结构是靠金属弹片受力变化来实现通断的。

FPGA之按键控制LED

       2、自锁按键:在开关按钮第一次按时,开关接通并保持,即自锁,在开关按钮第二次按时,开关断开,同时开关按钮弹出来。 自锁开关一般是指开关自带机械锁定功能,按下去,松手后按钮是不会完全跳起来的,处于锁定状态,需要再按一次,才解锁完全跳起来。

FPGA之按键控制LED

二、硬件设计

      1、 按键模块原理图如下:

FPGA之按键控制LED

       对于管脚分配,可查看对应的FPGA原理图。     

     2、实验目的

        使用开发板上的四个按键控制四个LED灯,没有按键按下时,四个灯全灭当按下KWEY0时,实现自右向左的流水灯当按下KWEY1时,实现自左向右的流水灯当按下KWEY2时,实现四个灯同时闪烁当按下KWEY3时,实现四个灯全亮

     3、系统框图如下:

FPGA之按键控制LED

       50Hhz时钟:由开发板上的晶振提供;

       rst复位信号:由开发板上的复位按键提供;

三、程序代码

module key_led(
     input clk,
     input rst_n,  //(_n表示复位信号低电平有效)
     
     input [3:0] key,  //key的位宽为4
     output reg [3:0] led   //led的位宽为4

);
     //定义计数器
    reg [23:0] cnt;
    //定义状态计数器,4个状态,所以计数器位宽是2
    reg [1:0] led_ctrl;
    
    
    //always模块定义一个0.2s的计数器
always @ (posedge clk or negedge rst_n) begin //用一个上升沿或者下降沿触发always模块
    if(!rst_n)
       cnt <= 24'd0; //清零
     else
       if(cnt < 24'd10000000)
           cnt <= cnt + 1'b1; //累加
         else
            cnt <= 24'd0; //清零
end

    //每隔0.2s改变计数器状态
always @ (posedge clk or negedge rst_n) begin //用一个上升沿或者下降沿触发always模块
    if(!rst_n)  //复位
       led_ctrl <= 2'd0; //状态计数器清零,led_ctrl位宽为2,所以是2'd0;
     else
        if(cnt == 24'd1000_0000) //0.2s时,计数器加1
            led_ctrl <= led_ctrl + 1'b1;  //累加
          else
             led_ctrl <= led_ctrl;
end 


//根据按键改变led状态
always @ (posedge clk or negedge rst_n) begin //用一个上升沿或者下降沿触发always模块
    if(!rst_n)  //复位
       led <= 4'b0000; //状态计数器清零,led为4种状态,所以是4'b0000; 
     else
        if(key[0] == 1'b0) 
          case(led_ctrl)   //从右向左的流水灯
             2'd0:  led <= 4'b1000;
             2'd1:  led <= 4'b0100;
             2'd2:  led <= 4'b0010;
             2'd3:  led <= 4'b0001;   
          endcase
       else 
         if(key[1] == 1'b0) 
          case(led_ctrl)   //从左向右的流水灯
             2'd0:  led <= 4'b0001;
             2'd1:  led <= 4'b0010;
             2'd2:  led <= 4'b0100;
             2'd3:  led <= 4'b1000;   
          endcase
       else 
         if(key[2] == 1'b0) 
          case(led_ctrl)   //四个灯同时闪烁
             2'd0:  led <= 4'b1111;
             2'd1:  led <= 4'b0000;
             2'd2:  led <= 4'b1111;
             2'd3:  led <= 4'b0000;   
          endcase
      else if(key[3] == 1'b0)   //四个灯全亮
          led <= 4'b1111;
        else     //无按键按下时,灯全灭
          led <= 4'b0000;
end

endmodule

四、演示视频

FPGA学习笔记之按键控制LED演示效果文章来源地址https://www.toymoban.com/news/detail-478615.html

到了这里,关于FPGA之按键控制LED的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 四个按键控制led的四种变化(按键控制led)(附源码)

    使用开发板上的四个按键控制四个LED灯。按下不同的按键时,四个LED灯显示不同效果。本实验是在EP4CE6F17C8开发板上实现,仿真请用modelsim Altera 仿真代码: 注意:该实验并未进行按键消抖,需一直按着按键才能让该按键所操控的led变化功能实现。

    2024年02月06日
    浏览(41)
  • 实验二 基于FPGA的分频器的设计(基本任务:设计一个分频器,输入信号50MHz,输出信号频率分别为1KHz、500Hz及1Hz。拓展任务1:用按键或开关控制蜂鸣器的响与不响。拓展任务2:用按键或开)

    1. 实验目的: (1) 掌握QuartusⅡ软件的层次型设计方法; (2) 掌握元件封装及调用方法; (3) 熟悉FPGA实验平台,掌握引脚锁定及下载。 2. 实验任务: (1) 基本任务:设计一个分频器,输入信号50MHz,输出信号频率分别为1KHz、500Hz及1Hz。 (2) 拓展任务1:用按键或开关

    2024年02月06日
    浏览(47)
  • Arduino通过两个按键开关控制舵机转动(含代码)

    两个开关控制舵机转动 在 Arduino 上控制舵机需要使用到一个 Servo 库,可以通过该库来轻松实现对舵机的控制。下面是两个开关通过 Arduino 控制舵机的步骤: 1.连接硬件:将舵机的 VCC 引脚连接到 Arduino 板子的 5V 引脚,GND 引脚连接到 GND 引脚。将舵机的控制引脚(通常是橙色

    2024年02月12日
    浏览(66)
  • 按键控制led变化

    使用按键控制开发板上一个led灯的亮灭,当按键按下的时候led灯就亮,当再一次按下按键的时候led就不亮了。由于按键存在抖动,按键松开的时候led灯就不亮,所以需要一个消抖模块对按键消抖 总的来说编写不算复杂,需要注意的是模块之间的连接和按键消抖模块

    2024年02月16日
    浏览(35)
  • 按键控制 LED 实验

    目录 1 按键简介 2 实验任务 3 硬件设计 4 程序设计 5 下载验证         按键开关是一种电子开关,属于电子元器件类。         轻触式按键         自锁式按键         使用底板上的 PL_KEY0 和 PL_KEY1 按键来控制底板上的 PL_LED0 和 PL_LED1 两个 LED 的闪烁方式。没有

    2024年02月11日
    浏览(41)
  • 独立按键控制led灯

    今天,我们来学习关于独立按键来控制led灯的知识。 1.独立按键控制led灯亮灭 首先是来用一个独立按键控制一个led灯的亮灭。其中独立按键由P3表示,其具体电路图如下                     其中第一个按键为P3_1,第二个按键为P3_0,第三个按键为P3_2,第四个按键为P3_3,很明

    2024年02月08日
    浏览(48)
  • 按键控制LED闪烁实验

    实验任务: 本节实验任务是使用底板上的PL_KEY0和PL_KEY1按键来控制底板上的PL_LED0和PL_LED1两个LED的闪烁方式。没有按键按下时,两个LED保持常亮;如果按键0按下,则两个LED交替闪烁;如果按键1按下,则两个LED同时闪烁。 模块示意图:   模块代码实现: modulekey_led( input     

    2024年02月04日
    浏览(46)
  • 触摸按键控制LED灯

    目录 1.理论 2.代码 2.1 touch_ctrl_led.v 2.2 tb_touch_ctrl_led 以上的波形图的touch_flag是采用组合逻辑的方式产生的。 以上的touch_flag是采用时序逻辑产生的,时序逻辑会延迟一拍。 以上是上升沿和下降沿的组合逻辑和时序逻辑实现,逻辑或的写法刚好是逻辑与的两个寄存器的值反过来

    2024年01月23日
    浏览(51)
  • SoC-按键控制led

    1.hps_0.h 2.main.c SoC

    2024年02月10日
    浏览(39)
  • 【stm32----按键中断实验,按键控制LED灯】

    1、按下KEY1,LED1亮,再次按下KEY1,LED1灭; 2、按下KEY2,LED2亮,再次按下KEY2,LED2灭; 3、按下KEY3,LED3亮,再次按下KEY3,LED3灭; 一、头文件 1、gpio.h 2、key.h 二、初始化函数及功能函数 1、gpio.c 2、key.c 三、中断处理函数 do_irq.c 四、主函数 main.c 依次按下key3、key2、key1、key2

    2024年02月04日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包