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

📄 freescale-ccd.txt

📁 菲斯卡尔智能车使用的CCD摄像头程序
💻 TXT
字号:
#include <hidef.h> /* common defines and macros */ 
#include <mc9s12db128.h> /* derivative information */ 
#pragma LINK_INFO DERIVATIVE "mc9s12db128b" 
#include "define.h" 
#include "init.h" 

// variable used in video process 
volatile unsigned char image_data[ROW_MAX][LINE_MAX] ; // data array of picture 
unsigned char black_x[ROW_MAX] ; // 0ne-dimensional array 
unsigned char row ; // x-position of the array 
unsigned char line ; // y-position of the array 
unsigned int row_count ; // row counter 
unsigned char line_sample ; // used to counter in AD 
unsigned char row_image ; 
unsigned char line_temp ; // temperary variable used in data transfer 
unsigned char sample_data[LINE_MAX] ; // used to save one-dimension array got in 
interruption 
// variables below are used in speed measure 
Unsigned char pulse[5] ; // used to save data in PA process 
Unsigned char counter; // temporary counter in Speed detect 
Unsigned char cur_speed; // current speed 

short stand; 
short data; 
unsigned char curve ; // valve used to decide straight or turn 
short Bounds(short data); 
short FuzzyLogic(short stand); 
/*----------------------------------------------------------------------------*\ 
receive_sci 
\*----------------------------------------------------------------------------*/ 
unsigned char receive_sci(void) // receive data through sci 
{ unsigned char sci_data; 
while(SCI0SR1_RDRF!=1); 
sci_data=SCI0DRL; 
return sci_data; 
} 

/*----------------------------------------------------------------------------*\ 
transmit_sci 
\*----------------------------------------------------------------------------*/ 
void transmit_sci(unsigned char transmit_data) // send data through sci 
{ 
while(SCI0SR1_TC!=1); 
while(SCI0SR1_TDRE!=1); 
SCI0DRL=transmit_data; 
} 
/***************************************************************************** 
***/ 
/*----------------------------------------------------------------------------*\ 
abs_sub 
\*----------------------------------------------------------------------------*/ 
unsigned char abs_sub(unsigned char num1, unsigned char num2) 
{ unsigned char difference; 

if(num1>=num2){ 
difference=num1-num2; 
}else{ 
difference=num2-num1; 
} 
return difference; 
} 

void pwm_set(unsigned int dutycycle) 
{ 
PWMDTY1=dutycycle&0x00FF; 
PWMDTY0=dutycycle>>8; 
} 

void get_black_wire(void) // used to extract black wire 
{ unsigned char i; 
for(row=0;row<ROW_MAX;row++){ 
for(line=LINE_MIN;line<LINE_MAX-3;line++){ 
if(image_data[row][line]>image_data[row][line+3]+VALVE){ 

for(i=3;i<10;i++){ 
if(image_data[row][line+i]+VALVE<image_data[row][line+i+3]){ 
black_x[row]=line+i/2+2; 
i=10; 
} 
} 
line=LINE_MAX; 
} else{ 
//black_x[row]=(black_x[row]/45)*78; 
} 
} 
} 
} 

⌨️ 快捷键说明

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