智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1209|回复: 0
打印 上一主题 下一主题

小车程序

[复制链接]

9

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
566
QQ
威望
301
贡献
203
兑换币
0
注册时间
2010-4-29
在线时间
31 小时
跳转到指定楼层
1#
发表于 2010-4-29 20:23:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <AT89X55.H>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
                                //****************延时函数 1ms*******************************//
void delay(unsigned int ms)
{
        unsigned char i;
        while(ms--)
                {
                        for(i=0;i<125;i++);
                }       
}       

uchar t1=63,ts1=63;
bit  n1=1;n2=1;
sbit p10=P2^3;
sbit p11=P2^2;
uint gg,gd,dg,dd,zgg,zgd,zdg,zdd;


//******************中断程序1***********用于控制舵机偏转角度**************周期20ms**************//
void timer1() interrupt 1 using 0                                                          //中断1  T0溢出中断
{
n1=!n1;
if(n1==0)
{
   p10=0;
      TH0=dg;
      TL0=dd;
}
else
{
   p10=1;
      TH0=gg;
      TL0=gd;
}         
}
//*******************中断程序2********用于控制电机转速********************//
void timer2() interrupt 3 using 3                                          //中断3  T1溢出中断,使用工作组3
{
n2=!n2;
if(n2==0)
{
      p11=0;
      TH1=zdg;
      TL1=zdd;
}
else
{
      p11=1;
      TH1=zgg;
      TL1=zgd;
}         
}

//&&&&&&&&&&&&&&&&&&&& (一)此段子函数对舵机方向进行操作&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//





//*********************左转90度***********高低占空比为2.5ms:17.5ms**************************//
void zz90()
{
        gg=0xf6;
                gd=0x3c;
                dg=0xbb;
                dd=0xa4;
                TR0=1;
       
}
//*********************左转45度***********高低占空比为2ms:18ms**************************//
void zz45()
{
        gg=0xF8;
                gd=0x30;
                dg=0xB9;
                dd=0xB0;
                TR0=1;
       
}
//*********************左转20度***********高低占空比为1.8ms:18.2ms**************************//
void zz20()
{
        gg=0xf8;
                gd=0xf8;
                dg=0xB8;
                dd=0xe8;
                TR0=1;
               
}
//*********************右转90度***********高低占空比为0.5ms:19.5ms**************************//
void yz90()
{
        gg=0xfd;
                gd=0x44;
                dg=0xb4;
                dd=0x9c;
                TR0=1;
                delay(2);
}
//*********************右转45度***********高低占空比为1ms:19ms**************************//
void yz45()
{
        gg=0xfa;
                gd=0xEC;
                dg=0xb6;
                dd=0xF4;
        TR0=1;
               
}
//*********************右转20度***********高低占空比为1.3ms:18.7ms**************************//
void yz20()
{
        gg=0xfa;
                gd=0xec;
                dg=0xb6;
                dd=0xf4;
        TR0=1;
               
}
//********************方向复位***********高低占空比为1.7ms:18.3ms**************************//
void fw()
{
        gg=0xf9;
                gd=0x5C;
                dg=0xB8;
                dd=0x84;
                TR0=1;
               
}



//&&&&&&&&&&&&&&&&&&&&&& (二)此段子函数对主电机进行操作&&&&&&&&&&&&&&&&&&&&&&&&&&&&//

void qj()               //前进
{       P2_0=12_1=0;
        zgg=0x01;
                zgd=0x01;
                zdg=0x0e;
                zdd=0x0e;
                TR1=1;
       
}
void kqj()              //快速前进
{       P2_0=1;P2_1=0;   
        zgg=0xe0;
                zgd=0xc0;
                zdg=0xf8;
                zdd=0x30;
                TR1=1;
               
}
void ht()                //后退
{       P2_0=0;P2_1=1;      
        zgg=0xe0;
                zgd=0xc0;
                zdg=0xf8;
                zdd=0x30;
                TR1=1;
       
}
void tj()
{
  P2_0=0;P2_1=0;delay(10);
}
          


//&&&&&&&&&&&&&&&&&&&&&&&&&&(三)函数主体&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//


void main(void)                                                                          
{                                                                                                   
int m,a[8];                                                                                  
P0=0XFF;P1=0X00;P2=0X00;P3=0X00;                                   //
TMOD=0x11;                                                                                   //
ET0=1;                                                                                          //
ET1=1;                                                                                          // 端口初始化
EA=1;                                                                                          //
TR0=0;                                                                                          //
TR1=0;                                                                                          //
p10=1;                                                                                       
                                                                                               

//**************************循迹部分**************************//
while(1)               
{
                                   //扫描端口状态........
//P0_0==0  黑道          ..........P0_6==0黑道


//直走
if(P0_3==0)
{  
     fw();kqj();TR0=1;TR1=0;
}
//跑飞
else if(P0_0==0&&P0_1==0&&P0_2==0&&P0_3==0&&P0_4==0&&P0_5==0&&P0_6==0&&P0_7==0)
     {
      qj();TR0=1;TR1=0;
      }
//右转
else if(P0_4==0)
     {
   qj();yz20();TR0=1;TR1=0;
      }
else if(P0_5==0)
   {
   qj();yz45();TR0=1;TR1=0;
    }
else if(P0_6==0)
     {
    qj();yz90();TR0=1;TR1=0;
     }  
//左转
else if(P0_2==0)
     {
    qj();zz20();TR0=1;TR1=0;
      }
else if(P0_1==0)
     {
    qj();zz45();TR0=1;TR1=0;
      }
else if(P0_0==0)
     {
    qj();zz90();TR0=1;TR1=0;
      }  
else delay(2);
}

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

本版积分规则

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

GMT+8, 2024-9-20 17:59 , Processed in 0.040730 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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