单片机控制小马达正反转

核心提示基本上任何型号的单片机都可以满足此功能,具体看你条件吧。电源的话外接5V的直流适配器就可以了,基本不需要做任何电压转化,硬件电路上主要是你要加一个三极管做一下驱动,单片机的IO可能没有办法驱动130电机。程序就更简单了,直流小电机,两个IO

基本上任何型号的单片机都可以满足此功能,具体看你条件吧。电源的话外接5V的直流适配器就可以了,基本不需要做任何电压转化,硬件电路上主要是你要加一个三极管做一下驱动,单片机的IO可能没有办法驱动130电机。

程序就更简单了,直流小电机,两个IO口,轮询进行高低切换,在定时器里面完成就可以了。

给你原理图,修改一下,

两个程序修改一下。。

实在弄不来我再帮忙

这是控制正反转的程序:

#include?<reg52.h>

bit?Flag;//定义正反转标志位

unsigned?char?code?F_Rotation[4]={0xf1,0xf2,0xf4,0xf8};?//正转表格

unsigned?char?code?B_Rotation[4]={0xf8,0xf4,0xf2,0xf1};?//反转表格

void?Delay(unsigned?int?i)//延时

{

while(--i);

}

main()

{

unsigned?char?i;

EX1=1;?//外部中断0开

IT1=1;?//边沿触发

EA=1;?//全局中断开

while(!Flag)

{

P0=0x71;//显示?F?标示正转

for(i=0;i<4;i++)?//4相

{

P1=F_Rotation[i];?//输出对应的相?可以自行换成反转表格

Delay(800);//改变这个参数可以调整电机转速?,数字越小,转速越大

?}

}

while(Flag)

{?

P0=0x7C;//显示?b?标示反转

for(i=0;i<4;i++)?//4相

{

P1=B_Rotation[i];?//输出对应的相?

Delay(500);//改变这个参数可以调整电机转速?,数字越小,转速越大

?}

}

}

void?ISR_Key(void)?interrupt?2?using?1

{

Delay(300);

Flag=!Flag;?//s3按下触发一次,标志位取反

}

这是控制转速的程序:

#include<reg52.h>?//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit?KEY1?=?P3^1;?//定义调速按键

sbit?PWM?=?P1^5;?//定义调速端口

unsigned?char?CYCLE;?//定义周期?该数字X基准定时时间?如果是10?则周期是10?x?0.1ms

unsigned?char?PWM_ON?;//定义高电平时间

void?delay(unsigned?int?cnt)

{

while(--cnt);

}

main()

{

unsigned?char?PWM_Num;//定义档位

TMOD?|=0x01;//定时器设置?1ms?in?12M?crystal

TH0=(65536-1000)/256;?

TL0=(65536-1000)%256;//定时1mS?

IE=?0x82;?//打开中断

TR0=1;

CYCLE?=?10;//?时间可以调整?这个是10步调整?周期10ms?8位PWM就是256步

while(1)

{

if(!KEY1)

{

delay(10000);

if(!KEY1)

{

PWM_Num++;

?if(PWM_Num==4)PWM_Num=0;

switch(PWM_Num){

case?0:P0=0x06;PWM_ON=0;break;//高电平时长?

case?1:P0=0x5B;PWM_ON=4;break;

case?2:P0=0x4F;PWM_ON=6;break;

case?3:P0=0x66;PWM_ON=8;break;

default:break;

}

}

}

}

}

void?tim(void)?interrupt?1?using?1

{

static?unsigned?char?count;?//

TH0=(65536-1000)/256;?

TL0=(65536-1000)%256;//定时1mS?

if?(count==PWM_ON)

{

PWM?=?1;//灯灭?

}

count++;

if(count?==?CYCLE)

{

count=0;

if(PWM_ON!=0)//如果左右时间是0?保持原来状态

PWM?=?0;?//灯亮

}

}

 
友情链接
鄂ICP备19019357号-22