发新帖本帖赏金 50.00元(功能说明)我要提问
12下一页
返回列表
打印

【智能小车】+光棍号

[复制链接]
3399|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yun1091724578 于 2015-11-6 17:58 编辑

刚好赶上最近的光棍节,我的智能小车就叫做光棍号啦,希望可以给自己带来好运!器件昨天到的,表示小喇叭@21ic小喇叭 推荐的淘宝店很给力!目前刚把车模搭好,大家伙儿等待我的持续更新吧!不多说,上图啦! 小车散件

刚搭好的车模:victory:

打赏榜单

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

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

相关帖子

沙发
yun1091724578|  楼主 | 2015-11-6 17:55 | 只看该作者
由于是第一次做小车类的项目,还望大家不吝指教哈

使用特权

评论回复
板凳
benbpig| | 2015-11-6 18:23 | 只看该作者
光棍号……光棍好……楼主,你牛!对自己够狠

使用特权

评论回复
地板
yun1091724578|  楼主 | 2015-11-6 20:04 | 只看该作者
benbpig 发表于 2015-11-6 18:23
光棍号……光棍好……楼主,你牛!对自己够狠

过奖过奖:lol不对自己狠点儿怎么能找到对象呢

使用特权

评论回复
5
ecoren| | 2015-11-7 11:50 | 只看该作者
持续关注,

使用特权

评论回复
6
fengrenjie| | 2015-11-7 15:42 | 只看该作者
好的。期待在光棍节那天,能看到你的更新

使用特权

评论回复
7
yun1091724578|  楼主 | 2015-11-8 10:48 | 只看该作者

谢谢

使用特权

评论回复
8
yun1091724578|  楼主 | 2015-11-8 10:48 | 只看该作者
fengrenjie 发表于 2015-11-7 15:42
好的。期待在光棍节那天,能看到你的更新

嗯呐,一定加快进度!

使用特权

评论回复
9
21ic小喇叭| | 2015-11-9 08:34 | 只看该作者
先祝早日脱光啦,嘿嘿:lol:lol

使用特权

评论回复
10
yun1091724578|  楼主 | 2015-11-9 18:27 | 只看该作者
21ic小喇叭 发表于 2015-11-9 08:34
先祝早日脱光啦,嘿嘿

谢谢小喇叭,不过路漫漫其修远兮啊

使用特权

评论回复
11
yun1091724578|  楼主 | 2015-11-9 18:40 | 只看该作者
让小车动起来,成功第一步!

使用特权

评论回复
12
yun1091724578|  楼主 | 2015-11-9 18:41 | 只看该作者
我是菜鸟,所以相比较大神们直接上手就逊色不少啦,请大家轻喷

使用特权

评论回复
13
yun1091724578|  楼主 | 2015-11-9 18:43 | 只看该作者
刚才好像没传上去,再传一次

使用特权

评论回复
14
yun1091724578|  楼主 | 2015-11-9 18:48 | 只看该作者
本帖最后由 yun1091724578 于 2015-11-9 19:01 编辑

我的小车是51单片机控制L298驱动的四个使能端,分别给它们赋1,0,1,0的值,然后从四个电机接口驱动两个电机转动。一开始用胶棒把电机焊绝缘了,怎么检测都不转,后来一看电机才发现原因,直接用焊锡焊上了。接着又把两个电机接反了,然后小车就一直在原地打转,后来把一个电机的两根线换了一下接口就能正常转动了,那个稳压模块由于是可调的DC-DC电源模块,用不用都无所谓,所以直接没用了。

使用特权

评论回复
15
yun1091724578|  楼主 | 2015-11-9 19:04 | 只看该作者
贴出源程序:
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit in1 = P1^0;                      //IN1逻辑输入端
sbit in2 = P1^1;                  //IN2逻辑输入端
sbit in3 = P1^2;                  //IN3逻辑输入端
sbit in4 = P1^3;                 //IN4逻辑输入端
uchar count = 0;   //定义计数变量
/****************************
//T0初使化
****************************/
void Init_timer()
{
        TH0 = (65535-10)/256;
        TL0 = (65535-10)%256;
        TMOD = 0x01;
        TR0 = 1;
        ET0 = 1;
        EA = 1;
}
/****************************
电机速度调节,speed为速度
值,从0-100可调。
两个电机正转调速 speed值取决
电机速度,当定时器值小于speed
值的时候,电机正转,大于speed
值的时候,电机反转.从而达到
调速的目的
****************************/
void motor_speed_ctl(uchar speed)
{
        if(count<=speed)
        {
                in1 = 1;
                in2 = 0;
                in3 = 1;
                in4 = 0;
        }
        else
        {
                in1 = 0;
                in3 = 0;
        }
}

/****************************
//main()主函数
//大循环
****************************/
void main()
{
        Init_timer();
        while(1)
        {
                motor_speed_ctl(100);  //电机向前行驶,速度可调节,改变括号里的值改变电机速度
        }
}
/****************************
//T0计时中断
****************************/
void Timer0_int()interrupt 1
{
        TH0 = (65535-10)/256;
        TL0 = (65535-10)%256;
        count ++;
        if(count >= 100)
        {
                count = 0;
        }               
}

使用特权

评论回复

打赏榜单

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

16
yun1091724578|  楼主 | 2015-11-9 21:26 | 只看该作者
接下来,就要接超声波模块进行避障功能的探索啦!

使用特权

评论回复
17
yun1091724578|  楼主 | 2015-11-25 19:03 | 只看该作者
好几天没有更新了,今天继续更新!

使用特权

评论回复
18
yun1091724578|  楼主 | 2015-11-25 19:05 | 只看该作者
前几天搞定了超声波测距避障
上gif图


使用特权

评论回复
19
yun1091724578|  楼主 | 2015-11-25 19:07 | 只看该作者
上程序
#include <AT89x51.H>  //器件配置文件
    #include <intrins.h>
    #define  RX  P2_1
    #define  TX  P2_2
    unsigned int  time=0;
    unsigned int  timer=0;
    unsigned char posit=0;
    unsigned long S=0;
    bit      flag =0;
    unsigned char const discode[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};
    unsigned char const positon[3]={ 0xdf,0xef,0xf7};
    unsigned char disbuff[4]    ={ 0,0,0,0,};
    sbit in1=P1^0;
             sbit in2=P1^1;
             sbit in3=P1^2;
             sbit in4=P1^3;
             #define let_go {in1=1;in2=0;in3=1;in4=0;}
             #define let_back {in1=0;in2=1;in3=0;in4=1;}
             #define let_left {in1=0;in2=1;in3=0;in4=0;}
             #define let_right {in1=0;in2=0;in3=0;in4=1;}
/********************************************************/
    void Display(void)     //扫描数码管
{
  if(posit==0)
  {P1=(discode[disbuff[posit]])&0x7f;}
  else
  {P1=discode[disbuff[posit]];}
   P2=positon[posit];
   if(++posit>=3)
   posit=0;
}
/********************************************************/
void delay(unsigned int i)
{
  unsigned char j;
  while(--i)
  {
  for(j=0;j<125;j++);
  }
}
/********************************************************/
    void Conut(void)
{
  time=TH0*256+TL0;
  TH0=0;
  TL0=0;

  S=(time*1.7)/100;     //算出来是CM
  if((S>=700)||flag==1) //超出测量范围显示“-”
  {  
   flag=0;
   disbuff[0]=10;    //“-”
   disbuff[1]=10;    //“-”
   disbuff[2]=10;    //“-”
   let_go;
  }
  else
  {
   disbuff[0]=S%1000/100;
   disbuff[1]=S%1000%100/10;
   disbuff[2]=S%1000%10 %10;
   if((S>10)&&(S<700))
   {   let_go; }
   else
   {
   if(S<10)
   let_back;
   delay(500);
   let_left;
   delay(500);
   let_go;
   }
  }
}
/********************************************************/
     void zd0() interrupt 1    //T0中断用来计数器溢出,超过测距范围
  {
    flag=1;        //中断溢出标志
  }
/********************************************************/
   void  zd3()  interrupt 3    //T1中断用来扫描数码管和计800MS启动模块
  {
  TH1=0xf8;
  TL1=0x30;
  Display();
  timer++;
  if(timer>=400)
  {
   timer=0;
   TX=1;                   //800MS  启动一次模块
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   TX=0;
  }
  }
/*********************************************************/
void  main(  void  )
  {
    let_go;
    TMOD=0x11;     //设T0为方式1,GATE=1;
TH0=0;
TL0=0;         
TH1=0xf8;     //2MS定时
TL1=0x30;
ET0=1;             //允许T0中断
ET1=1;      //允许T1中断
TR1=1;      //开启定时器
EA=1;      //开启总中断
while(1)
{
  while(!RX);  //当RX为零时等待
  TR0=1;       //开启计数
  while(RX);   //当RX为1计数并等待
  TR0=0;    //关闭计数
     Conut();   //计算
}
  }
               

使用特权

评论回复
20
cedar_renjun| | 2015-11-26 12:19 | 只看该作者
这个名字起的,有点那啥啊啊

@21ic小喇叭

使用特权

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

本版积分规则

5

主题

281

帖子

3

粉丝