历史上的今天
今天是:2025年02月03日(星期一)
2021年02月03日 | 基于AT89C51单片机直流电机PWM调速程序分享
2021-02-03 来源:eefocus
这是一款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;
}
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 有没有了解关于单片机89V51 的程序编写问题啊 主要用于小车驱动 对于P2口传感器的状态一直读取不进来 附件是89V51的参考资料 … 查看全部问答> |
|
1、一般方法 a、利用Matlab的函数awgn 例如正弦波加入高斯白噪声,SNR=10dB。程序:t=[1:0.1:pi];s=sin(t);r=awgn(s,10,\'measured\'); b、利用Matlab的函 ...… 查看全部问答> |
|
最近在工作中常常需要用到Makefile来编译和链接arm程序,但是现在我还是无法脱离集成开发环境,希望高手指点指点, 以下是我找到的一个比较经典的make,但是还没有完全将它的意思弄清楚,希望高手指点 #Makefile文件涉及的语法众 ...… 查看全部问答> |
|
老师周三带我们学习LM3S8962 评估套件的使用,看老师用套件演示的蒸汽机车图片,黑白相间的图片从小屏显示出来,想象不到效果会这么酷,看的我们十个人新潮澎湃。之后又演示了盘上带的东西,还做了一些简单的修改,第二天就去外地上课了。今天老板 ...… 查看全部问答> |
|
在网上找到一篇“5分钟用STM32的内置Flash做一个超小U盘” 用他提供的方法不行。请问各位高手 STM32 内置 FLASH 可以做 U 盘吗?… 查看全部问答> |
|
今天对STM32F207和103做了一下对比,想做一个STM32F207与 103兼容设计,都是144Pin的,画PCB真的很烦呀!搞一次,最好两个都能兼容上!对比如下 管脚 STM32F207 STM32F103 30 Vdd_12&nbs ...… 查看全部问答> |




