新闻中心

EEPW首页>嵌入式系统>设计应用> 机器人教程1:如何利用51单片机输出PWM波

机器人教程1:如何利用51单片机输出PWM波

作者: 时间:2016-12-01 来源:网络 收藏

/**************定时0中断处理******************/

void timer0_int() interrupt 1

{

TR0=0;//设置定时器初值期间,关闭定时器

TH0=(65536-10)/256;

TL0=(65536-10)%256;

TR0=1;

if(flag==1)//电机正转

{

PWM1=0;

time++;

if(time {

PWM2=1;

}

else

PWM2=0;

if(time>=100)

{

time=0;

}

}

else //电机反转

{

PWM2=0;

time++;

if(time {

PWM1=1;

}

else

PWM1=0;

if(time>=100)

{

time=0;

}

}

}

5、利用单片机输出PWM简单控制小车直行

相信通过上面的讲解,大家已经能够很好的撑握如何利用51单片机产生PWM波下面给出一个程序,通过单片机两个I/O口输出PWM波,让小车直行。

#include

#define uint unsigned int

#define uchar unsigned char

sbit PWM1=P2^0;//接IN1控制正转

sbit PWM2=P2^1;//接IN2控制反转

sbit PWM3=P2^2;//接IN3控制正转

sbit PWM4=P2^3;//接IN4控制反转

sbit PWM5=P2^4;//接IN3控制正转

sbit PWM6=P2^5;//接IN4控制反转

sbit PWM7=P2^6;//接IN3控制正转

sbit PWM8=P2^7;//接IN4控制反转

uchar time;

void main()

{

TMOD=0x01;//定时器0工作方式1

TH0=0xff;//(65536-10)/256;//赋初值定时

TL0=0xf7;//(65536-10)%256;//0.01ms

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0

while(1)

{

}

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=500;y>0;y--);

}

void tim0() interrupt 1

{

TR0=0;//赋初值时,关闭定时器

TH0=0xff;//(65536-10)/256;//赋初值定时

TL0=0xf7;//(65536-10)%256;//0.01ms

TR0=1;//打开定时器

time++;

if(time>=100) time=0;//1khz

PWM2=0;

PWM4=0;

if(time<=75) PWM1=1;

else PWM1=0;

if(time<=80) PWM3=1;

else PWM3=0;

PWM6=0;

PWM8=0;

if(time<=50) PWM5=1;

else PWM5=0;

if(time<=50) PWM7=1;

else PWM7=0;

}


上一页 1 2 3 下一页

评论


技术专区

关闭