51LPC系列单片机用于控制交流电机
闪烁越快电机转动越快,反之则越慢;电机停转,LED 熄灭。此电路稍经修改就可以用于其它许多类似的场合。
源程序清单:
该软件在Keil C51 V6.02上编译通过,在目标板上运动正常。如果用其它编译器必须稍加修改。
#includereg761.h>
#define uchar unsigned char
#define uint unsigned int
uchar s,x,y=0;
void timer0(void)interrupt 1 using 1 {/*T0中断服务程序*/
x=x+1;
if(x/10>s){
if(y= =0){P1=P10xfb; /*LED点亮*/
x=0;y=1;}
else {P1=P1|0x04; /*LED熄灭*/
y=0;x=0;}}
TF0=0;TH0=-(28/256);
TL0=-(28%256);
}
void speed(s){ /*电机转换控制子程序*/
uchar pulsecount, pulseduration=0;
uint i=0;
uint j=0;
if (((CMP10x02))!(CMP20x02)/*查询比较器*/
{for (i=0;is;i++)
{for(j=0;j210;j++) ;} /*延时触发*/
CMP1=CMP10xfc;
CMP2=CMP20xfc;
pulsecount=1;
{P1=P10xfe;
pulseduration=12; /*触发脉冲宽度*/
while(pulseduration){pulseduration- -;}
P1=P1|0x01;
pulsecount- -;
}
}
}
void Initcomparatior(void){ //初始化P87LPC761//
PT0AD=0x6f; /*禁止P0口的数字功能*/
P0=0xff;
P0M1=0x2a; /*P01,P03,P05设为高阻输入*/
P0M2=0xd5; /*P00,P04,P06设为推挽方式*/
P1=0xff;
P1M1=0x82; /*P17用于VZC检测*/
P1M2=0x05;
CMP1=0x34;
CMP2=0x34;
}
void main(void)
{uchar pulsecount ,pulseduration=0x00;
uint j;i=0;
SP=0x5f;EA=0;
TH0=-(28/256);
TL0=-(28%256);
TF0=0;EA=0;TR0=0;
ET0=1;CMP1=CMP2=0;
Initcomparator();
CMP1=CMP10xfc;
CMP2=CMP20xfc;s=0;
while(P1_1) {;}
while(!P1_1){;}
while(P10x80){};
while(!(P10x80)){};
while(P10x80){}
while(!(P10x80)){};
while(P10x80){};
P1=P10xfe; //启动电机
while(1)
{if(P1_1= =0) {
x=0;
while (!x){;}
if(P1_1=0)
{P1=0xff;s=s+1;} //停止电机
if(s= =8){s=0;}
while(!P1_1){;} //等待释放按键
while(P10x80){};
while(!(P10x80)){};
while(P10x80)();
whie(!(P10x80)){};
while(P10x80){};
P1=P10xfe;} //启动电机
EA=1;TR0=1;
speed(s); }
} //结束
交流 电机 控制 用于 系列 单片机 51LPC 相关文章:
- DSP在交流异步电动机变频调速中的应用(10-04)
- 基于MSP430的变频伺服系统设计(05-05)
- 多路交流异步采样及DSP软件校准技术(10-13)
- 基于ARM控制器LPC2214的税控收款机系统的设计与实现(06-04)
- 基于PLC和交流伺服的单轴控制系统(12-20)
- DSP交流伺服系统与CAN总线的通信设计(12-20)