標題: 單片機PWM控制C程序語言 [打印本頁]
作者: Sooofia 時間: 2018-3-31 20:47
標題: 單片機PWM控制C程序語言
本帖最后由 Sooofia 于 2018-3-31 20:51 編輯
#include "reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit PWM = P1^1;
uchar pluse; //占空比寄存器
void Timer2() interrupt 5
{
static uchar time;
TF2=0;
if(++time==pluse) PWM=0; //達到脈寬設定值時,輸出PWM低電平
else if(time==40) //PWM的頻率為1khz左右
{
time=0;
PWM=1;
}
}
void InitTimer2(void) //初始化函數
{
RCAP2H = 0xff //定時25us初值
RCAP2L = 0x0e7;
ET2=1;
EA=1;
TR2=1;
}
void main(void)
{
InitTimer2();
while(1)
{
pluse=20;
}
}
把PWM波的周期定為1ms,占空比分40級可調(即每級差2.5%),這樣定時器T2每25us產生一個定時中斷,每40次中斷后進入下一個PWM波的周期。在程序中,pluse=20,即占空比為50%,輸出的平均電壓為12*50%=6V。PWM產生的過程是這樣的,開始時PWM為1,當計時到達pluse時(即到達了設定的脈寬寬度時間)PWM=0,隨后到達PWM周期時間后PWM=1,此時下一個PWM周期重新開始。
-
-
PWM代碼.pdf
2018-3-31 20:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
173.98 KB, 下載次數: 12, 下載積分: 黑幣 -5
作者: Kiralfred 時間: 2018-4-11 17:35
什么意思??怎么調?
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |