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

QQ登錄

只需一步,快速開始

搜索
查看: 3015|回復(fù): 0
收起左側(cè)

這是PWM電機(jī)調(diào)速程序

[復(fù)制鏈接]
ID:159712 發(fā)表于 2017-1-3 20:18 | 顯示全部樓層 |閱讀模式
**************************************************/
#include<reg51.h>
#defineuInt unsigned int
#define uchar unsigned char
ucharPWM_T = 0;   //占空比控制變量
//////////////////主程序入口//////////////////////
void main(void)      
{
bit flag = 1; //控制燈漸亮漸熄方式
uInt n;
TMOD=0x02;  //定時(shí)器0,工作模式2,8位定時(shí)模式
TH0=210;     //寫入預(yù)置初值(取值1-255,數(shù)越大PWM頻率越高)
TL0=210;     //寫入預(yù)置值 (取值1-255,數(shù)越大PWM頻率越高)
TR0=1;       //啟動(dòng)定時(shí)器
ET0=1;       //允許定時(shí)器0中斷
  
EA=1;        //允許總中斷
P1=0xff; //初始化P1
while(1)     
{   
  for(n=0;n<600;n++);  //延時(shí),將響應(yīng)定時(shí)器中斷,燈會(huì)自動(dòng)加/減一個(gè)檔次的亮度
                            //取值0-65535,數(shù)字越大變化越慢
  if(flag==1)  //燈漸亮
   PWM_T++;
  else    //燈漸熄
   PWM_T--;
   
  if(PWM_T>=100) //設(shè)置燈亮度級(jí)別為10
   flag=0;
  if(PWM_T==0)  //限定最低亮度級(jí)別為0
   flag = 1;
}      
}
///////////////////定時(shí)器0中斷模擬PWM////////////////////
timer0() interrupt 1 using 2   
{
static  uchar   t ;   //PWM計(jì)數(shù)
t++;   //每次定時(shí)器溢出加1
  
if(t==100)   //PWM周期
{
  t=0;  //使t=0,開始新的PWM周期
  P1=0x00;  //使LED燈亮   
}
  
if(PWM_T==t)  //按照當(dāng)前占空比切換輸出為高電平
  P1=0xff;        //使LED燈滅  
}

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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