⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 手创科技摄像头信号采集程序(可行).txt

📁 摄像头信号处理板资料
💻 TXT
字号:
#include <hidef.h>      
#include <MC9S12XS128.h>
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

unsigned  short int    chesudu;
 
 /*手创科技摄像头信号采集程序*/

//-淘宝店:http://sochange.taobao.com/-----------

//客服联系人:刘生:15812442294    技术联系人:廖生:15920998230

//欢迎联系技术qq:974205767(因工作繁忙,一般晚上在线)

//采集到的数据在二维数组ta[lie][hang_end]里;


//接口定义: 行同步接PT2  场同步接PT1 信号线是接A0                                                                          

//------------------------------------------------
  
  #define lie_end  260
  #define hang_end  100
  #define lie  32//51      

  #define delay(num)   \
  { \
     unsigned int i,j; \
    for(i=0;i<num;i++) \
       for(j=0;j<48;j++); \
  } 

  unsigned char c_lie=0,g_lie=0;
  unsigned int lie_count=0,hang_count=0;
   
  unsigned char ta[lie][hang_end];
  unsigned int get_n[]={  16,29,41,52,62,71,79,86,92,98,
                         103,108,112,116,120,124,128,132,135,138,
                         141,144,147,150,153,156,159,162,165,168,
                         170,172,174,176,178,180,182,184,186,188,
                         190,192,194,196,198,200,202,204,206,208,
                         210,211,212,242,243,245,246,247,248,249,250};


#define uchar unsigned char 
#define uint unsigned int; 

void chaopin(void);         
void TIM_init(void);
void shijian(void);
void atd_init(void);             
void pwm_init(void);               
         

        
void main(void) 
{     
   
DDRA=0X00;
DDRJ=0X02;
DDRK=0X30;
PTJ_PTJ1=1;//RS 0输入指令 1输入数据
PORTK_PK5=1; //R/W  0向lcd输入指令或数据、1从lcd读取数据
PORTK_PK4=1; //E 使能信号  1读取信息  1到0的下降沿执行指令
 

   
   DisableInterrupts;                 
   {
    

                     
    chaopin();             
    atd_init();                      
    TIM_init();//计数器函数初始化   
    shijian();
    pwm_init();
      delay(900) ;            
      EnableInterrupts; 
    
     {
      unsigned  int e,w;
       for(e=1;e<6;e++) 
        for(w=0;w<10;w++);
   
            
    }
   }
    
  
for(;;) 
  {

    DDRE=0XFF;  
     DDRM=0XFF; 
     
     PORTE_PE4=0;
     PTM_PTM3=0;
     PTM_PTM4=1;  
     PTM_PTM5=0;
     {
      unsigned  int e,w;
       for(e=1;e<60000;e++) 
        for(w=0;w<100;w++);
     
            
    }
  
    PORTE_PE4=1;
       PTM_PTM3=1;
     PTM_PTM4=0;  
     PTM_PTM5=1;
           
     {
      unsigned  int e,w;
       for(e=1;e<60000;e++) 
        for(w=0;w<100;w++);
      
            
    }


  
  }
   
   }
   
  

   
 
 void chaopin(void)
{  
    CLKSEL=0X00;   
    PLLCTL_PLLON=1;   
    SYNR =0xc0 | 0x07;                        
    REFDV=0xc0 | 0x01; 
    POSTDIV=0x00;       
    _asm(nop);          
    _asm(nop);
    _asm(nop);
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   
    CLKSEL_PLLSEL =1;                    
}
void atd_init(void)
{   
   ATD0CTL1=0x00;   
        ATD0CTL2=0X40;  //禁止中断 转换后自动清除寄存器 
        ATD0CTL3=0X88;  //没有断点  没有FIFO 通道0开始 单通道 继续转换右对齐 转换序列1
        ATD0CTL4=0X00;    //4周期,64/2,最快
        ATD0CTL5=0X30;  // 连续转换 多通道转换 通道AN0开始
       ATD0DIEN=0x00;   //相应的数字信号输入禁止

   
} 
void TIM_init(void)
{   
  PACTL=0X50;
  PACNT=0X0000; 
  
    TIOS =0x00;//定时器通道0,1 为输入捕捉 
    TSCR1=0x80;//定时器使能 
    TCTL4=0x18;//通道 1 捕捉下降沿通道 2 捕捉上升沿 
    TIE=0x06;  //通道 1,2 中断使能 
    TFLG1=0xFF;//清中断标志位
      
}
void shijian(void) {
   PITCFLMT_PITE=0;       
   PITCE_PCE0=1;          
   PITLD0=9999;  
   PITMTLD0=5;      
   PITMUX=0X00;
   PITINTE_PINTE0=1;     
   PITCFLMT_PITE=1; 
   
                   
}
void pwm_init(void)
{
  
      
 PWMPRCLK=0X33;
 
 PWMSCLA=0x04;        
 PWMSCLB=0x04;
 
 PWMCLK=0x28;    
 PWMPOL=0xFF;   
 
 PWMCAE=0xC3;   
 PWMCTL=0xF0;   
 
 PWMDTY67=5200;//you5200 // 6410zuo  660 5860
 PWMPER67=40000;
 
 PWMPER45=1000; 
 PWMDTY45=0; 
 PWMPER23=1000;
 PWMDTY23=0;
 
 PWMDTY01=5800;//you5200 // 6410zuo  660 5860
 PWMPER01=40000;
                                                         
      PWME_PWME7=1;
      
      PWME_PWME5=1;
      PWME_PWME3=1;
      
      PWME_PWME1=1;
      
}
      

//---------------------------------  

//=======图像采集中断函数,已经完全可以采集图像的=========

 #pragma CODE_SEG NON_BANKED
 void interrupt 10 IC2ISR(void) { //场中断
  
     TFLG1_C2F=1;
   
  if(lie_count==get_n[c_lie]) {  //定距采集图像的判断条件
    delay(1);   //黑线中心矫正,确保不采集到消隐信号

    for(hang_count=0;hang_count<=hang_end;hang_count++){  //读取一行的数据
       
     
      ta[c_lie][hang_count]=PORTA_PA0; //采集数据的接口
   
      
      
    }
     
   c_lie++; //二维数组行自加
  }
  lie_count++; //摄像头行自加

}
  

void interrupt 9 IC1ISR(void){ //场中断,各数据清零              
   TFLG1_C1F=1;
   hang_count=0;
   lie_count=0;
   c_lie=0;   
   }  

void interrupt 66 PIT0Interrupt(void) //测速的中断程序
{
   chesudu=PACNT; //车速度值
    
   PITTF_PTF0=1;
    PACNT=0X0000; 

}   
#pragma CODE_SEG DEFAULT 
//接脚是行同步接pt2  场同步接pt1 

//如果数组ta[c_lie][hang_count]没有图像,请检查接线的问题,以及接口是否按我们所说的接口。

//感谢你对手创科技的支持和信任,我们将不断的努力争取做得更好。

//如果有什么问题,欢迎咨询我们的技术人员。在程序首段有我们的联系方式。

//衷心祝愿我们的客户取得好的成绩! 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -