发新帖本帖赏金 40.00元(功能说明)我要提问
返回列表
打印

【智能小车】+辰辰未来星 12/1更新

[复制链接]
1797|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 strong161 于 2015-12-2 17:41 编辑

说说内容吧,车放家里有段时间了,一直没有特别的去玩过,这反正坛子里有活动,那就趁这个机会玩玩吧。硬件:有机玻璃车架+两个直流小马达+L298N驱动板+速度码盘+51小板+四路红外循迹+超声波+七彩LED+显示液晶+蓝牙。
开发软件:IAR for 8051 9.2
手机控制软件:**再说吧。
整车采用双直电机驱动,提动动力与转向,第三轮采用万向轮作为辅助用。电源准备用双18650,给L298N供电,同时输出5V给主控板及其它系统供电。
两路测速,用于直行,转向时进行精确定位与转向,
4路红外循迹,功能就不说了……
超声波测距与避障,
主控板载喇叭与三色LED用于反馈
另外准备蓝牙用于控制。

三楼更新了一下软件内容,12/1 加入蓝牙控制程序/加入循迹程序


设想得看情况,时间足就是2.2的液晶显示,忙的话就用1602,这个TFT不太好用。
现在超声波是坏的,得再购入,蓝牙还没有选好,确实好后补入,
L298N 板带5V输出,但是由于用的4节AA电池,电压差不够,电机启动的时候有时会导致51会重启,准备换成两节18650,这样电源问题就解决了。

L298N 驱动板

计速码盘

供电系统


主控板与显示1602

红外四路循迹与超声测距系统

三色LED










打赏榜单

21ic小喇叭 打赏了 20.00 元 2016-01-13
理由:期待继续更新哟~~~

21ic小喇叭 打赏了 10.00 元 2015-11-30

相关帖子

沙发
strong161|  楼主 | 2015-11-3 21:23 | 只看该作者
硬件照片备用楼层

使用特权

评论回复
板凳
strong161|  楼主 | 2015-11-3 21:24 | 只看该作者
本帖最后由 strong161 于 2015-12-1 15:48 编辑

完成的代码先发出来吧!
#ifndef _MOVE_H_
#define _MOVE_H_

#include"ioAt89c52.h"
#include"intrinsics.h"

/* P1^0-P1^4为运动电机控制*/
#define left_R { P1 &= 0xfc ; P1 |=0x01; } //左前进
#define left_B { P1 &= 0xfc ; P1 |=0x02; }  //左退
#define right_R { P1 &= 0xf3 ; P1 |=0x08; } //右前进
#define right_B { P1 &= 0xf3 ; P1 |=0x04; }  //右退
#define stop {P1 &= 0xf0;}                  //停止

void Run();    //前进
void Back();    //后退
void Turn_R();  //右转
void Turn_L();  //左转
void Turn(unsigned char a);//循迹线程序

#endif /* _MOVE_H_ */


void Run()         //前进     
{
    left_R;
    right_R;
}


void Back()        //倒车
{
    left_B;
    right_B;
}


void Turn_R()       //右转
{
    left_R;
    right_B;
}


void Turn_L()       //左转
{
    left_B;
    right_R;
}

void Turn(unsigned char a) //8档转向控制
{

    if(0x0f != a)
      {
        switch(a)
         {
         case 0x01: Turn_L();break;
         case 0x03: Turn_L();break;
         case 0x07: Turn_L();break;
         case 0x0B: right_R;break;
         case 0x08: Turn_R();break;
         case 0x0C: Turn_R();break;
         case 0x0D: left_R;break;
         default: Run();break;                     
          }     
      }



#ifndef _DETECT_H_
#define _DETECT_H_

#include"ioAt89c52.h"
#include"intrinsics.h"


/*使用P3.4-P3.5作为计数器输入口*/        
void Count_init(); //计数器初始化
void Count_start(); //计数器开始计数



unsigned char mapan_L;   /*左码盘计数量*/
unsigned char mapan_R;   /*右码盘计数量*/


/*P0.1-P0.4作红外输入口*/
void Scan_line(unsigned char );

#endif                    /* _DETECT_H_ */

#include"detect.h"

/*count init*/

void Count_init()
{      
        mapan_L=0;               /*码盘数量初始化*/
        mapan_R=0;

        /*count0*/
        TMOD &= 0xF0;                /* Timer 0 mode 1 counter with software gate */
        TMOD |= 0x05;                /* GATE0=0; C/T0#=1; M10=0; M00=1; */                                    
        TH0 = 0x00;                /* init values */
        TL0 = 0x00;               
        IE |= 0x02;             /*ET0=1 enable timer0 interrupt*/

        /*count1*/
        TMOD &= 0x0F;           /* Timer 1 mode 1 counter with software gate */
        TMOD |= 0x50;           /* GATE1=0; C/T1#=1; M11=0; M01=1; */
        TH1 = 0x00;                /* init values */
        TL1 = 0x00;
        IE |= 0x04;             /*ET1=1 enable timer0 interrupt*/           
}

void Count_start() /*count start*/
{
        TCON |= 0x10;                   /*TR0=1 timer0 run */
        TCON |= 0x40;                   /*TR1=1 timer1 run */

        IE |= 0x80;                     /*EA=1 enable interrupts */
}

/*interrupt Count0*/
#pragma vector= timer0
__interrupt void Count0 (void)
{
        TCON &= ~0x20;                 /*TF0 = 0 reset  interrupt flag (already done by hardware)*/
        mapan_L++;                     /*do** when interrupt. */
}

/*interrupt Count1*/
#pragma vector= timer1
__interrupt void Count1 (void)
{
        TCON &= ~0x80;                 /*TF1 = 0 reset  interrupt flag (already done by hardware)*/
        mapan_R++;                     /*do** when interrupt. */
}

#ifndef _CONTROL_H_
#define _CONTROL_H_

#include"ioAt89c52.h"
#include"intrinsics.h"#include"bitdef.h"
#include"move.h"
void Delay100ms();
void bluetooth();
#endif /* _CONTROL_H_ */



/*控制程序*/


//数据定义
unsigned char l_buf[3];//串口接收缓冲
unsigned char l_bufcc;//接收个数索引


//延时
void Delay100ms()                //@11.0592MHz
{
        unsigned char i, j;

        __no_operation();
        __no_operation();
        i = 2;
        j = 15;
        do
        {
                while (--j);
        } while (--i);
}

/************************************************************************/
/*interrupt uart  中断接收3个字节*/
#pragma vector= sio_ri
__interrupt void inst(void)        {  
        if(RI){                         //是否接收中断
                RI=0;
    l_buf[l_bufcc]=SBUF;
                l_bufcc++;
                if(l_bufcc==3) l_bufcc=0;
        }
}   
/************************************************************************/
        void bluetooth(void)
{        

  TMOD |= 0x20;  
  TH1 = 0xFD;                     //11.0592M晶振,9600波特率
  TL1 = 0xFD;
  SCON = 0x50;  
  PCON = 0x00;
  TCON |= 0x40;       //  TR1 = 1;
  IE |= 0x10;         //ES = 1;   
  IE |= 0x80;         //EA = 1;   
        
        while(1){
                switch(l_buf[2]){//比较按键码,进入相应处理
                        case 'A'://前进
                                Run();
                                Delay100ms();
                                break;
                        case 'B'://后退
                                Back();
                                Delay100ms();
                                break;
                        case 'C'://左转
                                Turn_L();
                                Delay100ms();
                                break;
                        case 'D'://右转
                                Turn_R();
                                Delay100ms();
                                break;
                        case 'F'://停止
                                stop;  //停车开**,开**硬件方式没有确定好,待确定补入,准备用3色LED 充满能量后发射的形式体现。
                                break;
                }                        
        }
}





使用特权

评论回复

打赏榜单

21ic小喇叭 打赏了 10.00 元 2015-11-30

地板
strong161|  楼主 | 2015-11-3 21:26 | 只看该作者
更新备用楼层应该差不多够用了!

使用特权

评论回复
5
21ic小喇叭| | 2015-11-4 08:30 | 只看该作者
那这层可以评论了吧:lol

使用特权

评论回复
6
ecoren| | 2015-11-4 16:42 | 只看该作者
携全家老幼关注,

使用特权

评论回复
7
XC456| | 2015-11-5 12:12 | 只看该作者
4节南孚……

使用特权

评论回复
8
strong161|  楼主 | 2015-11-5 13:01 | 只看该作者

准备换掉,电机启动的时候,驱动板的5V输出不稳定,会引起单片机重启。换成两节18650 串,或是6节18650 2并3串。

使用特权

评论回复
9
duhemayi| | 2015-11-5 18:22 | 只看该作者
不错,关注中!

使用特权

评论回复
10
风去| | 2015-11-7 15:09 | 只看该作者
真棒啊

使用特权

评论回复
11
cedar_renjun| | 2015-11-9 12:12 | 只看该作者
帮顶,不错
欢迎一起玩

使用特权

评论回复
12
yjanyygt| | 2015-11-10 09:01 | 只看该作者
感谢楼主分享

使用特权

评论回复
13
strong161|  楼主 | 2015-12-1 15:16 | 只看该作者
:lol更新一下,没有人看!

使用特权

评论回复
发新帖 本帖赏金 40.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

279

帖子

2

粉丝