普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4482|回复: 1

[已解决] 这个为啥不能实现电机调速呀

 关闭 [复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2019-12-10 09:10:09 | 显示全部楼层 |阅读模式
1金钱
#include "reg52.h"
#include<intrins.h>
typedef unsigned int u16;          //&#182;&#212;êy&#190;YààDí&#189;&#248;DDéù&#195;÷&#182;¨ò&#229;
typedef unsigned char u8;
sbit Moto=P1^0;
sbit k1=P0^0;
sbit k2=P0^1;
u8 t=0;

u16 sp;
void delay(u16 i)
{
        while(i--);       
}
void init()               
{
        TMOD=0x02;                /*éè&#214;&#195;&#182;¨ê±&#198;÷0&#206;a1¤×÷·&#189;ê&#189;2*/
       
        TH0=256-206;                /*3&#245;×°&#214;μéè&#214;&#195;&#212;&#188;&#206;a50usò&#187;′&#206;&#214;D&#182;&#207;*/
        TL0=256-206;
       
        EA=1;
        ET0=1;
        TR0=1;
        sp=90;
        }

void keypros()
{
        if(k1==0)                  //&#188;ì2a°′&#188;üK1ê&#199;·&#241;°′&#207;&#194;
        {       
                delay(1000);   //&#207;&#251;3y&#182;&#182;&#182;ˉ ò&#187;°&#227;′ó&#212;&#188;10ms
                if(k1==0)         //&#212;ù′&#206;&#197;D&#182;&#207;°′&#188;üê&#199;·&#241;°′&#207;&#194;
                {
                        sp++;          //×a&#203;ù&#212;&#246;&#188;ó
                }
                while(!k1);         //&#188;ì2a°′&#188;üê&#199;·&#241;&#203;é&#191;a
        }               
        if(k2==0)                  //&#188;ì2a°′&#188;üK1ê&#199;·&#241;°′&#207;&#194;
        {       
                delay(1000);   //&#207;&#251;3y&#182;&#182;&#182;ˉ ò&#187;°&#227;′ó&#212;&#188;10ms
                if(k2==0)         //&#212;ù′&#206;&#197;D&#182;&#207;°′&#188;üê&#199;·&#241;°′&#207;&#194;
                {
                        sp--;          //×a&#203;ù&#188;&#245;D&#161;
                }
                while(!k2);         //&#188;ì2a°′&#188;üê&#199;·&#241;&#203;é&#191;a
        }               
}
void main ()
{
    init();
                while (1)
                {
                        keypros();  //°′&#188;ü′|àíoˉêy       
               
                }
               
}
void exter0() interrupt 1
{
         t++;
        if(t>=100)
        {
                t=0;
        }

/*&#182;¨ò&#229;μ&#231;&#187;úμ&#196;pwm&#213;&#188;&#191;&#213;±è*/       

       

                if(t<SP)                 
                {
                        Moto=1;
                }       
                else
                {
                        Moto=0;
                }
       
}

最佳答案

可以参考我们普中-音速号 智能小车电机调速程序,原理非常简单,通过定时器输出PWM,然后调节占空比即可调节速度。

回复

使用道具 举报

27

主题

337

帖子

3294

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3294
发表于 2019-12-14 08:56:48 | 显示全部楼层
可以参考我们普中-音速号 智能小车电机调速程序,原理非常简单,通过定时器输出PWM,然后调节占空比即可调节速度。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-24 02:19 , Processed in 0.084160 second(s), 32 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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