飞思卡尔摄像头组西部赛区一等奖程序.docx

上传人:b****2 文档编号:893086 上传时间:2023-04-30 格式:DOCX 页数:61 大小:23.91KB
下载 相关 举报
飞思卡尔摄像头组西部赛区一等奖程序.docx_第1页
第1页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第2页
第2页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第3页
第3页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第4页
第4页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第5页
第5页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第6页
第6页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第7页
第7页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第8页
第8页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第9页
第9页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第10页
第10页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第11页
第11页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第12页
第12页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第13页
第13页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第14页
第14页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第15页
第15页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第16页
第16页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第17页
第17页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第18页
第18页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第19页
第19页 / 共61页
飞思卡尔摄像头组西部赛区一等奖程序.docx_第20页
第20页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

飞思卡尔摄像头组西部赛区一等奖程序.docx

《飞思卡尔摄像头组西部赛区一等奖程序.docx》由会员分享,可在线阅读,更多相关《飞思卡尔摄像头组西部赛区一等奖程序.docx(61页珍藏版)》请在冰点文库上搜索。

飞思卡尔摄像头组西部赛区一等奖程序.docx

飞思卡尔摄像头组西部赛区一等奖程序

#include/*commondefinesandmacros*/

#include/*derivativeinformation*/

#include

#include"sys_init.h"

#include"uart.h"

#include"SCCB.h"

#pragmaLINK_INFODERIVATIVE"mc9s12xs128"

/******************************************************************************

Êý¾ÝÀàÐͶ¨Òå¼°È«¾Ö±äÁ¿³õʼ»¯

******************************************************************************/

#defineINT8Uunsignedchar

#defineINT8Ssignedchar

#defineINT16Uunsignedshort

#defineINT16Ssignedshort

#defineINT32Uunsignedlong

#defineINT32Ssignedlong

voidrow_deal(void);

voidpoopctl(void);

voidPDCalc(void);

voidput01(void);

voidputdark(void);

voidgetadd(void);

voidspeedcontrol(void);

voiddelayms(intms);

voidgetrowend(void);

voidgetzhidao(void);

INT16UCountThreshold(void);

#definecolumn_max100

#definerow_max50

//#definemiddle23300

//#definemaxleft2300

//#definemaxright4000

/*#defineadd30

#definewan270

#definezhi450//245*/

//#defineruwan20

//#definePUT_01//put01

//ͼÏñ´¦Àí±äÁ¿

#defineBUFF_ADDR0x2500

INT8Uleftadd=25,rightadd=25;

INT16Sfazhi=0,max1=0,min1=0,middle=0,maxdifference,maxnum,maxnum2,maxdifference2,mindifference3,minnum,mindifference,heixian,minnum2;

INT8Ucmos[row_max][column_max]@BUFF_ADDR;

INT16Sboundary_left,boundary_right,value_left,value_right,left_spare,right_spare;

INT16Srow_i=0,row_counter=0,flag=1,speed_flag=0;

INT16Si,j,k=0,a;

INT16Sfield_sum=0,break_sum=0,row_middle[row_max];

//¶æ»ú¿ØÖƱäÁ¿

INT16Slastpart1_sum=0,part1_sum=0,lastpart2_sum=0,part2_sum=0,sum_m=0,field_lost=0;

INT16Ssum_m4=0,lastline1,lastline2,preline,nextline1,nextline2;//ÐÐÓëÐÐÖ®¼äµÄ²îÖµ

INT16Upoop=7500,poop_back=7500;

INT16Sxiaos,xiaos1,xiaos2,xiaos3,xiaos4,xiaos5,xiaos6,das;

INT16SLastsum1,Prevsum1,dsum1,Lastsum2,Prevsum2,dsum2,Lastsum3,Prevsum3,dsum3,Proportion1=3,Derivative1=4,Proportion2=2,Derivative2=2,Proportion3=5,Derivative3=40;

INT32Umiddle2,maxleft,maxright;

//µç»ú¿ØÖƱäÁ¿

INT16Sii=0,gg=0,stopnum=0,num=0,hh=0,bb=0,dd=850;

INT16Swan,zhi,man,a1,a2,speed,lastspeed;

//µÃµ½Ò»·ùͼÏñµÄ×îºóµÄÒ»¸öÓÐЧÐÐ

INT16Sfazhi1=0,maxdifference1,maxnum1,maxnum21,maxdifference21,mindifference31,minnum1,mindifference1,heixian1,minnum21;

INT16Sboundary_left1,boundary_right1,value_left1,value_right1,left_spare1,right_spare1;

INT16Si1,j1,k1=0,sum_m1,lost_flag1,field_lost1,rowend,rowend1,rowend2,rowend3,rowend4;

INT16Sbreak_sum1=0,row_middle1[row_max];

INT16Smax,min,maxnum11,maxnum3,minnum11,slope,x,minnum3,ruwan;

unsignedcharTempData[column_max];

constunsignedcharsegcode[]={//¹²Òõ¼«PBisoutputsegacodeportPM0--DS1PM1--DS2

0x3F,//0

0x06,//1

0x5B,//2

0x4F,//3

0x66,//4

0x6D,//5

0x7D,//6

0x07,//7

0x7F,//8

0x6F,//9

0x77,//A

0x7C,//B

0x39,//C

0x5E,//D

0x79,//E

0x71,//F

0x80//dot

};

chartxtbuf[50]="";

/*******************¿ª¹ØµÄÑ¡Ôñ*****************/

#pragmaCODE_SEGNON_BANKED,

voidinterrupt24PJI(void)

{

INT16Swan1,zhi1,zhi2;

PIFJ=0Xff;

PIEJ=0X00;

a++;

if(a>10)

a=0;

switch(a)

{

case0:

wan1=260,zhi1=390,zhi2=400,dd=850,bb=17,a1=35,a2=30,middle2=3975,maxleft=middle2-750,maxright=middle2+750,PORTB=PORTB=segcode[0];break;

case1:

wan1=280,zhi1=300,zhi2=350,dd=850,bb=17,a1=30,a2=28,middle2=3975,maxleft=middle2-690,maxright=middle2+720,PORTB=PORTB=segcode[1];break;

case2:

wan1=300,zhi1=310,zhi2=390,dd=850,bb=25,a1=30,a2=28,middle2=3975,maxleft=middle2-700,maxright=middle2+750,PORTB=PORTB=segcode[2];break;

case3:

wan1=320,zhi1=330,zhi2=400,dd=850,bb=25,a1=30,a2=28,middle2=3975,maxleft=middle2-700,maxright=middle2+750,PORTB=PORTB=segcode[3];break;

case4:

wan1=330,zhi1=350,zhi2=420,dd=850,bb=25,a1=30,a2=28,middle2=3975,maxleft=middle2-700,maxright=middle2+750,PORTB=PORTB=segcode[4];break;

case5:

wan1=340,zhi1=360,zhi2=420,dd=850,bb=25,a1=30,a2=28,middle2=3975,maxleft=middle2-700,maxright=middle2+750,PORTB=PORTB=segcode[5];break;

case6:

wan1=350,zhi1=370,zhi2=440,dd=850,bb=25,a1=30,a2=28,middle2=3975,maxleft=middle2-700,maxright=middle2+750,PORTB=PORTB=segcode[6];break;

case7:

wan1=280,zhi1=300,zhi2=350,dd=1800,bb=25,a1=30,a2=28,middle2=3975,maxleft=middle2-700,maxright=middle2+750,PORTB=PORTB=segcode[7];break;

case8:

wan1=300,zhi1=330,zhi2=410,dd=1800,bb=25,a1=30,a2=28,middle2=3975,maxleft=middle2-700,maxright=middle2+750,PORTB=PORTB=segcode[8];break;

case9:

wan1=310,zhi1=340,zhi2=420,dd=1800,bb=25,a1=30,a2=28,middle2=3975,maxleft=middle2-700,maxright=middle2+750,PORTB=PORTB=segcode[9];break;

case10:

wan1=350,zhi1=370,zhi2=440,dd=1800,bb=25,a1=30,a2=28,middle2=3975,maxleft=middle2-700,maxright=middle2+750,PORTB=PORTB=segcode[10];break;

}

PIEJ=0Xff;

delayms(30000);

delayms(30000);

//delayms(30000);

//delayms(30000);

wan=wan1;

zhi=zhi1;

man=zhi2;

}

/*******************¿ª¹ØµÄÑ¡Ôñ*****************/

/************************************³¬Æµ*****************************/

voiddelayms(intms)//40MHz--1ms

{

intii,jj;

if(ms<1)ms=1;

for(ii=0;ii

for(jj=0;jj<0xff;jj++);

}

/************************Ö÷º¯Êý**************************/

unsignedchartemp_reg;

voidmain(void)

{

DisableInterrupts;

//=======ÉèÖüĴæÆ÷Çø========================================

SetBusCLK_16M();

PUCR_PUPEE=1;//PE¿ÚÉÏÀ

SCL_DR=OUT;//³õʼsccbÊä³ö

SDA_DR=OUT;

I2cByteWrite(ov7620_addr,0X2D,0xC1);//193QVGA60FRAME/S

I2cByteWrite(ov7620_addr,0X14,0x24);//

//==============================================

SetBusCLK_40M();//80MHz

vIOPortInit();

//for(i=0;i<40;i++)

SCI_Init();

vinterruptsinit();

PWM_Init();

flag=1;

row_i=0;

row_counter=0;

value_left=fazhi;

value_right=fazhi;

putstr("videotest\r\n");

//key_set();

//PORTB=0X00;

delayms(10);

EnableInterrupts;

for(;;)

{

}/*waitforever*/

/*pleasemakesurethatyouneverleavethisfunction*/

}

//declarefunctionandvariables

//externvoidgetline(void);

//externvoidtempdata_to_arry(void);

externunsignedcharbuff[1][column_max];

externvoidcaptureline(void);

/************************ͼÏñ»ñµÃ************************/

#pragmaCODE_SEG__NEAR_SEGNON_BANKED

voidinterrupt8Port0_interrupt(void)

{

TFLG1_C0F=1;//Çå³ýÐÐÖжϱêÖ¾

if(row_counter>40&&row_counter<=140&&row_counter%5==0)//20

{

captureline();

row_i++;

}

elseif(row_counter>140&&row_counter<=200&&row_counter%4==0)//15

{

captureline();

row_i++;

}

elseif(row_counter>200&&row_counter<=230&&row_counter%2==0)//15

{

captureline();

row_i++;

}

/*elseif(row_counter>177&&row_counter<=230&&row_counter%5==0)//10

{

captureline();

row_i++;

}*/

elseif(row_counter>230)//×î¶à242ÐÐelseif(row_counter>=241)

{

TCTL4=0X08;

//putdark();//////////////////////////////

#ifdefPUT_01

put01();////////////////////////////

#endif

row_deal();

poopctl();

//getadd();

getrowend();

getzhidao();

speedcontrol();

//speed_setblur();

//PIDCalc();

}

row_counter++;

}

#pragmaCODE_SEGDEFAULT

/***************************³¡Öжϴ¦Àí******************************************/

#pragmaCODE_SEG__NEAR_SEGNON_BANKED//³¡ÖжÏ

voidinterrupt9Port1_interrupt(void)

{

introw_sum=0;

TFLG1_C1F=1;

if(flag==1)

{

TCTL4=0X09;

flag=0;

}

else

{

for(i=48;i>row_i;i--)

row_sum+=row_middle[i];

if(row_sum<10)

PWMDTY01=poop_back;

poop_back=poop;

field_sum++;

//break_sum=0;

row_i=0;

row_counter=0;

TCTL4=0X09;//¿ªÆôÐÐÖжÏ

}

}

#pragmaCODE_SEGDEFAULT

voidrow_deal(void)

{

intjj;

charlost_flag=0,tri_flag=0;

break_sum=0;

sum_m4=0;

sum_m=0;

part1_sum=0;

part2_sum=0;

fazhi=CountThreshold();

value_left=fazhi+4;

value_right=fazhi;

for(j=0;j<20;j++)//»ù×¼Ïß²éÕÒ

{

for(k=1;k<98;k++)

{

if(cmos[j][k]<20||cmos[j][k]>250)

cmos[j][k]=(cmos[j][k-1]+cmos[j][k+1])>>1;

}

maxdifference=cmos[j][2]-cmos[j][0];

mindifference3=cmos[j][2]-cmos[j][0];

for(k=1;k<98;k++)

{

maxdifference2=cmos[j][k+2]-cmos[j][k];

maxdifference=(maxdifference>maxdifference2)?

maxdifference:

maxdifference2;

maxnum=(maxdifference>maxdifference2)?

maxnum2:

k;

maxnum2=maxnum;

mindifference3=(mindifference3

mindifference3:

maxdifference2;

minnum=(mindifference3

minnum2:

k;

minnum2=minnum;

}

if(cmos[j][minnum-1]>fazhi&&cmos[j][minnum-2]>fazhi&&cmos[j][minnum-3]>fazhi&&cmos[j][maxnum+1]>fazhi&&cmos[j][maxnum+2]>fazhi&&cmos[j][maxnum+3]>fazhi)

heixian=1;

else

heixian=0;

if((maxnum-minnum>1)&&(maxnum-minnum)<9)

{

boundary_left=minnum2;

boundary_right=maxnum2;

row_middle[j]=(boundary_right+boundary_left)>>1;

break;

}

else

{//·ÀÖ¹Óкڵã»òÕßÊÇÖÜΧ»·¾³µÄÎÛȾ

row_middle[j]=50;

lost_flag++;

}

if(lost_flag==7)//ÅжÏÊÇ·ñÊdzµÕýÆ«³öÈüµÀ

{

field_lost=1;

//PORTB=segcode[4];

return;

}

sum_m+=(row_middle[j]-50);//¼ÆË㳵ƫ³öÖÐÐÄÏßµÄ×ܵÄÊýÁ¿

}

//==================================================================================================

for(i=j+1;i<50;i++)

{

left_spare=boundary_left;

right_spare=boundary_right;

if(cmos[i][boundary_left]

{

k=8;

while(k--&&boundary_left-2>=0)

{

if(cmos[i][boundary_left-1]>=value_left&&cmos[i][boundary_left-2]>=value_left)

break;

boundary_left--;

}

if(k==0)

boundary_left=left_spare;

elseif(boundary_left-2<0)

boundary_left=0;

else

value_left=(cmos[i][boundary_left-2]+cmos[i][boundary_left-1]+cmos[i][boundary_left]+cmos[i][boundary_left+1])>>2;

}//==============================

elseif(cmos[i][boundary_left]>value_left)

{

k=6;

while(k--&&boundary_left+2

{

if(cmos[i][boundary_left+1]<=value_left&&cmos[i][boundary_left+2]<=value_left)

break;

bou

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2