基于89C52的双极性PWM直流电机调速程序

(6页)

'基于89C52的双极性PWM直流电机调速程序'
*木实验是基于普中科技的开发板设计宜流电动机双极性PWM调速实验。*设计要求:kl控制电机正转,k2控制电机反转,k3控制电机加*速,k4控制电机减速,k5控制电机停止。数码管显示电机转向,*速度。实验所用电机为12V。自带增量式光电编码器。*电机正转时占?空比>50%,fl.占空比越人,转速越快。反转时占空比<50%, *且占空比越小,转速越快。反转吋数码管示数越小,转速越快。vix vix vl> /rj% r|% rp rj% rp rj% rjw rj% #7* <7* rp *7* rp rp *7* rjw rj% rj% ry* rp #7* rp *7* #7* rp rj% #7* rj% ry* rp *7* rp rp *7* rp #7* rp ry^ rj% rp *7* rp rp r|% rj% f#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit BRA=P2A5; // 刹车,接 LM18200 的 BRA 端//sbit D1R=P2A6; 〃转向,不用接sbit PWM=P2A7; // 调速,接 LM 18200 的 DIR 端,LM 18200 的 PWM 端口接+5V 电源 sbitkl=PlA0; 〃正转sbit k2=PlAl; 〃反转sbit k3=PlA2; 〃加速sbit k4=PlA3; 〃减速sbit k5=PlA4; 〃停止sbit lsl38a=P2A2;sbit lsl38b=P2A3;sbit lsl38c=P2A4;uchar flag; 〃方向标志位uchar speed=5(); 〃初始转速uint quan_num; 〃圈数,本实验屮不用测圈数//uint pwm_on=50;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,// 0 1 2 3 4()x6d,()x7d,()x()7,()x7f,()x6f,()x4()};// 5 6 7 8 9 - void delay(uint x) {uchar i;while(x—){for(i=0;i< 110;i++);}* 名称:init()*功能:初始化函数,设置串口,定时器0,定时器1*输入:无*输出:无?士 ?士 ?士 ?士 /"卜"卜?卜 ?卜 *7* "卜"卜?卜 rT^ ?卜 ?卜 "卜 r void init(){TMOD=0x01;//定时器0工作在模式1,产生PWM波 TH()=0xff;〃定时 lOOusTL0=0xa4;// ITO=1; //IT0=0低电平触发,ITO=1下降沿触发 TRO=1;//开定吋器0ET0= 1; //开定时器0中断EA=1; 〃开总中断// IP=0x02;名称displayO功能显示子函数,显示圈数,转速和转向输入圈数,转速,转向输出无/*void display_sum(uint num) 〃圈数显示{PO=table[num% 1000/100]; //显示圈数百位 Is 138a= 1 ;ls 138b=0;ls 138c= 1;delay(l);P0=table[num% 100/10]; 〃显示圈数十位 lsl 38a=0;ls 138b=l ;ls 138c=l;delay(l);PO=table [num%10J; 〃显示圈数个位Is 138a= 1 ;lsl 38b=1 ;ls 138c= 1;delay(l);}*/void display_speed(uchar num) 〃转速显示{P0=tablelnum% 100/10];//显示转速十位 lsl38a=l;lsl38b=l;lsl38c=0;delay(l);P0=table[num%l 0J; 〃显示转速个位Is 138a=0;lsl 38b=0;ls 138c= 1; delay(l);}void display_dir(uchar num) 〃方 向显示P0=table[num]; Is 138a=0;ls 138b= 1 ;ls 138c=0; dclay(I);* 名称:dispose()*功能:正反转加减速了函数*输入:无*输出:正转转速范围55-95r/min, R转转速范围5-45r/min^ig *ij ^ig ^tg *1^ /^Tv ?"Tv ?"Tv ?"Tv ?"Tv ?"Tv ?"Tv ?"Tv ?"Tv tvoid dispose(){if(k5==O){// EX0=0;BRA=1; } if(kl==O) {// EXO=1;BRA=();〃按键处理〃停止〃关外部屮断0〃刹车〃正转,转向显示0〃开外部屮断0〃关刹车speed=70;PWM=1; 〃开电机flag=0; 〃电机正转标志}while(kl ==()); //等待按键松开if(k2==0) //反转,转向显示1{// EXO=1; 〃开外部中断0BRA=0; 〃关刹车speed=30;PWM=1; 〃开电机 flag=l; 〃电机反转标,忐}while(k2==0); 〃等待按键松开if(k3==O){dclay(lO);if(k3==O) 〃加速{if(speed>50) 〃正转()加速speed=speed+5; if(speed==100) {speed=95;} if(speed<50) 〃反转1加速,示数越小,占空比越人,转速越快speed=speed-5; if(speed==O) {speed=5;}while(k3==0); 〃等待按键松开 if(k4==0) 〃减速 {delay (10);if(k4==0){if(spccd>50) 〃正转 0 减速speed=speed-5;if(speed==50){speed=55;}}if(speed<50) 〃反转1减速,示数越人,占空比越小,转速越慢 {speed=speed+5;if(speed==50){speed=45;}while(k4==0);//等待按键松开void main()init();PWM=0;//关电机〃按键处理〃显示速度〃显示圈数〃显示转向BRA=0;//关电机刹车 whilc(l)dispose(); display_speed(speed);// display_sum(quan_num); di
关 键 词:
基于 89 C52 极性 PWM 直流电机 调速 程序
 剑锋文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:基于89C52的双极性PWM直流电机调速程序
链接地址: //www.wenku365.com/p-43767963.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给剑锋文库发消息,QQ:1290478887 - 联系我们

本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:1290478887 欢迎举报。

1290478887@qq.com 2017-2027 //www.wenku365.com 网站版权所有

粤ICP备19057495号 

收起
展开