标题: 直流电机为什么不能测速 求大神 解决 [打印本页]

作者: landsen    时间: 2018-6-11 10:26
标题: 直流电机为什么不能测速 求大神 解决
#include<reg51.h>
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;
sbit motor1=P1^1;
unsigned int speed;
unsigned int value;
unsigned int T;
unsigned char code ZF[]=" Speed= ";   //8个字符
void INIT();
void INIT0();
void INIT1();
void Timer();
void Timer0();
void delay(unsigned t);
void init_lcd(void);
void writecom(unsigned char com);
void writedate(unsigned char date);
void motor(int speed);
main()
{
    int i;
        T=0;        
        speed=0;
        INIT();
        Timer();
        init_lcd();
       
                for(i=0;i<8;i++)
                {
                        writedate(ZF[i]);
                }
        while(1)
        {       
                 if(k1==0)
                 {
                         delay(10);
                        if(k1==0)
                        {        int a;
                                motor1=0;
                                while((a<50)&&k1==0)
                                {
                                        delay(10);
                                        a++;
                                }
                                a=0;
                        }
                        motor(speed);
                        writecom(0x88);
                        writedate('1');
                 }
                 else
                 {
                         if(k2==0)                       
                        {
                                delay(10);
                                if(k2==0)
                                {        int b;
                                        motor1=1;
                                        while((b<50)&&k2==0)
                                        {
                                                delay(10);
                                                b++;
                                        }
                                        b=0;
                                }
                        }
                        motor(speed);
                        writecom(0x88);
                        writedate('4');               
                 }

        }
}

void INIT()         //k2,k3外部中断初始化
{
        IT0=1;
        EX0=1;
        IT1=1;
        EX1=1;
        EA=0;
}

void INIT0()interrupt 0         //外部中断0服务函数
{
        delay(10);
        if(k3==0)
        {
                speed++;
        }       
}

void INIT1()interrupt 2//外部中断1服务函数
{
        delay(10);
        if(k4==0)
        {
                if(speed>0)
                {
                        speed--;       
                }
                else
                speed=0;
        }
}

void Timer()          //定时器初始化
{
        TMOD=0x01;
        TH0=0xfc;          //初值fc18---1ms
        TL0=0x18;
        EA=1;
        ET0=1;
        TR0=1;
}

void Timer0()interrupt 1        //定时器服务函数
{
        TH0=0xfc;
        TL0=0x18;
        T++;
}

void delay(unsigned t)                //延时函数精确到ms
{
        if(T=t)
        {
                while(--t);
        }
        T=0;
}



作者: lzts88    时间: 2018-6-11 11:41
没原理图, 程序也没点注释, 看不懂呀.
作者: zhanghyg    时间: 2018-6-11 12:39
可以测速,不过要加个传感器
作者: zsyzdx    时间: 2018-6-11 13:01
有霍尔或者红外对管吗,都是可以检测速度的传感器!!!!!!!!!!
作者: yrbneumann5288    时间: 2018-6-11 13:47
确实可以的
作者: 刀刀见红    时间: 2019-1-31 19:01
能测啊,要不别人那些转速值是哪儿来的?不仅能测,还能调
作者: 学就学,玩就玩    时间: 2019-11-30 15:58
刀刀见红 发表于 2019-1-31 19:01
能测啊,要不别人那些转速值是哪儿来的?不仅能测,还能调

代码y有一丢丢问题,能帮忙改下吗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1