首页 > 编程知识 正文

远程控制led灯python程序,python灯光开关控制

时间:2023-05-05 12:33:38 阅读:216484 作者:438

//通过按键控制对应的led灯亮灭,按一下亮,再按一下灭,消抖时间20ms

module key_led

(

input clk , rst_n,

input [2:0]key ,

output  led0,led1,led2

);

reg [2:0] key_rst;

always @(posedge clk or negedge rst_n)

begin

if (!rst_n)

key_rst <= 3'b111 ;

else

key_rst <= key ;

end

reg [2:0] key_rst_r ;

always @(posedge clk or negedge rst_n)

begin

if (!rst_n)

key_rst_r <= 3'b111;

else

key_rst_r <= key_rst ;

end

wire [2:0]key_en = key_rst_r & (~key_rst) ;

///

reg [19:0] cnt;

always @(posedge clk or negedge rst_n)

begin

if (!rst_n)

cnt <= 20'd0 ;

else if(key_en)

cnt <= 20'd0 ;

else

cnt <= cnt + 20'd1 ;

end

///

reg [2:0] low_sw ;

always @(posedge clk or negedge rst_n)

begin

if (!rst_n)

low_sw <= 3'b111 ;

else if (cnt ==  20'hfffff)

low_sw <= key ;

// else

//  low_sw <= low_sw; //为什么这句加上去按键key[0]会不稳定??

end

reg [2:0] low_sw_r ;

always @(posedge clk or negedge rst_n)

begin

if (!rst_n)

low_sw_r <= 3'b111 ;

else

low_sw_r <= low_sw;

end

wire [2:0]led_ctrl = low_sw_r[2:0] & (~low_sw[2:0]) ;

reg [2:0] led_out ;

always @(posedge clk or negedge rst_n)

begin

if (!rst_n)

led_out <= 3'b111 ;

else

begin

if(led_ctrl[0]) led_out[0] <= ~led_out[0] ;

if(led_ctrl[1]) led_out[1] <= ~led_out[1] ;

if(led_ctrl[2]) led_out[2] <= ~led_out[2] ;

end

end

assign led0 = led_out[0]? 1'd1 :1'd0;

assign led1 = led_out[1]? 1'd1 :1'd0;

assign led2 = led_out[2]? 1'd1 :1'd0;

endmodule

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。