呼吸灯
控制一个LED灯在1s内从灭慢慢到亮,下一秒内从亮慢慢到灭。循环往复。
LED的亮度可以由点亮时间与熄灭时间长度来控制。一个毫秒里,亮0us,灭1000us,下一毫秒亮1us灭999us,下一下毫秒里,亮2us灭998us,在下一毫秒里,亮3us灭997us,依次进行下去,直到1000us亮,0us灭。
程序如下:
reg [15:0] i; //亮灯时间
reg [15:0] cnt_led; //计时器
localparam T=50_000; //1ms
reg flag=0;
always@(posedge CLKOUT0 )
if(cnt_led==T-1) begin
cnt_led<=0;
if(!flag) begin
if(i>=T) flag<=1;
else i<=i+50;
end
else begin
if(i==0) flag<=0;
else i<=i-50;
end
end
else cnt_led<=cnt_led+1;
assign led8={8{cnt_led<i}};