智能车制作

标题: 坐等大神就诊。。。上程序。。。 [打印本页]

作者: 1447819118    时间: 2012-4-17 21:23
标题: 坐等大神就诊。。。上程序。。。
#include <hidef.h>            /* common defines and macros */
#include "derivative.h"       /* derivative-specific definitions */
#include "main.h"
int set__speed=0;
char flag=0;
int  laser1=0,laser2=0,laser3=0,laser4=0,laser5=0,i;
unsigned int a;
unsigned int temp;
int  state1;
unsigned char  shuzu[12]={ 0
};
int zuo,you;
const static byte jiguang[6]=
{
0x01,0x02,0x04,0x08,0x10,0x20
};
const static byte duoji[13]=
{
130,140,150,160,170,180,190,120,110,100,90,80,70
};
//*******1ms延时*******//
void delay_ms(unsigned int m)
{
    unsigned int a,b;
    for(a=m;a>0;a--)
        for(b=5340;b>0;b--);
}
//*******1us延时*******//
void delay_us(unsigned int m)
{
    unsigned int a,b;
    for(a=m;a>0;a--)
        for(b=5;b>0;b--);
}

unsigned  int laser(void)
{   
    delay_us(1300);
     
    PORTA=0x15;                             
    laser1=PTIT_PTIT3;
    laser1= ((laser1<<2)|PTIT_PTIT2);
    laser1=((laser1<<2)|PTIT_PTIT1);
   
   
    delay_us(1300);
    PORTA=0x2a;  
    laser2=PTIT_PTIT3;
    laser2= ((laser2<<2)|PTIT_PTIT2);
    laser2=((laser2<<2)|PTIT_PTIT1);
    laser2=(laser2<<1);
   
    //PORTA=0x00;
    delay_us(1300);
    PORTB=0x15;   
    laser3=PTIT_PTIT4;
    laser3= ((laser3<<2)|PTIT_PTIT5);
    laser3=((laser3<<2)|PTIT_PTIT6);
    laser3=(laser3<<6);
   
    delay_us(1300);
    PORTB=0x2a;
    laser4=PTIT_PTIT4;
    laser4= ((laser4<<2)|PTIT_PTIT5);
    laser4=((laser4<<2)|PTIT_PTIT6);
    laser4=(laser4<<7);
   
    //PORTB=0x00;
   
    laser5=laser1|laser2|laser3|laser4;
    return laser5;                                                                                                                 
}
//
//图像处理
void Laser_process(void)
{
      
     temp=laser();
     switch(temp)
     {
        case 0x0fff:state1=0; break;
        case 0x0ffe:state1=1; break;
        case 0x0ffc:state1=2; break;
        case 0x0ff8:state1=3; break;
        case 0x0ff0:state1=4; break;
        case 0x0fe0:state1=5; break;
        case 0x0fc0:state1=6; break;
        case 0x07ff:state1=7; break;
        case 0x03ff:state1=8; break;
        case 0x01ff:state1=9; break;
        case 0x00ff:state1=10; break;
        case 0x007f:state1=11; break;
        case 0x003f:state1=12; break;
      
     }
}
//const static byte sudu1[7]=
//{150,150,120,120,110,100,0};



static byte sudu[17]={0};
void main(void)
{
  SetBusCLK_64M();
  Pwm_DuoJi_B();
  //PIT_init();               //定时中断初始化函数 10MS定时中断设置
  //dir_qianlun(130);
  Pwm_DianJi_A();
  io();
  EnableInterrupts;
  PWMDTY67=130;
  flag=0;
  for(;;)
    {  
       Laser_process();
       PWMDTY67=duoji[state1];
      
  
    }

作者: 1447819118    时间: 2012-4-17 21:27
12个激光。。2对1.。。分4组分时点亮。。。。可是舵机PA口控制的激光1号2号3号4号5号6号中。。1号3号5号激光打到黑线舵机没反应。。。。。
作者: 1447819118    时间: 2012-4-17 21:28
大神。。。。。。
作者: 1447819118    时间: 2012-4-17 21:33
自己顶。。。。
作者: 1447819118    时间: 2012-4-17 22:00
没人吗?
作者: 吉他手    时间: 2012-4-17 22:23
1447819118 发表于 2012-4-17 22:00
没人吗?

其实,你的程序很简洁,看似没有什么问题。
但这是嵌入式系统软件(单片机软件)的一个特点,那就是即使看清楚你的程序,也无法立即说出你的程序究竟是否要问题,因为程序的输入,输出还和你的硬件设计和外部连接有关系。所以这一点不像其他的软件那么容易判断。

求别人,不如求自己,如果现在你有硬件调试工具和软件调试工具,就自行进行调试解决:
(1)先通过万通表和示波器确定是否所有的光电管通路对于黑线都有相应;
(2)通过软件调试工具观察是否所有的光电管在黑线出所采集到的数据都和你的编码方式相同;
(3)跟踪最后舵机赋值输出是否是自己设定的占空比。

如果你的车模的硬软件都是自己同学设计的,对于调试过程就应该想办法自行将解决。你能,你能。

作者: 1447819118    时间: 2012-4-17 22:38
吉他手 发表于 2012-4-17 22:23
其实,你的程序很简洁,看似没有什么问题。
但这是嵌入式系统软件(单片机软件)的一个特点,那就是即使 ...

嗯,,灰常感谢你。。1和3都没问题的。。。就是这个2 不知道
作者: 1447819118    时间: 2012-4-18 11:33
已解决。。。。
作者: 天秤星座    时间: 2012-4-18 11:56
LZ也不说说怎么解决的啊




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2