智能车制作

标题: 高手给我指点迷津 [打印本页]

作者: 芸纤飘羽    时间: 2011-11-12 15:19
标题: 高手给我指点迷津
#define uint  unsigned int
#define uchar unsigned char
#define image_X_limit   84        //pilxe
#define image_Y_limit   48
#define VolPoint        70
//unsigned char tab[]={"0x00;0x03;0x05;0x11;0x33;0xde;0xfe;0xad;0xdd;0x00"};
uint  image_X=0;               //AD
uint  image_Y=0;
uint  Y_FLAG=0;
uint  temp = 0;  
uchar  image[image_Y_limit][image_X_limit]=0;
uchar  line_temp[image_X_limit];
void line_get_AD(void)
    {
                  PORTE_PE2=1;  //AD使能
           
               for(image_X=0;image_X<image_X_limit;image_X++)
        {
          line_temp[image_X]=PORTA;
          image[image_Y][image_X]= line_temp[image_X];  
        }  
        image_Y++;      
    }
void transmit(uchar transmit_data) //SCI 发送
    {
      while(SCI0SR1_TC==0);
      SCI0DRL=transmit_data;  
    }
   
   
void transmit_image(void)  //发送图像到串口
    {
      //uint i,j;
      for(image_Y=0;image_Y<=image_Y_limit;image_Y++)
        {
          for(image_X=0;image_X<=image_X_limit;image_X++)
            {
                if(image[image_Y][image_X]>VolPoint)
                image[image_Y][image_X]=0x00;
                else   image[image_Y][image_X]=0x11;
                transmit(image[image_Y][image_X]);
            }
            
        }
    }
   

void main(void) {
   
    uint i,j;
    EnableInterrupts;
    MCUInit();
  for(;;) {      
     if(temp == 1){
      //if(1){
        transmit_image();
        #if LCD_DEBUG
          LCDClear();
          for(j = 0 ; j < image_X_limit; j++){    //48
            for(i = 0; i < image_Y_limit; i++){   //84
              if(image[i][j]>VolPoint){
                LCDPixel(i, j, PIXEL_OFF);   //该点不显示
              }else{
                LCDPixel(i, j, PIXEL_ON);   //显示该点
              }
            }
          }
            LCDUpdate();
        #endif
        }
        EnableInterrupts;  //允许中断
   
  }
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED  //&Ouml;&cedil;&Ecirc;&frac34;&cedil;&Atilde;&sup3;&Igrave;&ETH;ò&Ocirc;&Uacute;&sup2;&raquo;·&Ouml;&Ograve;&sup3;&Ccedil;&oslash;  行中断采集
void interrupt 24 V_ISR(void)
{
  PIFJ_PIFJ0=1;   // 清楚标志位
  Y_FLAG++;
  if((20<Y_FLAG<310)&&Y_FLAG%6)  //各六行采集
  line_get_AD();
// else temp = 1;  
         
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED   //场中断处理
  
void interrupt 6 H_ISR(void)
{   
    DisableInterrupts;
    Y_FLAG = 0;
    temp = 1;
    image_Y=0;
    image_X=0;
   
    //LCDPlay();
   
}
能采集到数据 发到串口显示 不是设置的00  11  显示的还是乱七八糟的 显示到5110也没有 什么效果要么黑一片 要么不显 是不是我的采集方法不对
求解决!!
作者: 芸纤飘羽    时间: 2011-11-12 15:24
行中断 PJ7   场中断IRQ    补充一下




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