基于51单片机直流电机PWM调速程序

这是一款at89c51单片机直流电机pwm调速程序,程序可以直接用于at89c52、at89s51、at89s51,stc89c51、stc89c52单片机中,单片机晶振采用11.0592m,直流电机由l298集成电路控制,产生的pwm的频率约为91hz。l298各引脚已在程序中标明,原理图大家可以自己画一下,这里就不具给出。下面是源程序。
#include[reg52.h》//注意请把‘ [ ’换成 “《”,下同。否则编译时会出错。
#include [intrins.h》//
#define uchar unsigned char
#define uint unsigned int
sbit en1=p2^0;
sbit en2=p2^1;
sbit s1=p2^2;
sbit s2=p2^3;
sbit s3=p2^4;
sbit s4=p2^5;
uchar t=0;
uchar m1=0;
uchar m2=0;
uchar tmp1,tmp2;
void motor(uchar index, char speed)
{
if(speed》=-100 && speed《=100)
{
if(index==1)
{
m1=abs(speed);
if(speed《0)
{
s1=0;
s2=1;
}
else
{
s1=1;
s2=0;
}
}
if(index==2)
{
m2=abs(speed);
if(speed《0)
{
s3=0;
s4=1;
}
else
{
s3=1;
s4=0;
}
}
}
}
void delay(uint j)
{
for(j;j》0;j--);
}
void main()
{
char i;
tmod=0x02;
th0=0x9b;
tl0=0x9b;
ea=1;
et0=1;
tr0=1;
while(1)
{
for(i=0;i《=100;i++)
{
motor(1,i);
motor(2,i);
delay(5000);
}
for(i=100;i》0;i--)
{
motor(1,i);
motor(2,i);
delay(5000);
}
for(i=0;i《=100;i++)
{
motor(1,-i);
motor(2,-i);
delay(5000);
}
for(i=100;i》0;i--)
{
motor(1,-i);
motor(2,-i);
delay(5000);
}
}
}
voidtimer0() interrupt 1
{
if(t==0)
{
tmp1=m1;
tmp2=m2;
}
if(t
if(t
t++;
if(t》=100) t=0;
}

SDL-109A-T1信号中断放大器参数介绍
中压进线保护装置
三大运营商今年将在5G方面的投入有望超过400亿元
改进的高速印制电路板布线实践指南
我国遥感卫星数量质量达到世界先进水平
基于51单片机直流电机PWM调速程序
隔离闪光器电路原理图讲解
实现以太网通信硬件电路方法
路由器WAN口获取不了IP地址怎么办?
在动力电池研发的上比亚迪和宁德时代谁更强
NE555时基集成电路的实验与制作,NE555 introduction
华东师大研发可伸缩离子导电水凝胶传感器,可应用于人体运动监测中
光电耦合器电路图大全(可控硅/稳压电路/隔离耦合电路详解)
QPA2225 Ka波段0.4瓦GaN驱动放大器QORVO
太阳能与LED照明的结合技术分析
上海正式发布人工智能应用场景建设实施计划
单片机控制的密码锁设计(含电路图及源程序)
总投资150亿,青岛芯恩国内启动的首个CIDM集成电路项目
海信新风增氧空调 疫情当前凸显优秀品牌的能力与担当
基于FPGA实现电路的同步提取性能设计