找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2941|回复: 6
打印 上一主题 下一主题
收起左侧

直流电机为什么不能测速 求大神 解决

[复制链接]
跳转到指定楼层
楼主
ID:259731 发表于 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;
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:341045 发表于 2018-6-11 11:41 | 只看该作者
没原理图, 程序也没点注释, 看不懂呀.
回复

使用道具 举报

板凳
ID:330198 发表于 2018-6-11 12:39 | 只看该作者
可以测速,不过要加个传感器
回复

使用道具 举报

地板
ID:320306 发表于 2018-6-11 13:01 | 只看该作者
有霍尔或者红外对管吗,都是可以检测速度的传感器!!!!!!!!!!
回复

使用道具 举报

5#
ID:349405 发表于 2018-6-11 13:47 | 只看该作者
确实可以的
回复

使用道具 举报

6#
ID:469417 发表于 2019-1-31 19:01 | 只看该作者
能测啊,要不别人那些转速值是哪儿来的?不仅能测,还能调

评分

参与人数 4黑币 +68 收起 理由
sheng7533967 + 15
shuisheng60 + 10 回帖助人的奖励!
jinsheng7533967 + 35 很给力!
找人PK + 8

查看全部评分

回复

使用道具 举报

7#
ID:652301 发表于 2019-11-30 15:58 | 只看该作者
刀刀见红 发表于 2019-1-31 19:01
能测啊,要不别人那些转速值是哪儿来的?不仅能测,还能调

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表