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

时间:2025-06-17  作者: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
猜您喜欢

贴片电阻上的150代表其阻值为150Ω(欧姆)。 这是一种简化的标识方法,通常用于小尺寸的贴片电阻。三位数字标识法中,前两位数字代表有效数字,第三位数字代表10...
2024-11-29 10:26:40

SOIC20W_300MIL是常见的集成电路封装形式,应用于电子设备的设计与制造中。随着科技的不断进步,对电子元件的需求日益增加,SOIC20W_300MIL因...
2025-04-25 04:01:42

贴片电阻上的03C并不是直接表示阻值,而是代表其尺寸规格。03C表示的是0201封装尺寸,指的是英制尺寸为0.02英寸长,0.01英寸宽。换算成公制单位,大约是...
2024-11-29 10:26:05

现代科技迅速发展的时代,配件的选择对设备的整体性能非常重要。今天,我们将重点介绍一种特殊的配件——Accessories_11X4.25MM_SM。这款配件以其...
2025-03-05 13:56:58

光电晶体管是新型的电子器件,应用于光电转换领域。其主要区别在于工作原理、材料和应用场景。工作原理上,光电晶体管利用光信号来控制电流的流动,与传统晶体管的电信号控...
2021-03-01 00:00:00

光敏电阻独特的光电转换能力,在众多应用场景中是不可少的配件。作为行业内的佼佼者,TT Electronics(英国)生产的光敏电阻,凭借其很好的性能和的应用领域...
2019-01-29 19:05:30


贴片电阻虽小,但在电路设计中是举足轻重的配件。正确选择和使用贴片电阻,需要关注以下四个关键参量:阻值: 这是电阻最基本的参数,代表其对电流的阻碍能力。选择合适的...
2024-11-29 10:25:48

上海直川为国内外通信铁塔以及各种类型的架空输电线提供了相应的倾角监测方案,以及成熟的产品解决方案。传统的通信铁塔维护主要靠定期巡检、人为观测是非常必要的安全防护...
2022-07-28 14:48:00

碳化硅晶闸管(可控硅)是应用于电力电子领域的重要元件,其性能参数直接影响电路的效率和稳定性。关键参数是额定电压(V_R),通常表示可控硅在正常工作条件下能够承受...
2018-08-12 00:00:00