欢迎来到天天文库
浏览记录
ID:54991217
大小:45.00 KB
页数:21页
时间:2020-04-25
《PWM直流电机调速单片机程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、*******************************************************************//*程序名:PWM直流电机调速*//*晶振:11.00592MHzCPU型号:AT89C51*//*直流电机的PWM波控制,可以直接的调速从0到20级的调速*//*****************************************************************/#include#defineTH0_TL0(65536-1000)//设定中断的间隔时长
2、unsignedcharcount0=50;//低电平的占空比unsignedcharcount1=0;//高电平的占空比bitFlag=1;//电机正反转标志位,1正转,0反转sbitKey_add=P2^0;//电机减速sbitKey_dec=P2^1;//电机加速sbitKey_turn=P2^2;//电机换向sbitPWM1=P2^6;//PWM通道1,反转脉冲sbitPWM2=P2^7;//PWM通道2,正转脉冲unsignedcharTime_delay;/************函数声明**************/v
3、oidDelay(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输出时间间隔}/*******按键处理加pwm占空比,电机加速**
4、********/voidMotor_speed_high(void)//{if(Key_add==0){ 精选Delay(10); if(Key_add==0) { count0+=5; if(count0>=100) { count0=100; } } while(!Key_add);//等待键松开}}/******按键处理减pwm占空比,电机减速*****/voidMotor_speed_low(void){if(Key_dec==0){ Delay(10); if(Key_dec==
5、0) { count0-=5; if(count0<=0) { count0=0; } } while(!Key_dec);}}/************电机正反向控制**************/voidMotor_turn(void){if(Key_turn==0){ Delay(10); if(Key_turn==0) { Flag=~Flag; } while(!Key_turn);}}精选/***********定时器0初始化***********/voidTimer0_in
6、it(void){TMOD=0x01;//定时器0工作于方式1TH0=TH0_TL0/256;TL0=TH0_TL0%256;TR0=1;ET0=1;EA=1;}/*********主函数********************/voidmain(void){Timer0_init();while(1){ Motor_turn(); Motor_speed_high(); Motor_speed_low();}}/**************定时0中断处理******************/voidTimer0_int(vo
7、id)interrupt1using1{TR0=0;//设置定时器初值期间,关闭定时器TL0=TH0_TL0%256;TH0=TH0_TL0/256;//定时器装初值TR0=1;if(Time_delay!=0)//延时函数用{ Time_delay--;}if(Flag==1)//电机正转{ PWM1=0; if(++count1=100) { count1=0; }} else//电机反转
8、 { PWM2=0; if(++count1=100) { count1=0;
此文档下载收益归作者所有