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

时间:2025-04-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-04-17 13:32:02

现代电子设备中,保护电路免受过电压和浪涌电流的影响非常重要。Littelfuse压敏电阻(Varistor)作为重要的电压保护元件,应用于各种电子产品中。本文将...
2025-04-14 09:30:35

电荷泵作为一种无感式电源转换技术,应用于便携式设备和嵌入式系统等多种应用场景。其设计简单、成本低廉,能够在不使用电感器的情况下实现电压的提升或降低,成为众多电子...
2024-04-15 00:00:00

截止阀是常见的阀门类型,主要用于控制流体的流动。基本定义是通过旋转阀杆来开启或关闭流体通道,从而实现流量的调节和截断。截止阀通常由阀体、阀盖、阀杆和阀瓣等组成,...
2024-10-20 00:00:00

你是否厌倦了传统电池管理系统的繁琐和不便?是否渴望更加自由、智能的用电体验?无线电池管理系统应运而生,为你开启无线电力新时代!无线电池管理系统,顾名思义,就是摆...
2024-08-11 00:00:00

焊嘴作为焊接工具中的重要组成部分,其参数直接影响焊接质量和效率。在选择焊嘴时,有几个关键参数需要关注。首先是焊嘴的尺寸,通常以直径来表示。焊嘴的直径影响焊接的热...
2023-05-05 00:00:00


2010-11-11 00:00:00

现代工业和电子设备中,连接器的性能直接影响到设备的整体效率和稳定性。TERMINAL_57.95X11.1MM作为一种新型连接器,凭借其独特的设计和优良的性能,...
2025-03-09 10:26:45

贴片电阻R510的阻值是0.51Ω。贴片电阻的阻值通常用三位数字来表示,前两位数字表示有效数值,第三位数字表示10的幂次方。 R510中的「51」代表有效数值5...
2024-11-26 11:29:58