首页 > 技术 > 内容

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

时间:2025-12-07  作者: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

猜您喜欢


温度保险丝作为重要的安全保护元件,越来越受到关注。CHNHACE作为知名的温度保险丝品牌,其产品因性能稳定、品质可靠而受到青睐。本文将详细介绍CHNHACE温度...
2020-07-15 03:57:30
陕西科技大学马建中教授、鲍艳教授、张文博副教授团队在Advanced FiberMaterials上发表了题为“Synergy of ZnONanowire A...
2024-11-28 11:27:00
本文想针对测试中一种很常见的测试场景,即参数化测试,继续聊聊关于测试的话题,并尝试将这几个测试框架串联起来,做一个横向的比对,加深理解。1、什么是参数化测...
2020-11-08 09:06:00
现代工业与科技发展中,连接器是非常重要的配件。而CONN_44.5X4MM_TM作为特定型号的连接器,因其独特的设计和功能,应用于各种电子设备和机械系统中。本文...
2025-04-23 17:31:11
电磁阀是利用电磁力来控制流体流动的自动化元件,应用于各类工业和日常生活中。主要作用是开启和关闭流体通道,从而实现对流体的精确控制。电磁阀可以快速响应,通常在毫秒...
2017-07-22 00:00:00
现代电子技术中,二极管作为重要的半导体器件,应用于各种电路中。尤其是pin二极管和肖特基二极管,各自具有独特的特性和应用场景。本文将对这两种二极管进行详细的比较...
2025-04-06 12:01:06
在现代工业生产中,防静电袖套作为保护工具,越来越受到重视。防静电袖套主要有以下几个区别。材料不同。市场上常见的防静电袖套主要由聚酯、尼龙等合成纤维制成,这些材料...
2019-08-12 00:00:00
223电容是电子元件,很多人对很感兴趣。的容量和应用场景都很重要。本文将详细介绍223电容的相关知识。223电容的定义223电容是电容器。的数值是22000皮法...
2025-03-21 06:01:06
LED吊灯明亮、节能又美观,已经成为许多家庭的照明首选。但是,如果LED吊灯的驱动器出现故障,就会带来各种各样的问题。 了解LED吊灯驱动器损坏的常见表现,可以...
2024-07-30 00:00:00