智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 12581|回复: 4
打印 上一主题 下一主题

请教 关于蓝牙控制小车差速法转弯的问题

[复制链接]

1

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
22
威望
16
贡献
6
兑换币
6
注册时间
2016-8-13
在线时间
0 小时
毕业学校
安徽大学
跳转到指定楼层
1#
发表于 2016-8-13 21:57:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
感觉串口中断和定时器中断同时使用会有问题。 不管怎么调节占空比,到最后转弯的时候只会是一个轮子不动,一个轮子旋转
回复

使用道具 举报

1

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
22
威望
16
贡献
6
兑换币
6
注册时间
2016-8-13
在线时间
0 小时
毕业学校
安徽大学
2#
 楼主| 发表于 2016-8-13 22:00:38 | 只看该作者
[code]#include<reg52.h>
#include <intrins.h>  
#define uchar unsigned char
#define uint unsigned int
sbit IN1=P1^1;                          //电机接口
sbit IN2=P1^2;
sbit IN3=P1^3;
sbit IN4=P1^4;
sbit ENA=P1^5;
sbit ENB=P1^6;            
uchar chuankou[4]={0};   //串口接收到的值;
uchar i=0,j=0,lpwm=35,rpwm=35; //占空比标志
void go()           //前进函数
{
        rpwm=35;         
        lpwm=35;
        IN1=0;
        IN2=1;
        IN3=0;
        IN4=1;
}
void back()                 //后退函数
{
        rpwm=35;
        lpwm=35;
        IN1=1;
        IN2=0;
        IN3=1;
        IN4=0;
}
void left()                  //左转函数
{
        lpwm=35;                //调整左轮占空比 使右轮转速比左轮快 左转
        rpwm=38;                //调整右轮占空比
        IN1=1;
        IN2=1;
        IN3=0;
        IN4=1;
}
void right()      //右转函数
{
        lpwm=38;                //调整左右轮占空比使左轮转速比右轮快 右转
        rpwm=35;
        IN1=0;
        IN2=1;
        IN3=1;
        IN4=1;
}
void stop()                 //停车
{
        rpwm=0;
        lpwm=0;
        IN1=1;
        IN2=1;
        IN3=1;
        IN4=1;
}
void init()
{
        
        TMOD=0x21; //设定定时器为方式2 可自动再装入的定时器  
        SM0=0;  //设定串口工作方式1  10位异步收发器  8位数据  
        SM1=1;  //设定串口工作方式1  10位异步收发器  8位数据  
        TH1=0xfd;//装入初值  
        TL1=0xfd; //装入初值  
        PCON=0x00; //设定串行口波特率  
        REN=1;  //允许串行接收位。REN=1,启动接收数据;REN=0,禁止接收。  
        IP=0x10;  
        TH0=(65535-100)/256;            
        TL0=(65535-100)%256;   
        TR0=1;  //启用T0定时器/计数器  
        ET0=1;  //T0定时器中断开关;(开)   
        TR1=1;  //启用T1定时器/计数器  
        ET1=1;  //T1定时器中断开关;(开)  
        ES=1;  //串行中断开关;(开)  
        EA=1;  //总中断开关;(开)  
        ENA=1;
        ENB=1;
}

void main()
{  
        init();
        while(1)
        {
                switch(chuankou[0])
                {
                        case 1:go();break;
                        case 2:back();break;
                        case 3:left();break;
                        case 4:right();break;
                        case 0:stop();break;
                        default:break;
                }         
        }
}  
//串口中断  
void serial() interrupt 4
{  
        EA=0;
        if(RI==1)
        {
                if(SBUF==0x02)
                {
                        chuankou[0]=1;
                }
                if(SBUF==0x04)
                {
                        chuankou[0]=2;        
                }
                if(SBUF==0x06)
                {
                        chuankou[0]=3;
                }
                if(SBUF==0x08)
                {
                        chuankou[0]=4;
                }
                if(SBUF==0x10)
                {
                        chuankou[0]=0;
                }
                RI=0;
        }
        EA=1;
}   
void timer0() interrupt 1
{   
        i++;
        j++;
        if(i<=rpwm)
        {
                ENA=1;
        }
        else
                ENA=0;
        if(i==40)
        {
                ENA=~ENA;
                i=0;
        }
        if(j<=lpwm)
        {
                ENB=1;
        }
        else
                ENB=0;
        if(j==40)
        {        
                ENB=~ENB;
                j=0;
        }
        TH0=(65536-100)/256;
        TL0=(65536-100)%256;
}
         
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
22
威望
16
贡献
6
兑换币
6
注册时间
2016-8-13
在线时间
0 小时
毕业学校
安徽大学
3#
 楼主| 发表于 2016-8-13 22:00:52 | 只看该作者
代码如上 。求解
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
22
威望
16
贡献
6
兑换币
6
注册时间
2016-8-13
在线时间
0 小时
毕业学校
安徽大学
4#
 楼主| 发表于 2016-8-15 15:09:31 | 只看该作者
没有人吗。。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
26
威望
24
贡献
2
兑换币
3
注册时间
2016-10-23
在线时间
0 小时
毕业学校
重庆大学
5#
发表于 2016-10-23 11:33:30 | 只看该作者
程序没问题
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-25 16:00 , Processed in 0.066422 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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