找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2162|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)PWM控制C程序語言

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:300040 發(fā)表于 2018-3-31 20:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 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; //達(dá)到脈寬設(shè)定值時(shí),輸出PWM低電平   
else if(time==40) //PWM的頻率為1khz左右   
{     
time=0;   
PWM=1;  
}  
}  
void InitTimer2(void) //初始化函數(shù)
{   
RCAP2H = 0xff //定時(shí)25us初值   
RCAP2L = 0x0e7;   
ET2=1;  
EA=1;  
TR2=1;
}   
void main(void)   
{      
InitTimer2();     
while(1)
{
pluse=20;  
}
}
把PWM波的周期定為1ms,占空比分40級(jí)可調(diào)(即每級(jí)差2.5%),這樣定時(shí)器T2每25us產(chǎn)生一個(gè)定時(shí)中斷,每40次中斷后進(jìn)入下一個(gè)PWM波的周期。在程序中,pluse=20,即占空比為50%,輸出的平均電壓為12*50%=6V。PWM產(chǎn)生的過程是這樣的,開始時(shí)PWM為1,當(dāng)計(jì)時(shí)到達(dá)pluse時(shí)(即到達(dá)了設(shè)定的脈寬寬度時(shí)間)PWM=0,隨后到達(dá)PWM周期時(shí)間后PWM=1,此時(shí)下一個(gè)PWM周期重新開始。

PWM代碼.pdf

173.98 KB, 下載次數(shù): 12, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:301752 發(fā)表于 2018-4-11 17:35 | 只看該作者
什么意思??怎么調(diào)?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表