資源描述:
《pwm直流電機(jī)調(diào)速單片機(jī)程序》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、WORD格式編輯整理*******************************************************************//*程序名:PWM直流電機(jī)調(diào)速*//*晶振:11.00592MHzCPU型號(hào):AT89C51*//*直流電機(jī)的PWM波控制,可以直接的調(diào)速?gòu)?到20級(jí)的調(diào)速*//*****************************************************************/#include#defineTH0_TL0(65536-1000)//設(shè)定中斷的間隔時(shí)長(zhǎng)unsigned
2、charcount0=50;//低電平的占空比unsignedcharcount1=0;//高電平的占空比bitFlag=1;//電機(jī)正反轉(zhuǎn)標(biāo)志位,1正轉(zhuǎn),0反轉(zhuǎn)sbitKey_add=P2^0;//電機(jī)減速sbitKey_dec=P2^1;//電機(jī)加速sbitKey_turn=P2^2;//電機(jī)換向sbitPWM1=P2^6;//PWM通道1,反轉(zhuǎn)脈沖sbitPWM2=P2^7;//PWM通道2,正轉(zhuǎn)脈沖unsignedcharTime_delay;/************函數(shù)聲明**************/voidDelay(unsignedcharx);vo
3、idMotor_speed_high(void);voidMotor_speed_low(void);voidMotor_turn(void);voidTimer0_init(void);/****************延時(shí)處理**********************/voidDelay(unsignedcharx){Time_delay=x;while(Time_delay!=0);//等待中斷,可減少PWM輸出時(shí)間間隔}/*******按鍵處理加pwm占空比,電機(jī)加速**********/voidMotor_speed_high(void)//{if(Key
4、_add==0){??專業(yè)知識(shí)分享WORD格式編輯整理Delay(10);??if(Key_add==0)??{???count0+=5;??????if(count0>=100)???{????count0=100;???}??}??while(!Key_add);//等待鍵松開(kāi)}}/******按鍵處理減pwm占空比,電機(jī)減速*****/voidMotor_speed_low(void){if(Key_dec==0){??Delay(10);??if(Key_dec==0)??{???count0-=5;??????if(count0<=0)???{????cou
5、nt0=0;???}??}??while(!Key_dec);}}/************電機(jī)正反向控制**************/voidMotor_turn(void){if(Key_turn==0){??Delay(10);??if(Key_turn==0)??{???Flag=~Flag;??}??while(!Key_turn);}}專業(yè)知識(shí)分享WORD格式編輯整理/***********定時(shí)器0初始化***********/voidTimer0_init(void){TMOD=0x01;//定時(shí)器0工作于方式1TH0=TH0_TL0/256;TL0=T
6、H0_TL0%256;TR0=1;ET0=1;EA=1;}/*********主函數(shù)********************/voidmain(void){Timer0_init();while(1){??Motor_turn();??Motor_speed_high();??Motor_speed_low();}}/**************定時(shí)0中斷處理******************/voidTimer0_int(void)interrupt1using1{TR0=0;//設(shè)置定時(shí)器初值期間,關(guān)閉定時(shí)器TL0=TH0_TL0%256;TH0=TH0_TL0
7、/256;//定時(shí)器裝初值TR0=1;if(Time_delay!=0)//延時(shí)函數(shù)用{??Time_delay--;}if(Flag==1)//電機(jī)正轉(zhuǎn){??PWM1=0;????if(++count1=100)???{????count1=0;???}}??else//電機(jī)反轉(zhuǎn)??{???PWM2=0;??????if(++count1