设为首页收藏本站帮助中心
查看: 45|回复: 0
收起左侧

Quartus Verilog HDL/FPGA 按键控制共阳三基色全彩 RGB LED 随机显示一种颜色

[复制链接]
发表于 2022-1-7 18:24:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?加入我们

x
main.png
上电后共阳RGB LED熄灭,按键按下后,随机变换一个颜色。
  1. module main(
  2.         input clk,                        //50Mhz 时钟输入 Pin17
  3.         input key,                        //按键 Pin144 (低电平按下)
  4.         //RGB 共阳LED (低电平点亮)
  5.         output red_led,        //Pin73  
  6.         output green_led,        //Pin74
  7.         output blue_led        //Pin75
  8. );

  9. //RGB颜色值 值越大越亮
  10. reg [7:0] red = 0;
  11. reg [7:0] green = 0;
  12. reg [7:0] blue = 0;

  13. reg [7:0] i = 0;
  14. reg [3:0] j = 0;
  15. reg [23:0] k = 0;
  16. reg [15:0] l = 0;

  17. reg [7:0] KEYms = 0;                //按键按下计数时间毫秒 (最大255) 松开清0
  18. assign red_led = (i >= red);
  19. assign green_led = (i >= green);
  20. assign blue_led = (i >= blue);

  21. always @(posedge clk) begin
  22.         k = k + 1;
  23.         //PWM发生器
  24.         j = j + 1;
  25.         if(j == 10) begin
  26.                 j = 0;
  27.                 i = i + 1;
  28.                 if(&i) begin
  29.                         i = 0;
  30.                 end
  31.         end
  32.         //按键消抖
  33.         l = l + 1;
  34.         if(l == 50000) begin
  35.                 l = 0;
  36.                 if(key) begin
  37.                         KEYms = 0;
  38.                 end else begin
  39.                         if(!(&KEYms)) begin
  40.                                 KEYms = KEYms + 1;
  41.                         end
  42.                 end
  43.         end
  44. end

  45. always @(posedge KEYms >= 25) begin                //按键按下25毫秒
  46.         red <= k[23:16];
  47.         green <= k[15:8];
  48.         blue <= k[7:0];
  49. end
  50. endmodule
复制代码

相关帖子

这个小可爱很神秘,什么都没留下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则