资源描述:
《基于51单片机直流电机调速程序设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于51单片机直流电机调速程序设计#includetypedefunsignedintuint;typedefunsignedcharuchar;typedefunsignedcharUINT8;codeUINT8SEGM[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x3F,0x82,0xf8,0x80,0x90};codeUINT8SELE[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};sbitP30=P3^0;#defin
2、eperiod10//宏定义周期为10毫秒#defineS10x0e#defineS20x0d#defineS30x0b#defineS40x07//P3.3按键调档uintcount=0,pwm_h,Freq;//county为定时时间(ms)pwm_h输出为高电平时间/***********************************函数名:delayms()功能:延时大约K毫秒参数:k返回值:无************************************/voiddelayms(ui
3、ntk){uinti,j;for(i=k;i>0;i--)for(j=125;j>0;j--);}/***********************************函数名:init()功能:定时器初始化参数:无返回值:无************************************/voidinit(){TH0=(65536-1000*110592/2/12/Freq)/256;//定时1毫秒TL0=(65536-1000*110592/2/12/Freq)%256;TMOD=0x01;/
4、/定时器0模式1IE=0x82;//开中断TR0=1;}/***********************************函数名:turn_gears()功能:根据按键选择档位共4档(调速)参数:无返回值:无************************************//*voidturn_gears()//gears英文为单位的意思{uchargears;if(k1==0){delayms(25);//按下去抖if(k1==0);{while(k1==0);//等待按键松开delaym
5、s(25);//松开去抖if(k1){switch(gears)//判档{case0:P0=0xFC;pwm_h=2;break;//0档数码管显示0case1:P0=0xBB;pwm_h=3;break;//1档数码管显示1case2:P0=0xC0;pwm_h=4;break;//2档数码管显示2case3:P0=0x30;pwm_h=5;break;//3档数码管显示3default:break;}gears++;//按一次档位+1if(gears>=4)//超过4档后清0gears=0;}}}}*
6、/ucharKey_scan(){ucharkey;if((P3&0x0f)==0x0f)return(0xff);delayms(10);if((P3&0x0f)==0x0f)return(0xff);key=P3&0x0f;if((P3&0x0f)!=0x0f);return(key);}voidturn_gears(){uchartemp;ucharstop=0;temp=Key_scan();switch(temp){caseS1:P0=SEGM[1];P2=0xfe;pwm_h=2;break;
7、caseS2:P0=SEGM[2];P2=0xfe;pwm_h=4;break;caseS3:P0=SEGM[3];P2=0xfe;pwm_h=6;break;caseS4:P0=SEGM[5];P2=0xfe;pwm_h=stop;break;}}/***********************************函数名:time0()功能:定时器T0中断参数:无返回值:无************************************/voidtime0()interrupt1{TH0=(
8、65536-1000*110592/2/12/Freq)/256;TL0=(65535-1000*110592/2/12/Freq)%256;if(count==pwm_h)//判断是第几档P30=1;//在该档后输出都是高点平直到1周期结束count++;if(count==period)//判断是否1周期了{count=0;P30=0;//1周期后输出低电平继续下周期}}/*************************