51单片机实现直流电机的调速控制
电路图如下
占空比18%-82%连续可调,通过调节电路中的电位器实现。
做了单定时器控制和双定时器控制两个程序,电路图一样。
单定时器控制程序
#include
#include
int count0=1000;
bit A=0;
sbit IN1=P3^4;
sbit IN2=P3^5;
sbit INTR=P3^2;
sbit wr=P3^6;
sbit rd=P3^7;
sbit PB1=P3^0;
int T0_H,T0_L;
char TAB[11]={0xc0,0xf9,0xa4,0xb0,0x99,
void delay(int);
void display(void);
main()
{int i,DATA;
}
void t0(void)interrupt 1
{if(A==0)
else
}
void display(void)
{int i,j,per,scan;
}
void delay(int x)
{int i,j;
for(i=0;i
}
双定时器控制的程序
#include
#include
#define LED P2
int count1=0;
int count0=10000;
#define T0_H (65535-count0)/256
#define T0_L (65535-count0)%6
#define T1_H (65535-count1)/256
#define T1_L (65535-count1)%6
sbit IN1=P3^4;
sbit IN2=P3^5;
sbit INTR=P3^2;
sbit wr=P3^6;
sbit rd=P3^7;
char TAB[11]={0xc0,0xf9,0xa4,0xb0,0x99,
void delay(int);//1ms
void display(void);
void T(int);
main()
{int i;
}
void t1(void)interrupt 3
{TH1=T1_H;TL1=T1_L;
}
void t0(void)interrupt 1
{count0=10000-count1;
}
void T(int Tw)
{ Tw=Tw<5;
}
void display(void)
{int i,j,per,scan;
}
void delay(int x)
{int i,j;
for(i=0;i
}
不足之处:这两种方法实现都有一个问题,输出PWM波的周期时长与期望有一定相差,期望一周期10ms,仿真后得到波形周期为12.5ms左右,具体的解决办法不是很清楚,希望有高人路过,不吝赐教!
51单片机直流电机调速控 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)