基于FPGA的按键控制LED灯亮灭

时间:2025-10-28  作者:Diven  阅读:0

按键是常用的控制器件。生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等特点,在家电、数码产品、玩具等方面有的应用。

基于FPGA的按键控制LED灯亮灭

本实验我们将介绍如何使用按键控制多个LED的亮灭。

1. 按键简介

按键开关是电子开关,属于电子元器件类。

我们的开发板上有两种按键开关:

第是本实验所使用的轻触式按键开关(如下图1),简称轻触开关

使用时以向开关的操作方向施加压力使内部电路闭合接通,当撤销压力时开关断开,其内部结构是靠金属弹片受力后发生形变来实现通断的;

第二种是自锁按键(如下图2),自锁按键第一次按下后保持接通,即自锁,第二次按下后,开关断开,同时开关按钮弹出来。

开发板上的电源键就是第开关。

图1 轻触式按键

图2 自锁式按键

2. 实验任务

使用开发板上的四个按键控制四个LED灯。不同按键按下时,四个LED灯显示不同效果。(由于按键1被复位键占用,故本实验中使用按键2、按键3、按键4控制LED灯显示四种状态)

当按下按键2时,4个LED灯显示从右向左流水灯效果。

当按下按键3时,4个LED灯显示从左向右流水灯效果。

当按下按键4时,4个LED灯闪烁

3. 硬件设计

本实验中,系统时钟、复位按键、按键和LED灯的管脚如下表所示。

按键控制LED管脚分配图

4. 程序设计

系统框图

运行代码:
 

Module key_led ( input i_sys_clk, input i_sys_rst_n, input [2:0] i_key, output [3:0] o_led);parameter p_0_2s_counter = 10_000_000;reg [23:0] r_0_2s_counter = 24'd0;always @ (posedge i_sys_clk or negedge i_sys_rst_n)begin if (~i_sys_rst_n) r_0_2s_counter <= 24'd0; else if (r_0_2s_counter == (p_0_2s_counter - 1'b1)) r_0_2s_counter <= 24'd0; else r_0_2s_counter <= r_0_2s_counter + 1'b1;endreg [1:0] r_led_state_switch = 2'd0;always @ (posedge i_sys_clk or negedge i_sys_rst_n)begin if (~i_sys_rst_n) r_led_state_switch <= 2'b00; else if (r_0_2s_counter == (p_0_2s_counter - 1'b1)) r_led_state_switch <= r_led_state_switch + 1'b1; else r_led_state_switch <= r_led_state_switch;endreg [3:0] r_led;always @ (posedge i_sys_clk or negedge i_sys_rst_n)begin if (~i_sys_rst_n) r_led <= 4'b0000; else if (i_key[0] == 1'b0) case (r_led_state_switch) 2'b00 : r_led <= 4'b1000; 2'b01 : r_led <= 4'b0100; 2'b10 : r_led <= 4'b0010; 2'b11 : r_led <= 4'b0001; default : r_led <= 4'b0000; endcase else if (i_key[1] == 1'b0) case (r_led_state_switch) 2'b00 : r_led <= 4'b0001; 2'b01 : r_led <= 4'b0010; 2'b10 : r_led <= 4'b0100; 2'b11 : r_led <= 4'b1000; default : r_led <= 4'b0000; endcase else if (i_key[2] == 1'b0) case (r_led_state_switch) 2'b00 : r_led <= 4'b1111; 2'b01 : r_led <= 4'b0000; 2'b10 : r_led <= 4'b1111; 2'b11 : r_led <= 4'b0000; default : r_led <= 4'b0000; endcase else r_led <= 4'b0000;endassign o_led = r_led;endModule
猜您喜欢

安规电容是电子元件中非常重要的。主要用于电源和电器产品中,确保设备的安全性和稳定性。随着科技的发展,安规电容的应用越来越。本文将详细介绍安规电容的相关知识。安规...
2025-03-26 20:05:10


其旗下的铝壳电阻产品因优异的性能和稳定的质量,应用于工业控制、电力设备、电子仪器等领域。铝壳电阻良好的散热性能和高可靠性,成为众多电子设备中不可少的重要部件。本...
2017-11-27 12:32:57

现代科技迅速发展的背景下,各种设备的性能和功能不断提升,而配件在其中是非常重要的配件。本文将重点介绍“Accessories_9.65X7.37MM_TM”这一...
2025-04-21 13:31:08

红外发射管是应用于温度测量、遥控设备及通信等领域的重要元件。根据其工作原理和结构特征,红外发射管主要可以分为以下几类。根据发射波长的不同,红外发射管可分为近红外...
2014-09-13 00:00:00

链锯是高效的园艺和木材加工工具,其规格尺寸直接影响使用效果和操作便利性。链锯的规格主要包括电机功率、链条长度和锯片直径等。电机功率通常在500W到3000W之间...
2021-01-22 00:00:00

贴片电阻通常使用数字编码来表示阻值,最常见的是三位数和四位数编码。三位数编码:前两位数字表示有效数字,第三位数字表示乘数,即10的几次方。例如,电阻上的标注为「...
2024-11-26 11:29:19

电流表是应用于电气工程和电子设备中的测量工具,其主要优势体现在以下几个方面。电流表能够提供精准的电流测量,帮助工程师和技术人员实时监控电流变化,确保设备的正常运...
2008-10-25 00:00:00

LED驱动器并非完全通用,选择和接线时需要考虑几个关键因素。这篇文章将为您解答LED驱动器的通用性问题,并提供一些接线指导。首先,LED驱动器的输出电压和电流必...
2024-09-27 00:00:00

2010-08-31 00:00:00