微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 机器人教程1:如何利用51单片机输出PWM波

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

时间:12-01 来源:互联网 点击:

因为这里我们是产生周期为1ms(1000HZ)的PWM,所以可设置中断的时间间隔为0.01ms,,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当time>=100时,time清零(此语句保证频率为1000HZ),2、当time>

if(time>

if(time>

for(y=z;x>

for(y=110;y>

if(count>

if(count>

if(time>

if(time>

bit 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;

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top