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

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

发光二极管(LED)是应用的电子元件,因其能效高、寿命长而受到青睐。正确地接入电源是确保LED正常工作的关键步骤。本文将详细介绍发光二极管如何接电源,并提供一些...
2025-04-05 02:31:08

电子元器件中,压敏电阻是重要的保护元件,应用于电路的过压保护和浪涌抑制。很多人在使用压敏电阻时,可能会遇到不知道其型号的问题。这不仅会影响到元器件的更换和维修,...
2025-04-15 23:30:52

自恢复保险丝作为保护电路安全的重要元件,受到了关注。蓝宝(Lanbao)作为知名的自恢复保险丝品牌,其Lanbaofuse8系列因性能优越、质量稳定而深受用户喜...
2021-09-24 11:13:30

在工业和建筑领域,十字槽薄头平尾自攻螺钉因其优越的性能而受到应用。规格尺寸通常包括直径、长度和螺纹类型等。常见的直径有2.0mm、2.5mm、3.0mm等,长度...
2016-02-06 00:00:00

重要内容提示:• 近日,格科微有限公司3200万像素图像传感器产品实现量产出货。•该产品量产出货标志着其性能获得客户认可,将有助于巩固和提升格科微的核心竞争...
2023-10-19 14:20:00

断丝取出器是专门用于处理断裂丝线的工具,应用于多个领域。在纺织行业中,断丝取出器能够有效地解决织物生产过程中出现的断线问题,确保产品质量和生产效率。在电子产品维...
2009-04-30 00:00:00

基于监控计算机(PC),可编程控制器(PLC),人机界面(HMI),智能仪表,工控通信网络DCS(分布式控制系统)和FCS(现场总线控制系统)的自动化已成为现代...
2018-05-21 03:31:00

自发光疏散标识是新型的安全指示标志,具有多项显著优势。无需外部电源,依靠自身发光材料实现持续发光,确保在停电或紧急情况下仍能清晰可见,指引人们安全撤离。自发光标...
2009-06-30 00:00:00

2023-08-06 00:00:00

我们都知道,座烧的通用编程器,在支持不同芯片种类时,由于芯片封装不同等原因,可能需要使用不同的编程器适配器。那么面对玲琅满足的适配器型号,我们如何快速判断其代表...
2018-06-29 10:01:00