基于51单片机直流电机调速程序设计.doc

基于51单片机直流电机调速程序设计.doc

ID:51801828

大小:32.00 KB

页数:4页

时间:2020-03-15

基于51单片机直流电机调速程序设计.doc_第1页
基于51单片机直流电机调速程序设计.doc_第2页
基于51单片机直流电机调速程序设计.doc_第3页
基于51单片机直流电机调速程序设计.doc_第4页
资源描述:

《基于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周期后输出低电平继续下周期}}/*************************

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。