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