資源描述:
《pwm直流電機(jī)調(diào)速單片機(jī)程序》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、下載可編輯*******************************************************************//*程序名:PWM直流電機(jī)調(diào)速*//*晶振:11.00592MHzCPU型號:AT89C51*//*直流電機(jī)的PWM波控制,可以直接的調(diào)速從0到20級的調(diào)速*//*****************************************************************/#include#defineTH0_TL0(65536-1000)//設(shè)定中斷的間隔時長unsigne
2、dcharcount0=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(unsignedch
3、arx);voidMotor_speed_high(void);voidMotor_speed_low(void);voidMotor_turn(void);voidTimer0_init(void);/****************延時處理**********************/voidDelay(unsignedcharx){Time_delay=x;while(Time_delay!=0);//等待中斷,可減少PWM輸出時間間隔}/*******按鍵處理加pwm占空比,電機(jī)加速**********/voidMotor_speed_high(v
4、oid)//{if(Key_add==0){??專業(yè)資料精心整理下載可編輯Delay(10);??if(Key_add==0)??{???count0+=5;??????if(count0>=100)???{????count0=100;???}??}??while(!Key_add);//等待鍵松開}}/******按鍵處理減pwm占空比,電機(jī)減速*****/voidMotor_speed_low(void){if(Key_dec==0){??Delay(10);??if(Key_dec==0)??{???count0-=5;??????if(count
5、0<=0)???{????count0=0;???}??}??while(!Key_dec);}}/************電機(jī)正反向控制**************/voidMotor_turn(void){if(Key_turn==0){??Delay(10);??if(Key_turn==0)??{???Flag=~Flag;??}??while(!Key_turn);}}專業(yè)資料精心整理下載可編輯/***********定時器0初始化***********/voidTimer0_init(void){TMOD=0x01;//定時器0工作于方式1TH
6、0=TH0_TL0/256;TL0=TH0_TL0%256;TR0=1;ET0=1;EA=1;}/*********主函數(shù)********************/voidmain(void){Timer0_init();while(1){??Motor_turn();??Motor_speed_high();??Motor_speed_low();}}/**************定時0中斷處理******************/voidTimer0_int(void)interrupt1using1{TR0=0;//設(shè)置定時器初值期間,關(guān)閉定時器TL
7、0=TH0_TL0%256;TH0=TH0_TL0/256;//定時器裝初值TR0=1;if(Time_delay!=0)//延時函數(shù)用{??Time_delay--;}if(Flag==1)//電機(jī)正轉(zhuǎn){??PWM1=0;????if(++count1=100)???{????count1=0;???}}??else//電機(jī)反轉(zhuǎn)??{???PWM2=0;??????if(++count18、WM1=1;???}????else????PWM1=0;????