pwm——脈寬調變訊號(pulse width modulation),它利用微處理器的數字輸出來實現,是對模擬電路控制的一種非常有效的技術,廣泛應用於測量、通訊、功率控制與變化等許多領域。
採用pwm的方式,在固定的頻率下,採用占空比的方式來實現led亮度的變化。占空比為0,led燈不亮,占空比為100%,則led燈最亮。所以將占空比從0到100%,再從100%到0不斷變化,就可以實現led燈實現特效呼吸。
變亮:當cnt2 < cnt3時為高電平,反之為低電平。
變暗:當cnt2 < cnt3時為低電平,反之為高電平。
先分頻出延時為1us的延時電路,作為後面電路的驅動電路,然後是1ms延時和1s延時,會產生兩個計數器,剛好是1000倍的關係。
(1)在第一秒時,隨著cnt3由0到999逐漸增大,每乙個1ms的占空比通過cnt2去調節。當cnt2 < cnt3時為高電平,反之為低電平。 因此,隨著cnt3的逐漸增大,高電平的時間逐漸增大,直到100%。
(2)在第二秒時,隨著cnt3由0到999逐漸增大,每乙個1ms的占空比通過cnt2去調節。當cnt2 < cnt3時為低電平,反之為高電平。 因此,隨著cnt3的逐漸增大,高電平的時間逐漸減小,直到0。
設計圖如上所示,完後就可以照圖施工了,附上部分**。
1產生的pwm訊號原來是一位的,所以最後要是需要控制多個led的亮滅,使用乙個位拼接運算即可,如最後一行**所示。//延時1us
2always @(posedge mclk or
negedge
rst_n)
3begin
4if(!rst_n)
5 cnt1 <= 6
'b0;
6else
if(cnt1 < stop_50 - 1
'b1)
7 cnt1 <= cnt1 + 1
'b1;
8else
9 cnt1 <= 6
'b0;
10end
11assign delay_1us = (cnt1 == stop_50 - 1
'b1)?1
'b1:1
'b0;
1213
//延時1ms
14always @(posedge mclk or
negedge
rst_n)
15begin
16if(!rst_n)
17 cnt2 <= 10
'b0;
18else
if(delay_1us)
19begin
20if(cnt2 < stop_1000 - 1
'b1)
21 cnt2 <= cnt2 + 1
'b1;
22else
23 cnt2 <= 10
'b0;
24end
25end
26assign delay_1ms = ((delay_1us == 1
'b1) && (cnt2 == stop_1000 - 1
'b1))?1
'b1:1
'b0;
2728
//延時1s
29always @(posedge mclk or
negedge
rst_n)
30begin
31if(!rst_n)
32 cnt3 <= 10
'b0;
33else
if(delay_1ms)
34begin
35if(cnt3 < stop_1000 - 1
'b1)
36 cnt3 <= cnt3 + 1
'b1;
37else
38 cnt3 <= 10
'b0;
39end
4041
end42
assign delay_1s = ((delay_1ms == 1
'b1) && (cnt3 == stop_1000 - 1
'b1))?1
'b1:1
'b0;
4344
//state change
45always @(posedge mclk or
negedge
rst_n)
46begin
47if(!rst_n)
48 display_state <= 1
'b0;
49else
if(delay_1s)//
每一秒切換一次led燈顯示狀態
50 display_state <= ~display_state;
51else
52 display_state <=display_state;
53end
5455
//pwm訊號的產生
56always @(posedge mclk or
negedge
rst_n)
57begin
58if(!rst_n)
59 pwm <= 1
'b0;
60else
61case
(display_state)621
'b0: pwm <= (cnt2 < cnt3)?1
'b1:1
'b0;631
'b1: pwm <= (cnt2 < cnt3)?1
'b0:1
'b1;
64default: pwm <=pwm;
65endcase
66end
6768
//位拼接使得輸出八位led呼吸燈
69assign led_out = };
70
知乎id:ninghechuan
微博id:ninghechuan
什麼是脈寬調變 PWM
脈寬調變 pwm 是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量 通訊到功率控制與變換的許多領域中。模擬訊號的值可以連續變化,其時間和幅度的解析度都沒有限制。9v電池就是一種模擬器件,因為它的輸出電壓並不精確地等於9v,而是隨時間發生變化,並可取任何實數值。與此類...
pwm 正弦波 PWM簡介 脈寬調變是如何工作的
變頻空調中的 變頻 指的是什麼?為什麼變頻會更省電?本文注意介紹soc設計中常見的ip pwm pwm是脈衝寬度調製 pulse width modulation 的縮寫。是一種利用數字輸出來對模擬電路進行控制對一種非常有效的技術。它能夠以節能 通常更安靜 的方式來控制電機的速度 加熱器的熱輸出等等...
脈寬調變 PWM 的基本原理及其應用例項
脈寬調變 pwm 是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量 通訊到功率控制與變換的許多領域中。模擬電路 模擬訊號的值可以連續變化,其時間和幅度的解析度都沒有限制。9v電池就是一種模擬器件,因為它的輸出電壓並不精確地等於9v,而是隨時間發生變化,並可取任何實數...