搜索
bottom↓
回复: 15

我刚接触单片机下面这个小车的电路图帮我看看吧

[复制链接]

出0入0汤圆

发表于 2012-5-8 19:14:00 | 显示全部楼层 |阅读模式
忙我看看无线信号接收模块怎么接单片机啊,还有程序可以用吗,我只要简单地前进后退左右转

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-5-8 19:14:53 | 显示全部楼层
程序
#define uint unsigned int
#define uchar unsigned char

void delay(uchar);
/*************位声明函数**************/
sbit in1=P0^1;//控制左边轮子
sbit in2=P0^2;
sbit in3=P0^4;//控制右边轮子
sbit in4=P0^5;
sbit ena=P0^0;//使能左边轮子
sbit enb=P0^3;//使能右边轮子

sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;

uchar pwm1,pwm2,a,b,flag=0;


/*************初始化函数**************/
void init_t0()
{
  TMOD=0X01;
  TH0=(65536-6000)/256;
  TL0=(65536-6000)%256;
  EA=1;
  ET0=1;
  TR0=1;
}


/********前进函数*****/
void qianjin()
{
   in1=0;
   in2=1;
   in3=0;
   in4=1;
   ena=1;
   enb=1;
   a=19;
   while(1)
   {
          if(pwm1==a)
          {
                  ena=0;
                enb=0;
          }
          if(pwm1==20)
          {
                  pwm1=0;
                ena=1;
                enb=1;
       
          }
          while(~P0)
        //                delay(5);
        //                while(~P0)
                        return;
  }
   
}


  /********后退函数*****/
void houtui()
{
   in1=1;
   in2=0;
   in3=1;
   in4=0;
   ena=1;
   enb=1;
   a=19;
   while(1)
   {
          if(pwm1==a)
          {
                  ena=0;
                enb=0;
          }
          if(pwm1==20)
          {
                  pwm1=0;
                ena=1;
                enb=1;
       
          }
          while(~P0)
                //        delay(5);
        //        while(~P0)
                        return;
  }
   
}
/*************控制右转函数**************/
void controlright()
{
        in1=0;
    in2=1;
    in3=0;
    in4=1;
    ena=1;
    enb=1;
          while(1)
          {
                   a=19;b=0;
                  if(pwm1==a)
                  {
                                ena=0;
                  }
                  if(pwm1==20)
                  {
                                  pwm1=0;
                                ena=1;
                  }


                  if(pwm2==b)
                  {
                        enb=0;       
                  }
                  if(pwm2==20)
                         {
                                  pwm2=0;
                                enb=1;
                        }
                        while(~P0)
        //                delay(5);
        //                while(~P0)
                        return;
                }
}


/*************控制左转函数**************/
void controlleft()
{
         in1=0;
     in2=1;
     in3=0;
     in4=1;
     ena=1;
     enb=1;
          while(1)
          {
           a=0;b=19;
          if(pwm1==a)
          {
                        ena=0;
          }
          if(pwm1==20)
          {
                          pwm1=0;
                        ena=1;
          }
          if(pwm2==b)
          {
                  enb=0;       
          }
          if(pwm2==20)
                 {
                          pwm2=0;
                        enb=1;
                }
                while(~P0)
                //        delay(5);
                //        while(~P0)
                        return;
        }
}



/*************主函数**************/
void main()
{
  init_t0();
  while(1)
  {
       
                  if(key1==0)
                          {
                                  delay(5);
                                if(key1==0)
                                {
                             //        while(!key1);
                                //        delay(5);
                                //        while(!key1);
                                        flag=0;
                             }
                         }
       
                  if(key2==0)
                  {
                        delay(5);
                        if(key2==0)
                        {
                        //        while(!key2);
                        //        delay(5);
                        //        while(!key2);
                                  flag=1;
                        }
                  }
       
                  if(key3==0)
                  flag=2;
       
                  if(key4==0)
                  flag=3;
                  switch(flag)
                  {
                          case 0:qianjin();
                                break;
                        case 1:houtui();
                                break;
                        case 2:        controlright();
                                break;
                        case 3: controlleft();
                                break;
                }
        }
}


/*************定时器0中断1工作方式**************/
void timer0()interrupt 1
{
  TH0=(65536-6000)/256;
  TL0=(65536-6000)%256;
  pwm1++;
  pwm2++;
}


void delay(uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

出0入0汤圆

发表于 2012-5-8 19:25:44 | 显示全部楼层
程序如上,但是不是我写的,哈哈

出0入0汤圆

发表于 2012-5-8 19:30:08 | 显示全部楼层
各种毕业设计啊。。。我有现成的,哈哈,要不?卖你~

出0入0汤圆

发表于 2012-5-8 19:33:32 | 显示全部楼层
这个没有用到无线传输吧!至少程序上没有用到的!!!

出0入0汤圆

 楼主| 发表于 2012-5-8 19:47:11 | 显示全部楼层
xinzhi1986 发表于 2012-5-8 19:30
各种毕业设计啊。。。我有现成的,哈哈,要不?卖你~

不是毕业设计哦,我都毕业了,好吧

出0入0汤圆

 楼主| 发表于 2012-5-8 19:49:32 | 显示全部楼层
nanning2011 发表于 2012-5-8 19:33
这个没有用到无线传输吧!至少程序上没有用到的!!!

不是程序上没用到的事,无线接收输出高电平可以控制单片机引脚高低电平

出0入0汤圆

 楼主| 发表于 2012-5-8 19:50:22 | 显示全部楼层
jjj2012 发表于 2012-5-8 19:25
程序如上,但是不是我写的,哈哈

我也知道不是你写的,我就是搞不懂个具体的引脚接线

出0入0汤圆

发表于 2012-5-8 20:05:17 | 显示全部楼层
别用别人的程序了,自己搭好硬件写一下很快的,就这么点功能而已~

出0入0汤圆

发表于 2012-5-8 20:15:19 | 显示全部楼层
只有四个输入,四个输出,然后只要分别接在电机就可以,可以控制两个点击,一边一个刚刚好,要正传就给一个信号,要反转给相反正负电频,两边相互配合就可以了

出0入0汤圆

 楼主| 发表于 2012-5-8 20:30:56 | 显示全部楼层
xinzhi1986 发表于 2012-5-8 20:05
别用别人的程序了,自己搭好硬件写一下很快的,就这么点功能而已~

能请教一下吗,我想加一个无线模块用无线信号驱动单片机输出高低电平控制直流电机,不知道怎么接也不懂程序思路

出0入0汤圆

 楼主| 发表于 2012-5-8 20:31:55 | 显示全部楼层
jjj2012 发表于 2012-5-8 20:15
只有四个输入,四个输出,然后只要分别接在电机就可以,可以控制两个点击,一边一个刚刚好,要正传就给一个 ...

加上无线驱动模块单片机如何控制

出0入0汤圆

发表于 2012-5-8 20:37:37 | 显示全部楼层
你先学一些单片机的基础知识,至少了解IO口是怎么被控制的,再学着编写基础程序,比如点亮LED。
这些学完了,你贴的这个程序能看懂了,再看你的无线模块的说明,应该就知道怎么办了。

出0入0汤圆

发表于 2012-5-8 22:41:31 | 显示全部楼层
单片机采集信息处理之后发到端口上,每次只要控制这样一个流程就好了

出0入0汤圆

发表于 2012-5-8 23:09:38 | 显示全部楼层
无线另外一头放单片机吗?
这样的话两个无线相当于传输通道
自己写个简单协议,就等于按键。。。。
呃,真不知道怎么给你解释。。。
就是你装个无线可以,很多无线串口模块,直接连串口
然后另外一边的无线也连另外一边单片机串口,发控制指令过来就完了~

出0入0汤圆

发表于 2012-5-8 23:11:59 | 显示全部楼层
没有无线传输~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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