找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求个大佬帮我调一下占空比,让小车速度慢一点,万分感谢

[复制链接]
跳转到指定楼层
楼主
ID:449814 发表于 2018-12-27 15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<AT89X52.H>  //????52?????????
//????????С?????????????IO
sbit IN1 = P1^2; // ????1 ??????????
sbit IN2 =  P1^3; // ????1 ??????????
sbit IN3 = P1^6; // ????1 ??????????
sbit IN4 =  P1^7; // ????1 ??????????
sbit EN1 = P1^4;   // ???????
sbit EN2 =  P1^5; // ???????
sbit BUZZ=P2^3;
    #define Left_1_led        P3_3  // ??????      
#define Right_1_led       P3_2  //???????
    #define Left_moto_pwm   P1_5  //PWM????
#define Right_moto_pwm   P1_4   //PWM????     
//???????
   void delay(unsigned int k)
{   
     unsigned int x,y;
  for(x=0;x<k;x++)
    for(y=0;y<2000;y++);
}
//С?????????
void run(void)
{
     IN1=0;  //????
  IN2=1;
  IN3=1;  //????
  IN4=0;
  EN1=0.01;
  EN2=0.01;
}
//С?????????
void backrun(void)
{
     IN1=1;  //????
  IN2=0;
  IN3=0;  //????
  IN4=1;
  EN1=0.01;
  EN2=0.01;
}
//С?????????
void leftrun(void)
{
     IN1=0;  //????
  IN2=0;
  IN3=1;  //????
  IN4=0;
  EN1=0.01;
  EN2=0.01;
}
  //С?????????
void rightrun(void)
{
     IN1=0;  //????
  IN2=1;
  IN3=0;  //????
  IN4=0;      
  EN1=0.01;
  EN2=0.01;
}
   //С????????
void stopruo(void)
{
     IN1=0;  //????
  IN2=0;
  IN3=0;  //????
  IN4=0;
  EN1=0.01;
  EN2=0.01;
}
//??????
void main(void)
{  
while(1){
if(Left_1_led==1)
   if(Right_1_led==0)
   {backrun();}
    if(Right_1_led==0)
   {leftrun();delay(50);}
   else
    if(Left_1_led==0)
   {rightrun();delay(50);}
if(Left_1_led==1)
   if(Right_1_led==1)
   {run();}
} }



评分

参与人数 1黑币 +1 收起 理由
周超然 + 1 淡定

查看全部评分

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

使用道具 举报

沙发
ID:449525 发表于 2018-12-27 16:49 | 只看该作者
你这个代码,第一注释用keil设置文本赋值,百度网上查
第二,if后面没有{}么?
代码写出来自己和别人都需要看的,别随手写。习惯不好,以后坑自己也坑别人。
回复

使用道具 举报

板凳
ID:393699 发表于 2018-12-27 23:26 | 只看该作者
这个注释,醉了,能改一下格式再发上来吗?
这个程序是用IO口高低电平模拟PWM输出吧,没有用定时器的话只需控制高电平持续时间就可以控制占空比,也就可以调整小车速度了,楼主顺着这个思路整理下
回复

使用道具 举报

地板
ID:164602 发表于 2018-12-28 10:19 | 只看该作者
我有一个,你看看。
#include <reg51.h>

sbit ZLDJ20=P2^3;//IC的控制输入脚5、7或10、12
sbit ZLDJ21=P2^2;
sbit EN2=P1^0;
sbit ZLDJ10=P2^1;
sbit ZLDJ11=P2^0;
sbit EN1=P1^1;

sbit Agoto=P2^5;//遥控器按键输入I/O口
sbit Bback=P2^7;
sbit Cright=P2^6;
sbit Dleft=P2^4;

unsigned char pwm=0;
unsigned char push=6;
unsigned char pwm_T=20;

void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(c;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

void pwmint(void)
{
        TMOD=0X01;
        TH0= 0XFC;
        TL0= 0X66;
        TR0= 1;
        ET0= 1;
        EA = 1;
}

void pwm_out(void)
{  
        if(pwm<=push)
        {
                EN1=1;
                EN2=1;
        }
        else
        {
                EN1=0;
                EN2=0;
        }
        if(pwm>=pwm_T)
        {
                pwm=0;
        }
}

void timer0()interrupt 1
{
     TH0=0XFC;
         TL0=0X66;
         pwm++;
         pwm_out();
}       

void TC(void)
{
        ZLDJ10=0;
        ZLDJ11=0;
        ZLDJ20=0;
        ZLDJ21=0;
}

void PU(void)
{
        ZLDJ20=1;
        ZLDJ21=0;
        ZLDJ10=1;
        ZLDJ11=0;
}

void PD(void)
{
        ZLDJ20=0;
        ZLDJ21=1;
        ZLDJ10=0;
        ZLDJ11=1;
}

void RR(void)
{
        ZLDJ20=0;
        ZLDJ21=0;
        ZLDJ10=1;
        ZLDJ11=0;
}

void LL(void)
{
        ZLDJ20=1;
        ZLDJ21=0;
        ZLDJ10=0;
        ZLDJ11=0;
}

void PWMD(void)
{
        push=push+2;
        if (push>20)
        {
                push=20;
        }
}

void PWMX(void)
{
        push=push-2;
        if (push<6)
        {
                push=6;
        }
}

void main(void)
{
        unsigned char n;
        pwmint();
        TC();
        Agoto=1;
        Bback=1;
        Cright=1;
        Dleft=1;
        while(1)
        {
                if (Agoto==1)
                {
                        n=0;
                        while(Agoto)
                        {
                                n++;
                                Delay10ms(1);
                                if (n>200)
                                {
                                        break;
                                }
                        }
                        if (n>30)
                        {
                                PWMD();
                        }
                        else
                        {
                                PU();
                        }
                }
                if (Bback==1)
                {
                        n=0;
                        while(Bback)
                        {
                                n++;
                                Delay10ms(1);
                                if (n>200)
                                {
                                        break;
                                }
                        }
                        if (n>30)
                        {
                                PWMX();
                        }
                        else
                        {
                                PD();
                        }
                }
                if (Cright==1)
                {
                        RR();
                }
                if (Dleft==1)
                {
                        n=0;
                        while(Dleft)
                        {
                                n++;
                                Delay10ms(1);
                                if (n>200)
                                {
                                        break;
                                }
                        }
                        if (n>30)
                        {
                                TC();
                        }
                        else
                        {
                                LL();
                        }
                }

        }
}
功能是:通过无线电遥控器,控制小车,其中可以加速、减速,就是你说的调速。因为遥控器只有四键,所以我用此程序,扩成了八个功能,即一键双功能。


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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