单片机控制交流电机正反转的C语言程序

单片机控制交流电机正反转的C语言程序,第1张

这个很简单,我教你怎么玩,下面是思路和方式

思路:有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看你接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;

PS:显示那块我不知道你怎么处理,但是需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以了,具体硬件要注意什么,有需要就问我

现在我们来写程序

#include <reg51.h> //选用晶振11.0592MHz

unsigned char k=0 //k表示正反转次数

sbit X0=P3^2//调节按钮

sbit X1=P1^1//上限位接近开关信号

sbit X2=P1^2//下限位接近开关信号

sbit Y1=P0^0//电机上升(注意:我使用的是管脚输出为0时候,电机运动,这样可以避免启动时候,单片机自复位对电机点动的影响)

sbit Y2=P0^1//电机下降

void delay50ms(unsigned int i)

{

unsigned int j

for (ii>0i--)

for(j=46078j>0j--)

}

main()

{

IT0=1 //下降沿触发

EX0=1 //开P3.2外部中断

EA=1 //总中断开

while(1)

while(k)

{

Y1=0 //正转

while(X1==1) //等待正转接近开关反应

Y1=1 //正转停

delay50ms(1)//停止时间50ms

Y2=0//反转

while(X2==1)//等待反转接近开关反应

Y2=1 //反转停

k--//圈数减一

}

}

void counter0(void) interrupt 0

{

k++//外部中断控制圈数加一

//这个位置可以加你显示程序

}

程序已经通过测试,放上去就能用,很好玩哟,呵呵

楼主您好。

L298一般配合单片机使用。

简单的说,L298有四个输出,O1,O2,O3,O4.一般可以接两个电机,可以分别控制正反转和PWM调速。它有四个输入,IN1~4,可以分别控制相当的四个输出电平的高低。ENA,ENB当它们为高电平的时候,正常输出,否则不输出电压。这两个引脚一般用PWM调速用。如果不需要,可以接入高电平。

如图为一简单应用。

附一段89c52的PWM调速程序:

#include <reg52.h>

unsigned char key

sbit LED0=P1^4

sbit LED1=P1^5

sbit LED2=P1^6

sbit LED3=P1^7

sbit ENA=P2^4

void delay(unsigned int loop)

{

while(loop--)

}

void chSpeed() interrupt 0

{

EX0=0

delay(500)//delay 2.5ms.

key++

if(key==0)

P1=0x10

else if(key==1)

P1=0x20

else if(key==2)

P1=0x40

else if(key==3)

P1=0x80

else if(key>3)

{

key=0

P1=0x10

}

EX0=1

}

void timer0() interrupt 1

{

TH0=(65535-1000)/256

TL0=(65535-1000)%256

if(key==0)

{

ENA=1

}

else if(key==1)

{

TH1=(65535-750)/256

TL1=(65535-750)%256

}

else if(key==2)

{

TH1=(65535-500)/256

TL1=(65535-500)%256

}

else if(key==3)

{

TH1=(65535-250)/256

TL1=(65535-250)%256

}

TR1=1

ENA=1

}

void timer1() interrupt 3

{

ENA=0

TR1=0

}

void main()

{

void delay(unsigned int)

ET0=1

ET1=1

TMOD=0x11

TH0=(65535-1000)/256

TL0=(65535-1000)%256

TH1=(65535-750)/256

TL1=(65535-750)%256

TR0=1

EX0=1

IT0=1

TR1=1

EX1=1

IT1=1

EA=1

P0=0xFF

P1=0x10

P2=0XFF

P3=0XFF

while(1)

{

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/11324344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存