智能车制作

标题: 求助!关于信号采集 [打印本页]

作者: RT_holmes    时间: 2013-4-24 22:33
标题: 求助!关于信号采集
你好...我是今年参加电磁组比赛的选手 我们现在遇到了一个问题
就是智能车在传感器接收信号的过程中,在某个范围能反应正常 当传感器接收的值小于一定量时 芯片接受到的AD量却锁定在一个比较大的值上不在变化..这是为什么呢?
传感器调试程序见下:(会不会是AD初始化的问题?)
#include <hidef.h>               /* common defines and macros */
#include "derivative.h"          /* derivative-specific definitions */
#include <mc9s12xs128.h>
#define uchar unsigned char
#define uint unsigned int
#define word short int
////////////////////          AD 模 块 初 始 化                 ///////////////
void ATD0_init(void)
{
ATD0DIEN=0x00;
ATD0CTL1=0x00;
ATD0CTL2=0x40;
ATD0CTL3=0xb0;
ATD0CTL4=0x09;
ATD0CTL5=0x00;
}
/////////////////        AD     取      值              /////////////////////
uint Get_AD_data(uchar A)
{
uint  a[6],i,j,temp;
uint  sum=0;

ATD0CTL5=0x00+A;               //通道A转换6次,结果存入ATD结果寄存器0-5
while(!ATD0STAT0_SCF);
a[0]=ATD0DR0L;
a[1]=ATD0DR1L;
a[2]=ATD0DR2L;
a[3]=ATD0DR3L;
a[4]=ATD0DR4L;
a[5]=ATD0DR5L;

for(i=0;i<5;i++)               //冒泡排序
{
  for(j=0;j<5-i;j++)
  {
   if(a[j]>a[j+1])
   {
    temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp;
   }
  }
}

sum=(a[1]+a[2]+a[3]+a[4])>>2;  //去掉最大、最小值,其余取平均
return sum;
}
main(){
ATD0_init();
for(;;){
  DDRB=0XFF;
PORTB=Get_AD_data(1);           //传感器标号为2到6(从左到右)
}
}


作者: RT_holmes    时间: 2013-4-25 21:25
再次顶一下...求助!




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