微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > Proteus仿真PMW舵机时不知为何舵机不动

Proteus仿真PMW舵机时不知为何舵机不动

时间:10-02 整理:3721RD 点击:
RT,资料上说PWM舵机是通过脉冲信号来控制的,一个周期是20ms,所以用12Mhz的晶振定时器应该比较准吧...每0.5ms控制舵机一个角度,所以我设置定时器65536-500=65035=fe0cH
那么...为何舵机就是不转呢?求老师能解答一下。
#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit pwd=P2^0;
sbit s1=P3^1;
sbit s2=P3^2;
uchar count,jd=1;
void delay(uchar z)
{
        uchar a;
        for(z=z;z>0;z--)
                for(a=114;a>0;a--);
}
void init()
{
        TMOD=0x01;
        TH0=0xfe;
        TL0=0x0c;
        ET0=1;
        EA=1;
        TR0=1;
}
void key()
{
        if(!s1)
        {
                delay(5);
                if(!s1)
                {
                        count=0;
                        jd++;
                        if(jd>5)
                                jd=5;       
                        while(!s1);
                }
        }
        if(!s2)
        {
                delay(5);
                if(!s2)
                {
                        count=0;
                        jd--;
                        if(jd<1)
                                jd=1;
                        while(!s2);
                }
        }
}
void main()
{
        init();
        while(1)
        {
                key();
        }
}
void time0() interrupt 1
{
        TH0=0xfe;
        TL0=0x0c;
        if(count<jd)
                pwd=1;
        else
        {
                pwd=0;
                count++;
                count=count%40;       
        }       
}


应该是脉冲宽度调制吧?

是的

所以你应该换成pwm的函数

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

网站地图

Top