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

向大家咨询一个利用开发板的按键控制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日

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?