久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機脈沖寬度調制(PWM)控制LED燈亮度

作者:佚名   來源:本站原創   點擊數:  更新時間:2009年06月28日   【字體:

   /*介紹一個51系列單片機采用脈沖寬度調制(PWM)方式控制LED燈亮度的一個程序,大家都知道,51單片機本身是沒有pwm接口的,這個程序是通過軟件模擬pwm.在一定的頻率的方波中,調整高電平和低電平的占空比,即可實現LED燈亮度控制。程序出自:單片機網http://www.zg4o1577.cn,如有問題可在論壇提出,程序中使用定時器0產生2.5ms周期脈沖,使用占空比控制變量scale控制占空比,在低電平期間使LED燈亮,在高電平期間使LED燈滅,改變scale就改變了高電平與低電平的時間,因此也就控制了LED燈的亮度。*/
#include "AT89X51.H"  //模擬PWM輸出控制燈的10個亮度級
unsigned int scale;   //占空比控制變量
void main(void)       // 主程序
{ unsigned int n;    //延時循環變量
TMOD=0x02;  //定時器0,工作模式2(0000,0010),8位定時模式
TH0=0x06;   //寫入預置初值6到定時器0,使250微秒溢出一次(12MHz)
TL0=0x06;   //寫入預置值
TR0=1;    //啟動定時器
ET0=1;    //允許定時器0中斷
EA=1;     //允許總中斷
while(1)   //無限循環,實際應用中,這里是做主要工作
{ for(n=0;n<50000;n++);  //每過一段時間,就自動加一個檔次的亮度
scale++;    //占空比控制變量scale加1
if(scale==10)  scale=0;  //如果scale=10,使scale為0
} }
timer0() interrupt 1    //定時器0中斷服務程序
{ static  unsigned int   tt ;   //tt用來保存當前時間在一秒中的比例位置
tt++;    //每250微秒增加1
if(tt==10)   //2.5毫秒的時鐘周期
{ tt=0;  //使tt=0,開始新的PWM周期
P2_0=0;  //使LED燈亮
}
if(scale==tt)  //按照當前占空比切換輸出為高電平
P2_0=1;        //使LED燈滅

/*程序中從tt=0開始到scale為低電平,從scale開始到tt=10為高電平,由于scale是變量,所以改變scale就可以改變占空比。*/

關閉窗口
主站蜘蛛池模板: 亚洲精品日韩一区二区电影 | 免费在线观看黄色av | 天天射影院 | 亚洲1区 | 国产亚洲欧美在线 | 国产精品美女www爽爽爽 | 在线a视频 | 九九在线视频 | 九九热精品在线 | 日本手机看片 | 伊人网站在线观看 | 成人网视频 | 日韩精品一区二 | 久久精品国产清自在天天线 | 日韩国产一区二区三区 | 成人天堂噜噜噜 | 日韩精品一区二区三区在线播放 | 亚洲国产免费 | 国产69久久精品成人看动漫 | 国产免国产免费 | 99精品国产一区二区青青牛奶 | 九九看片 | 亚洲欧美综合精品久久成人 | 国产激情视频在线观看 | av国产精品| 免费一区二区三区在线视频 | 久久精品一二三影院 | 国户精品久久久久久久久久久不卡 | 日本亚洲精品成人欧美一区 | 伦理午夜电影免费观看 | 91av视频在线播放 | 久久综合九色综合欧美狠狠 | 精国产品一区二区三区 | 日韩在线观看网站 | 欧美一级在线观看 | 亚洲成人毛片 | 国产福利小视频 | 成人三级av | 国产日韩欧美激情 | 日本黄色片免费在线观看 | 人人艹人人爽 |