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日

悬赏问题

  • ¥15 (标签-matlab|关键词-m3)
  • ¥20 做一个web书店,带答辩
  • ¥15 #求带 python,使用pycharm爬取智联招聘数据资源并保存为Excel文件,同时以图表形式呈现
  • ¥15 学校优化算法怎么样,国内用的多吗?
  • ¥15 微信购物商城购物车的所有功能以及购物车,和首页的搜索功能
  • ¥40 servlet的web程序部署出错
  • ¥50 activiti 新建流程系列问题
  • ¥50 为什么我版本升级之后运行速度变慢5倍??
  • ¥15 如何在gazebo中加载机械臂和机械手
  • ¥15 纯运放实现隔离采样方案设计