LED 一般是恒流操作的,如何改變 LED 的亮度呢?答案就是 PWM 控制。在一定的
頻率的方波中,調整高電平和低電平的占空比,即可實現。比如我們用低電平點亮一個 LED
燈,我們假設把一個頻率周期分為 10 個時間等份,如果方波中的高低電平占空比是 9:1,
這是就是一個比較暗的亮度,如果方波中高低電平占空比是 10:0,這時,全部是高電平,
燈是滅的。如果占空比是 5:5,就是一個中間亮度,如果高低比是 1:9,是一個比較亮的
亮度,如果高低是 0:10,這時全部是低電平,就是最亮的。
實際上應用中,電視屏幕墻中的幾十百萬 LED 象素都是這樣控制的,而且每一個象素
都有紅綠藍 3 個 LED,每個 LED 可以變化的亮度是幾百到幾萬或者更多的級別,以實現真
彩色的顯示。還有在您的手機中,背光燈的亮度如果是可以變化的,也應該是這種工作方式。
目前的城市彩燈也有很多都使用了 LED,需要控制亮度是也是 PWM 控制。
下面來分析我們的例程,在這個例程中,我們將定時器 2 溢出定為 1/1200 秒。每 10
次脈沖輸出一個 120HZ 頻率。這每 10 次脈沖再用來控制高低電平的 10 個比值。這樣,在
每個 1/120 秒的方波周期中,我們都可以改變方波的輸出占空比,從而控制 LED 燈的 10 個
級別的亮度。
為什么輸出方波的頻率要 120HZ 這么高?因為如果頻率太低,人眼就會看到閃爍感
覺。一般起碼要在 60HZ 以上才感覺好點,120HZ 就基本上看不到閃爍,只能看到亮度的變
化了。
下面請看程序,程序中有比較多的注釋:
―――――――――――――――――――――――
#define uchar unsigned char //定義一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一個 52 標準內核的頭文件
sbit P10 = P1^0; //要控制的 LED 燈
sbit K1= P3^2; //按鍵 K1
uchar scale;//用于保存占空比的輸出 0 的時間份額,總共 10 份
char code dx516[3] _at_ 0x003b;//這是為了仿真設置的
//模擬 PWM 輸出控制燈的 10 個亮度級別
void main(void) // 主程序
{
uint n;
RCAP2H =0xF3; //賦 T2 的預置值,溢出 1 次是 1/1200 秒鐘
RCAP2L =0x98;
TR2=1; //啟動定時器
ET2=1; //打開定時器 2 中斷
EA=1; //打開總中斷
while(1) //程序循環
{ ;//主程序在這里就不斷自循環,實際應用中,這里是做主要工作
for(n=0;n<50000;n++); //每過一會兒就自動加一個檔次的亮度
scale++;
if(scale==10)scale=0;
}
}
//1/1200 秒定時器 2 中斷
timer2() interrupt 5
{
static uchar tt; //tt 用來保存當前時間在一秒中的比例位置
TF2=0;
tt++;
if(tt==10) //每 1/120 秒整開始輸出低電平
{
tt=0;
if(scale!=0) //這里加這一句是為了消除滅燈狀態產生的鬼影
P10=0;
}
if(scale==tt) //按照當前占空比切換輸出高電平
P10=1;
}
――――――――――――――――――
在主程序中,每延時一段時間,就自動換一個占空比,以使亮度自動變化,方便觀察。
編譯,運行,看結果。
可以看到,LED 的亮度以每種亮度 1 秒左右不斷變化,共有 10 個級別。
資源簡介:剛學單片機 模擬PWM輸出控制燈的10個亮度級別
上傳時間: 2014-01-11
上傳用戶:lanhuaying
資源簡介:模擬PWM輸出控制燈的10個亮度級別,C語言編寫,51平臺
上傳時間: 2013-12-24
上傳用戶:龍飛艇
資源簡介:單片機模擬PWM輸出控制燈的10個亮度級別,C語言版
上傳時間: 2016-01-11
上傳用戶:sxdtlqqjl
資源簡介:模擬PWM輸出控制燈的10個亮度級別,51單片機
上傳時間: 2017-09-28
上傳用戶:1109003457
資源簡介:LED 一般是恒流操作的,如何改變 LED 的亮度呢?答案就是 PWM 控制。在一定的 頻率的方波中,調整高電平和低電平的占空比,即可實現。比如我們用低電平點亮一個 LED 燈,我們假設把一個頻率周期分為 10 個時間等份,如果方波中的高低電平占空比是 9:1, 這是...
上傳時間: 2017-11-06
上傳用戶:szcyclone
資源簡介:51單片機入門教程30課軟件工程源碼+文檔說明51單片機入門例程TXT第01課,了解單片機及單片機的控制原理和DX516的用法,控制一個L第02課,用指令方式延時閃爍LED燈第03課,跑馬燈試驗第04課,讀IO,用按鈕控制點燈第05課,標記的用法,用一個按鍵控制1個LED燈...
上傳時間: 2021-11-10
上傳用戶:
資源簡介:SH401.C 單片機驅動直流電機的例程 SH402.C 單片機數模輸出控制LED亮度的例程 SH403.C 單片機PWM輸出控制電機的轉角 404 介紹光耦的作用 SH405.C 單片機驅動壓電應變片的例程 SH406.C 單片機控制語音芯片的例程 SH407.C 單片機控制充電芯片的例程 SH40...
上傳時間: 2013-11-25
上傳用戶:dave520l
資源簡介:8051中利用時鐘控制實現PWM輸出的簡單模擬程序,用LED燈的亮度來模擬顯示脈寬
上傳時間: 2014-01-17
上傳用戶:cjf0304
資源簡介:基于Atmel ATMega88+ATA682的應用實例 主要功能包括: 1) PWM輸出控制 2) H-Bridge,4 POWER FET 驅動 3) 模擬量比較
上傳時間: 2013-12-12
上傳用戶:miaochun888
資源簡介:一個51MCU.電壓0~5V輸入轉PWM輸出控制的原代碼.
上傳時間: 2016-11-04
上傳用戶:13215175592
資源簡介:cpld的PWM輸出控制,初學cpld良好例程
上傳時間: 2013-08-13
上傳用戶:qwe1234
資源簡介:舵機的驅動程序,用ATMEGA16編寫的,使用定時中斷模擬PWM輸出20Hz頻率,占空比可調.
上傳時間: 2013-11-29
上傳用戶:hfmm633
資源簡介:這是一個由C語言編寫的PWM技術控制燈炮亮暗的程序.亮暗分為幾級,由獨立按鈕調節.
上傳時間: 2016-03-22
上傳用戶:AbuGe
資源簡介:51 模擬PWM輸出,此程序是利用51單片機控制輸出PWM信號。
上傳時間: 2014-01-27
上傳用戶:趙云興
資源簡介:cpld的PWM輸出控制,初學cpld良好例程
上傳時間: 2014-12-07
上傳用戶:徐孺
資源簡介:最小生成樹:一個單位內的10個辦公點通過局域網連接,輸入辦公室內的連接線,輸出成本最低的局域網連接
上傳時間: 2013-12-06
上傳用戶:趙云興
資源簡介:單片機輸出控制電路的制作
上傳時間: 2013-10-10
上傳用戶:lbbyxmoran
資源簡介:設計一個PLC控制系統的七個步驟
上傳時間: 2013-10-27
上傳用戶:asdstation
資源簡介:模擬實現了交通燈的顯示和手動調整的功能,花了我不少心思的哦。
上傳時間: 2016-10-03
上傳用戶:秦莞爾w
資源簡介:一套基于XILIX,SPATAN2,XC2S200 芯片實驗板上的,10個典型VRILOGHDL的FPGA實驗,有幫助,
上傳時間: 2013-08-19
上傳用戶:偷心的海盜
資源簡介:單片機輸出控制電路的制作
上傳時間: 2014-12-25
上傳用戶:鳳臨西北
資源簡介:用單片機產生PWM來控制電機的硬件和軟件設計,附錄為源代碼!
上傳時間: 2013-12-25
上傳用戶:a673761058
資源簡介:也用到了溫度PID控制,和我門的不同是采用D/A輸出控制量的.主要由溫度采樣--->溫度濾波子程序--->溫度線性化----->溫度設定值等模塊組成.
上傳時間: 2014-01-07
上傳用戶:youth25
資源簡介:本程序簡單的示范了如何使用3310液晶。 顯示靜止的英文顯示靜止的中文 顯示移動的中文顯示靜止的圖片 使用PWM控制3310的背光亮度
上傳時間: 2014-01-16
上傳用戶:klin3139
資源簡介:用單片機產生PWM來控制電機的硬件和軟件設計,歡迎下載!
上傳時間: 2013-12-14
上傳用戶:一諾88
資源簡介:史上最超級恐怖的10個故事~你撐到第幾個才發抖?[看過勿怪]
上傳時間: 2013-12-18
上傳用戶:pkkkkp
資源簡介:吉林大學計算機學院控制實驗的幾個必做實驗的源代碼(大四)~
上傳時間: 2013-12-29
上傳用戶:lingzhichao
資源簡介:用匯編寫的 控制燈的熄滅 應用到C51單片機中的小程序
上傳時間: 2014-01-19
上傳用戶:hj_18
資源簡介:在理論和實驗上討論了直流無刷電機控制上的幾個非線形問題,很有意思.
上傳時間: 2013-12-19
上傳用戶:ZJX5201314
資源簡介:從感應電動機的一般數學模型出發,談其在控制上的幾個非線形問題,很經典的.
上傳時間: 2014-01-25
上傳用戶:helmos