首页 > 技术 > 内容

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

时间:2025-11-30  作者:Diven  阅读:0

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

本实验我们将介绍如何使用按键控制多个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

猜您喜欢


压敏电阻作为重要的电子元器件,应用于电路保护领域。FOSAN(富捷电子)作为国内知名的压敏电阻品牌,优良的性能和丰富的产品线赢得了广大客户的青睐。本文将详细介绍...
2012-10-12 04:49:45
现代电子设备和工业自动化领域,连接器的作用不可忽视。CONN_50.8X5.08MM_TM是一款专为高效连接而设计的连接器,因其优越的性能和广泛的应用而备受关注...
2025-03-04 01:14:31
隔离式RS485/422收发器(带电源)在工业自动化和数据通信领域中是非常重要的配件。能够有效地隔离信号传输,防止地电位差造成的干扰,从而提高系统的稳定性和可靠...
2016-03-11 00:00:00
熟悉西门子的人都知道,西门子的PLC支持的语言很多,除了最基本的LAD,FBD,STL之外,还有很多在国内不是很常见的语言,其中包括GRAPH,SCL,CFC,...
2019-07-04 17:47:00
自动驾驶汽车传感器是实现自动驾驶功能的关键组件,它们通过采集和处理车辆周围环境的信息,为自动驾驶系统提供必要的感知和决策依据。以下是对自动驾驶汽车传感器主要类型...
2024-07-23 16:00:00
固液混合铝电解电容器是应用于电子设备中的关键组件,其规格和尺寸因型号和用途而异。通常,这类电容器的电压范围从6.3V到450V不等,电容量则可从几微法到几千微法...
2014-01-11 00:00:00
贴片电阻规格尺寸中的字母a和b分别代表其长和宽。例如,常见的0402封装尺寸,表示该电阻的长为0.04英寸(约1.0毫米),宽为0.02英寸(约0.5毫米)。 ...
2024-11-26 11:29:32
外六角喉塞是常见的机械配件,应用于管道连接和密封领域。外形呈六角形,便于使用扳手等工具进行安装和拆卸。喉塞内部通常有一个圆形的孔,用于连接管道或其设备,确保流体...
2008-02-22 00:00:00
现代电子设备和电气系统中,连接器的选择非常重要。TERMINAL_8.62X10.4MM作为一种高性能连接器,凭借其独特的设计和优异的性能,在各类应用中得到了广...
2025-02-27 00:34:41