历史上的今天
今天是:2025年06月03日(星期二)
2020年06月03日 | 基于51单片机直流电机PWM调速程序
2020-06-03 来源:elecfans
这是一款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;
}
上一篇:单片机IO口另外三种状态
下一篇:51单片机4种简单的扩展方法
史海拾趣
|
2008-10-18,TI C64x网络开发应用技术讲座邀请函 ——AKA阿卡技术沙龙之DSP篇 2008年10月18日,AKA阿卡技术沙龙之DSP技术讲座在北京交通大学九教中102室举行,大会特邀了闻亭数字技术总监——尚高,就德州仪器(TI)公司最新推出的TI C64x网络开发应用技术做主题演讲。 德州仪器(TI)公司作为模拟 ...… 查看全部问答> |
|
EVC编译问题:CVTRES : fatal error CVT1102 本人原先系统是在PPC2003 SDK下,工具VS2005;现更换成酷派WINCE5 SDK下,工具EVC4。更换系统后,有无新系统SDK支持功能少,有些都用不上去了,需要重新定义。但是,现在编译时,提示:CVTRES : fatal error CVT1102: out of memory; 41 bytes requ ...… 查看全部问答> |
|
小弟最近用wince5.0编译内核,发现在某些情况下会生成。nb1文件,比如说eboot.nb1这种情况看了一些说法是eboot.nb0空间不够存放内核,所以放到eboot.nb1中,但是查看eboot.bin文件发现空间还多的是。在有些时候会出现上面的情况。我用的AT91SAM9261 ...… 查看全部问答> |
|
把几个需要掉电保存的变量定义在信息段flash中。 参见斑竹以及几位大侠的介绍,我修改了xcl(连接文件) -Z(CODE)INFOA=1000-1079 //yg change -Z(CODE)INFOB=1080-10FF //yg change 把A 和B两个各128字节的 信息段flash标志出来。 问题 ...… 查看全部问答> |
|
解答FPGA工程师面试第一题+第二题(每日一题)............................... 1.同步电路与异步电路的区别是什么? 异步电路主要是组合逻辑电路,用于产生地址译码器、FIFO或RAM的读写控制信号脉冲,但它同时也用在时序电路中,此时它没有统一的时钟,状态变化的时刻是不稳定的,通常输入信号只在电路处于稳定状态时才 ...… 查看全部问答> |
|
◆ PANdrive系列:控制器+驱动器+电机(步进,直流无刷)+编码器 PANdrive系列产品是一种智能产品集成了控制器,驱动器,电机,磁编码器与一体此外支持如USB,RS232,RS485,CAN等多种通讯方式。外部只需要提供 ...… 查看全部问答> |




