|
發布時間: 2020-12-30 18:32
正文摘要:老師沒有教過PWM的知識,無意中看到PWM這個名詞,便百度了一下,但是那些資料沒有看懂,請問各位大佬,用定時器設置PWM頻率和占空比,是怎么設置的?還有他們是怎么算出來的?圖片里的中斷100次怎么得到1kHZ的頻率? ... |
| STC89單片機 定時器做PWM程序 http://m.raoushi.com/bbs/dpj-200820-1.html |
|
sbit PWM_OUT=P2^1; u8 idata RGB_PWM_Write_Byte[3]=0; //****************************祁緒電子 2020年5月*** // 定時器0初始化 晶振11059200,12T,輸出50Hz的PWM,占空比0~255 // 定時器初值為:256-(11059200÷12÷50Hz÷256) = 184 = 0xB8 //****************************祁緒電子 2020年5月*** void PWM_Init(void) { TMOD &= 0xF0; //配置定時器工作模式 TMOD |= 0x02; //配置定時器工作模式 8位自動重裝模式 TL0 = 0xB8;; //定時器初值 TH0 = 0xB8; //定時器重裝初值 TR0 = 1; //啟動定時器0 ET0=1; //允許定時器0申請中斷 EA=1; //中斷總閘閉合 } //****************************祁緒電子 2020年5月*** //定時器0的CPU處理函數,位置任意寫都行 //****************************祁緒電子 2020年5月*** void PWM_Display_timer0() interrupt 1 { static u8 pwm_t=0; //局部變量,不丟失數據 if(pwm_t<RGB_PWM_Write_Byte[0]) { PWM_OUT=1; } else PWM_OUT=0; pwm_t++; } 一、主函數初始化 PWM_Init(void); 二、對RGB_PWM_Write_Byte[0];賦值0~255 即可調節占空比。 三、默認PWM周期是255.如果需要調節周期,可以限制pwm_t的最大值。以及改定時器初值。 四、本代碼定時器是自動重裝模式。 |