明文作品,謝謝欣賞! 功能說明:PWM,通過改變占空比,PWM_T/100,這里100是周期,每個按鍵都會給PWM_T一個定值,這樣就改變了輸出波形。
0.png (174.32 KB, 下載次數(shù): 64)
下載附件
2017-1-8 22:59 上傳
0.png (130.31 KB, 下載次數(shù): 66)
下載附件
2017-1-8 23:00 上傳
0.png (133.18 KB, 下載次數(shù): 58)
下載附件
2017-1-8 23:00 上傳
- /****************************************************
- 6個按鍵決定6個亮度
- 占空比 :PWM_T/100,越大越亮
- ****************************************************/
- #include <reg51.h>
- #define uInt unsigned int
- #define uchar unsigned char
- uchar PWM_T = 0; //占空比控制變量
- sbit c7=P3^7; //6個按鍵,決定輸出PWM_T值
- sbit c6=P3^6;
- sbit c5=P3^5;
- sbit c4=P3^4;
- sbit c3=P3^3;
- sbit c2=P3^2;
-
- /****************************************************
- 主程序
- ****************************************************/
- void main(void)
- {
- uInt n;
- TMOD=0x02; //定時器0,工作模式2,8位定時模式
- TH0=210; //寫入預置初值(取值1-255,數(shù)越大PWM頻率越高)
- TL0=210; //寫入預置值 (取值1-255,數(shù)越大PWM頻率越高)
- TR0=1; //啟動定時器
- ET0=1; //允許定時器0中斷
- EA=1; //允許總中斷
- P1=0xff; //初始化P1,輸出端口
- P0=0xff; //初始化P0
- while(1) //PWM周期100,高電平100- PWM_T, 低電平PWM_T,低電平工作
- {
- for(n=0;n<200;n++); //延時,取值0-65535,數(shù)字越大變化越慢
- if(!c7||!c6||!c5||!c4||!c3||!c2) //通過按鍵改變占空比
- {
- if(!c7) PWM_T=0; //這些值可以改變
- else if(!c6) PWM_T=10;
- else if(!c5) PWM_T=35;
- else if(!c4) PWM_T=60;
- else if(!c3) PWM_T=85;
- else if(!c2) PWM_T=100;
- }
- }
- }
- /****************************************************
- /定時器0中斷模擬PWM
- ****************************************************/
- timer0() interrupt 1 using 2
- {
- static uchar t ; //PWM計數(shù)
- t++; //每次定時器溢出加1
-
- if(t==100) //PWM周期 100個單位
- {
- t=0; //使t=0,開始新的PWM周期
- P1=0x00; //使LED燈亮 ,輸出端口
- P0=0x00; //使LED燈亮 ,輸出端口
- }
-
- if(PWM_T==t) //按照當前占空比切換輸出為高電平
- { P1=0xff; //使LED燈滅
- P0=0xff; //使LED燈滅
- }
- }
-
復制代碼
完整資料下載:
PWM_按鍵控制燈亮度(改變占空比).doc
(193.5 KB, 下載次數(shù): 42)
2017-1-6 20:28 上傳
點擊文件名下載附件
pwm控制電機 下載積分: 黑幣 -5
|