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

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

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

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

   /*介紹一個51系列單片機采用脈沖寬度調制(PWM)方式控制LED燈亮度的一個程序,大家都知道,51單片機本身是沒有pwm接口的,這個程序是通過軟件模擬pwm.在一定的頻率的方波中,調整高電平和低電平的占空比,即可實現LED燈亮度控制。程序出自:單片機網http://m.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就可以改變占空比。*/

關閉窗口
主站蜘蛛池模板: 国产精品美女久久久久久久久久久 | 国产精品精品 | 999久久久国产精品 欧美成人h版在线观看 | 久久久久久美女 | 91精品国产综合久久精品 | 午夜免费影视 | 中文字幕日韩专区 | 九九热国产精品视频 | 免费看国产一级特黄aaaa大片 | 国产精品成人国产乱一区 | 一区二区三区 在线 | 国产精品色 | av黄色在线| 日韩欧美国产综合 | 成人黄色在线 | 欧美成人精品激情在线观看 | 国产福利在线播放 | 一区二区三区播放 | 国产福利视频导航 | 欧美国产亚洲一区二区 | 三级黄色片在线观看 | 免费毛片网站 | 91视频在线看 | 精品成人在线观看 | 亚洲国产成人精品女人久久久 | 久久久网 | 欧美精品一区二区三区四区 在线 | 国产精品福利在线 | 国产一级在线视频 | 婷婷国产一区 | 亚洲国产精品99久久久久久久久 | 日韩国产在线 | 你懂的av | 久久精品国产一区二区电影 | 亚洲精品久久久一区二区三区 | 亚洲欧洲日本国产 | 欧美伊人 | 久久午夜精品福利一区二区 | 欧美日韩国产精品激情在线播放 | 黄a在线观看 | 亚洲精品视频一区 |