四个按键控制led的四种变化(按键控制led)(附源码)

这篇具有很好参考价值的文章主要介绍了四个按键控制led的四种变化(按键控制led)(附源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、实验任务

使用开发板上的四个按键控制四个LED灯。按下不同的按键时,四个LED灯显示不同效果。本实验是在EP4CE6F17C8开发板上实现,仿真请用modelsim Altera
四个按键控制led灯,fpga开发

四个按键控制led灯,fpga开发

二、系统框图

四个按键控制led灯,fpga开发

三、代码实现

module key_led (
    input clk,                      //时钟周期
    input rst_n,                    //复位信号
    input [3:0] key ,               //4个按键,提供4个位宽
    output reg [3:0] key_led        //4个led灯,提供4个位宽
);
reg [1:0] state;                    //两位宽的状态寄存器,存储4个状态
reg [25:0] cnt_1s;                  //存储1s的寄存器


parameter MAX_1s = 26'd49_999_999;//1s的时钟周期


//1s计数器
always @(negedge rst_n or posedge clk) begin
    if (!rst_n) begin
        cnt_1s <= 26'd0;
    end
    else if (cnt_1s == MAX_1s) begin
        cnt_1s <= 26'd0;
    end
    else begin
        cnt_1s <= cnt_1s + 26'd1;
    end
end

//状态每隔1s进行跳转
always @(negedge rst_n or posedge clk) begin
    if (!rst_n) begin
        state <= 2'd0;
    end
    else if (cnt_1s == MAX_1s) begin            //每隔1s进入下一个状态
        state <= state + 2'd1;
    end
    else begin
        state <= state;
    end
end

//不同按键不同led灯闪烁方式
always @(negedge rst_n or posedge clk) begin
    if (!rst_n) begin
        key_led <= 4'b0000;
    end
    else if (key[0] == 0) begin            //key0键按下,从右往左流水灯
        case (state)
            2'd0: key_led <= 4'b0001;
            2'd1: key_led <= 4'b0010;
            2'd2: key_led <= 4'b0100;
            2'd3: key_led <= 4'b1000;
            default: key_led <= key_led ;
        endcase
    end
     else if (key[1] == 0) begin            //key1键按下,从左往右流水灯
        case (state)
            2'd0: key_led <= 4'b1000;
            2'd1: key_led <= 4'b0100;
            2'd2: key_led <= 4'b0010;
            2'd3: key_led <= 4'b0001;
            default: key_led <= key_led ;
        endcase
    end
     else if (key[2] == 0) begin            //key2键按下,led灯闪烁
        case (state)
            2'd0: key_led <= 4'b1111;
            2'd1: key_led <= 4'b0000;
            2'd2: key_led <= 4'b1111;
            2'd3: key_led <= 4'b0000;
            default: key_led <= key_led ;
        endcase
    end
     else if (key[3] == 0) begin            //key3键按下,灯常亮
        case (state)
            2'd0: key_led <= 4'b1111;
            2'd1: key_led <= 4'b1111;
            2'd2: key_led <= 4'b1111;
            2'd3: key_led <= 4'b1111;
            default: key_led <= key_led ;
        endcase
    end
    else begin
        state <= state;
    end
end



endmodule

仿真代码:

`timescale 1ns/1ns
module key_led_tb (
);
    reg clk;
    reg rst_n;
    reg [3:0] key;
    wire [3:0] key_led;

    parameter MAX_1s = 9;
    parameter CYCLE = 20;

    always #(CYCLE/2) clk <= ~clk;

    initial begin
        clk = 1'b0;
        rst_n = 1'b0;
        #(CYCLE);
        rst_n = 1'b1;
        key = 4'b1111;
        #(4*(MAX_1s + 1)*CYCLE);  //4个state的时间
        key = 4'b1110;
        #(4*(MAX_1s + 1)*CYCLE);  
        key = 4'b1101;
        #(4*(MAX_1s + 1)*CYCLE);  
        key = 4'b1011;
        #(4*(MAX_1s + 1)*CYCLE);  
        key = 4'b0111;
        $stop;
    end


    key_led  #(.MAX_1s(MAX_1s))u_key_led(
        .clk(clk),
        .rst_n(rst_n),
        .key(key),
        .key_led(key_led)
    );


    
endmodule

四、引脚分配

四个按键控制led灯,fpga开发

五、总结

注意:该实验并未进行按键消抖,需一直按着按键才能让该按键所操控的led变化功能实现。文章来源地址https://www.toymoban.com/news/detail-737855.html

到了这里,关于四个按键控制led的四种变化(按键控制led)(附源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA/Verilog HDL/AC620零基础入门学习——第一个项目按键控制LED

    最近要考试了,所以我赶紧补习FPGA,我们用的是小梅哥的AC620开发板,软件是Quartus。推荐看这个视频教程:零基础轻松学习FPGA,小梅哥FPGA设计思想与验证方法视频教程 用按键控制LED灯的亮灭就是一个二选一多路器,两个IO,a、b,可以是高电平,也可以是低电平。 输入按键

    2024年02月05日
    浏览(52)
  • STM32矩形(矩阵)按键(键盘)输入控制LED灯 ——4*4矩阵按键源码解析

    本文基于标准函数库的工程实现stm32F103C8T6使用4*4的矩阵按键控制LED灯的亮灭及闪烁等功能。 程序源码:链接:https://pan.baidu.com/s/1_MPhvMduKCTP0MPG-Gtw3A?pwd=2syk  提取码:2syk 文章目录 一、矩形键盘介绍 1、硬件电路基本原理 2、两种识别方法介绍 3、硬件接线即使用 二、程序源码

    2024年02月04日
    浏览(45)
  • LED屏幕3D特效的四种原理

    2D与3D的区别在于,前者是平面显示,而后者是立体显示。从2D到带眼镜观看3D,再到裸眼3D技术,无不说明技术的进步。随着裸眼3D技术越来越成熟,LED显示屏厂家在LED电子大屏幕的基础上搭载3D技术的案例越来越多。那么,LED电子大屏幕3D特效是如何实现的?其四种原理又分别

    2024年02月16日
    浏览(35)
  • 触摸按键控制LED灯

    目录 1.理论 2.代码 2.1 touch_ctrl_led.v 2.2 tb_touch_ctrl_led 以上的波形图的touch_flag是采用组合逻辑的方式产生的。 以上的touch_flag是采用时序逻辑产生的,时序逻辑会延迟一拍。 以上是上升沿和下降沿的组合逻辑和时序逻辑实现,逻辑或的写法刚好是逻辑与的两个寄存器的值反过来

    2024年01月23日
    浏览(48)
  • SoC-按键控制led

    1.hps_0.h 2.main.c SoC

    2024年02月10日
    浏览(38)
  • 按键控制LED闪烁实验

    实验任务: 本节实验任务是使用底板上的PL_KEY0和PL_KEY1按键来控制底板上的PL_LED0和PL_LED1两个LED的闪烁方式。没有按键按下时,两个LED保持常亮;如果按键0按下,则两个LED交替闪烁;如果按键1按下,则两个LED同时闪烁。 模块示意图:   模块代码实现: modulekey_led( input     

    2024年02月04日
    浏览(43)
  • 独立按键控制led灯

    今天,我们来学习关于独立按键来控制led灯的知识。 1.独立按键控制led灯亮灭 首先是来用一个独立按键控制一个led灯的亮灭。其中独立按键由P3表示,其具体电路图如下                     其中第一个按键为P3_1,第二个按键为P3_0,第三个按键为P3_2,第四个按键为P3_3,很明

    2024年02月08日
    浏览(46)
  • 按键控制 LED 实验

    目录 1 按键简介 2 实验任务 3 硬件设计 4 程序设计 5 下载验证         按键开关是一种电子开关,属于电子元器件类。         轻触式按键         自锁式按键         使用底板上的 PL_KEY0 和 PL_KEY1 按键来控制底板上的 PL_LED0 和 PL_LED1 两个 LED 的闪烁方式。没有

    2024年02月11日
    浏览(39)
  • 【stm32----按键中断实验,按键控制LED灯】

    1、按下KEY1,LED1亮,再次按下KEY1,LED1灭; 2、按下KEY2,LED2亮,再次按下KEY2,LED2灭; 3、按下KEY3,LED3亮,再次按下KEY3,LED3灭; 一、头文件 1、gpio.h 2、key.h 二、初始化函数及功能函数 1、gpio.c 2、key.c 三、中断处理函数 do_irq.c 四、主函数 main.c 依次按下key3、key2、key1、key2

    2024年02月04日
    浏览(51)
  • IntelliJ IDEA 控制台中文乱码的四种解决方法

    IntelliJ IDEA 如果不进行配置的话,运行程序时控制台有时候会遇到中文乱码,中文乱码问题非常严重,甚至影响我们对信息的获取和程序的跟踪。开发体验非常不好。 本文中我总结出四点用于解决控制台中文乱码问题的方法,希望有助于大家。 注意 :下面根据我日常工作的

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包