outputer 2022-03-16 15:19 采纳率: 90%
浏览 48
已结题

向大家咨询一个利用开发板的按键控制LED灯的问题

#题目要求:利用开发板的四个按键来控制四颗LED灯,以实现不同的显示效果。具体要求为:
1.无按键按下,LED全灭
2.按下key[0],从右向左流水灯
3.按下key[1],从左向右流水灯
4.按下key[2],LED灯闪烁
5.按下key[4],LED全亮
根据以下代码得到的结果是:无按键按下时LED不亮。单独按下任一按键LED都无反应。只有同时按下key[0],key[1]和key[2]时led交替闪烁。刚接触开发板,真不知道问题出在哪里

`timescale 1ns / 1ps

    module key_led(
    input sys_clk,
    input sys_rst_n,
    input [3:0]key,
    output [3:0]led
    );
    
  reg [23:0] cnt;
  reg [3:0] led_middle;  
  
  assign led = led_middle;
  
  always@(posedge sys_clk or negedge sys_rst_n)begin
    if(!sys_rst_n)
      cnt <= 24'd0;
    else if(cnt < 24'd999_9999)
           cnt <= cnt + 24'd1;
         else 
           cnt <= 24'd0;
    end
    
    always@(*)begin
    case(key)
    4'b0000 : led_middle = 4'b0000;//led all off
    
    4'b0001 : begin                //key[0]flow led right to lift
                if(cnt < 24'd249_9999 )
                  led_middle = 4'b0001;
                else if(cnt < 24'd499_9999)
                       led_middle = 4'b0010;
                     else if(cnt < 24'd749_9999)
                            led_middle = 4'b0100;
                          else
                            led_middle = 4'b1000;
              end
              
    4'b0010 : begin                //key[1]flow led left to right
               if(cnt <24'd249_9999 )
                  led_middle = 4'b1000;
                else if(cnt < 24'd499_9999)
                       led_middle = 4'b0100;
                     else if(cnt < 24'd749_9999)
                            led_middle = 4'b0010;
                          else
                            led_middle = 4'b0001;
              end
              
    4'b0100 : begin                //key[2]led twinkle
               if(cnt <24'd499_9999 )
                  led_middle = 4'b1111;
                else
                  led_middle = 4'b0000;
              end
              
    4'b1000 : led_middle = 4'b1111;//key[3]led all on
    default led_middle = 4'b0000;
    
    endcase
    end
endmodule

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2022-03-16 16:04
    关注

    你看下电路图,估计是键盘电平整反了,应该是低电平 0 是按下键盘
    你把 25 行代码改成

    case(~key)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月16日

悬赏问题

  • ¥15 汇川EASY521plc电子凸轮
  • ¥15 C++ 如何判断设置快捷键来实现隐藏/显示窗口
  • ¥15 关于#材料工程#的问题:有没有具有电子阻挡层和空穴阻挡层的电池仿真silvaco代码例子或者其他器件具有阻挡层例子的silvaco代码(最好还有相关文献)
  • ¥60 基于MATLAB的TAOD算法
  • ¥15 Groimp使用疑问
  • ¥15 MDK–ARM里一直找不到调试器
  • ¥15 oracle中sql查询问题
  • ¥15 vue使用gojs3.0版本,在nodeDataArray中的iconSrc使用gif本地路径,展示出来后动画是静态的,不是动态的
  • ¥100 代写个MATLAB代码,有偿
  • ¥15 ansys electronics 2021 R1安装报错,错误代码2,如图