|
用51單片機的PWM控制實現(xiàn)LED增減光的仿真原理圖(proteus工程文件可到本帖附件下載):
0.png (29.76 KB, 下載次數(shù): 83)
下載附件
2017-3-29 23:22 上傳
51單片機源程序:
- //---------------------------------------------------------------------
- //程序名:PWM7-2.c
- //程序功能:PWM控制LED增減光。
- //---------------------------------------------------------------------
- #include <reg51.h>
- sbit OUT=P2^7; //PWM輸出
- sbit INC=P2^0; //增加亮度按鈕K1接口
- sbit DEC=P2^1; //減小亮度按鈕K2接口
-
- //--------------------------- 定時器0中斷函數(shù) ------------------------
- //頻率
- void Timer0(void) interrupt 1 //定時器0中斷
- {
- OUT=1; //關(guān)LED
- TL0=0;
- TR1=1; //打開脈寬定時
- }
- //-------------------------- 定時器1中斷函數(shù) -------------------------
- //脈寬
- void Timer1(void) interrupt 3 //定時器1中斷
- {
- OUT=~OUT; //開LED
- TR1=0; //脈寬調(diào)節(jié)結(jié)束
- }
- //--------------------------- 消抖延時函數(shù) ----------------------------
- delay()
- {
- unsigned int i;
- for(i=0;i<2000;i++);
- }
- //---------------------------- 定時器設置函數(shù) ---------------------------
- INIT_TIMER()
- {
- TMOD=0x22; //設置T1、T0為模式2方式,自動重裝
- TH1=0; //脈寬寬度
- TL1=0;
- TH0=0; //頻率調(diào)節(jié)=0頻率最低
- TL0=0;
- TR0=1; //啟動T0定時
- EA=1; //允許總中斷
- ET1=1; //允許定時器1中斷
- ET0=1; //允許定時器0中斷
- }
- //------------------------------- 主函數(shù) -------------------------------
- main()
- {
-
- INIT_TIMER();
- // 無限循環(huán)
- while(1)
- {
- INC=1;DEC=1;
- if (INC==0)
- { delay();
- if (INC==0)
- {
- if (TH1<240) TH1++;
- }
- }
- else if (DEC==0)
- { delay();
- if (DEC==0)
- {
- if (TH1>0) TH1--;
- }
- }
復制代碼
0.png (55.18 KB, 下載次數(shù): 79)
下載附件
2017-3-29 23:25 上傳
該系列源碼包含有很多非常經(jīng)典,代碼風格十分規(guī)范,而且注釋詳細的單片機例程,還帶仿真,對于MCU學習特別是初學者是很有幫助的,全部源碼下載(共25個項目):http://www.zg4o1577.cn/bbs/dpj-79328-1.html
本例程下載(含proteus仿真工程文件與源碼):
7-2單片機PWM控制LED增減光實驗.rar
(31.54 KB, 下載次數(shù): 148)
2017-3-29 23:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|