PWM 用按鍵控制 LED 的亮度

2021-07-09 15:00:53 字數 1647 閱讀 9876

以前寫過一篇關於 pwm 的博文,已經有一年了,鏈結如下:

文中使用了示波器來顯示不同占空比的波形。

其實,利用 led 也能通過亮度來表現出 pwm 引數的變化,用實物進行測試,效果很好,但是用 proteus 進行**試驗,卻只是看到閃爍的厲害,基本上看不出亮度的變化。

近來發現,加上乙個大電容,就可以減弱 led 的閃爍,亮度就能夠穩定一些,這樣一來,就可以用 proteus 軟體直接觀察亮度的變化了。

電路見下圖。圖中的大電容(c6)的容量是 4700uf,這個是可以隨便調整的,實際的電路就不需要它了。

圖中的占空比引數是 10,led(d1) 的顯示為「半亮」狀態。

sbit k1 = p3^2;     //定義兩個調整占空比的按鍵

sbit k2 = p3^3;

void  delay(unsigned int i)

unsigned char j;

while(i--)  for(j = 0; j 

void main()

tmod = 0x01;               //t0定時方式1

th0 = (65536 - 500) / 256; //500us@12mhz

tl0 = (65536 - 500) % 256;

tr0 = 1;

et0 = 1;

ea = 1;

a = 0;

b = 10;

while(1)  }

if(!k2) }

//以上兩行是檢查按鍵、延時消抖、修改占空比、等待按鍵釋放,b = 1~19

p0 = ((b / 10) <

void time0() interrupt 1

tl0 = (65536 - 493) % 256; //補償中斷進入時間

th0 = (65536 - 493) / 256; //500us@12mhz

a--;                       //a = 1~20

if(a == 0)   //週期=20*500us

if(a <= b)  p2 = 255;      //輸出到示波器

p1 = ~p2;   //輸出到led,低電平發光

這個程式,pwm 的週期比去年的短了一些;去年是應網友的要求,設計成 1s,有些偏長,不太實用。

這次也不用外部中斷來輸入按鍵了,改用查詢按鍵的方法。

當使用按鍵進行占空比調整的時候,led 可以顯示出來不同的亮度。幾幅截圖的畫面如下:

當 pwm 引數稍小時,亮度有些不足,這可以適當減小一些限流電阻的阻值進行彌補。

用來顯示 pwm 的 led,其中的電流是間斷的,所以,它的限流電阻可以比平常時小一些,100歐左右,是經驗資料。

製作實物電路的時候,大電容就不需要了,不用花錢去買了,呵呵

控制led 用pwm的方法控制LED亮度

在本課程中,您將學習如何通過電位計來更改led的亮度。電位器實際上是乙個可調的電阻,阻值隨意手柄的轉動而變化,模擬電路中,我們可以將電位器串聯在電路中,改變led亮度。本次實驗,電位器只提供乙個訊號,實際燈的亮度由arduino控制。二 材料準備 1 arduino uno開發板 1 麵包板 若干杜...

按鍵控制led

本教程來至yingcloud.com 使用arduino的i o 口的輸入功能即為讀取外接裝置的輸出值,我們用乙個按鍵和乙個led 小燈完成乙個輸入輸出結合使用的實驗,讓大家能簡單了解i o 的作用。按鍵開關1個 led燈乙個 220 10k 電阻各乙個 麵包板 跳線若干 arduino板 分析上圖...

中斷 按鍵控制LED燈

xjp的資源 初始化函式 init.c 進行一些初始化 include s3c24xx.h led1,led2,led4對應gpf4 gpf5 gpf6 define gpf4 out 1 define gpf5 out 1 define gpf6 out 1 define gpf4 msk 3 d...