版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> #include"driver.h"</p><p> #include"data.h"</p><p> #include<avr/io.h></p><p> #include<avr/interrupt.h></p><p> #include
2、<avr/pgmspace.h>//程序放在FLASH區(qū)</p><p> #define LINE_MAX 100 //一行采集100個(gè)點(diǎn)</p><p> //#define COMPARE 0X50//圖像二值化比較值</p><p> unsigned char v,COMPARE;</p&
3、gt;<p> unsigned char Image[LINE_MAX];//一行數(shù)據(jù)存放區(qū)</p><p> unsigned int row; //行號(hào)</p><p> unsigned char finish=0; //行數(shù)據(jù)采集完成</p><p> unsigned
4、char data1,data2; </p><p> unsigned int time=1650 ; //time = 1400 最左邊 time = 2000 最右邊</p><p> unsigned char bit=0,flag1=0,flag2=0;</p><p><b> PID _pid;&l
5、t;/b></p><p> /*--------------------------函數(shù)聲明---------------------*/</p><p> void system_init(); //底層驅(qū)動(dòng)函數(shù)初始化</p><p> unsigned char GetRelMid(unsigned char *p_I
6、mage); //求Image的黑線兩邊界坐標(biāo)</p><p> void start(); //啟動(dòng)函數(shù)</p><p> void tiaozheng(); //速度|比較值調(diào)整</p><p> //void chuli(); //處理函數(shù)</p><p> /*-
7、-------------------------------函數(shù)初始化--------------------------------------*/</p><p> void system_init()</p><p><b> {</b></p><p> Timer1_PWM(); //舵機(jī)驅(qū)動(dòng)初始
8、化</p><p> Timer2_PWM(); //電機(jī)驅(qū)動(dòng)初始化</p><p> Int_Init(); //攝像頭數(shù)據(jù)采集初始化</p><p><b> }</b></p><p> /*-----------------------
9、----求Image的黑線兩邊界坐標(biāo)--------------------------------*/</p><p> unsigned char GetRelMid(unsigned char *p_Image)</p><p><b> {</b></p><p> uint16_t i=0; </p><p&
10、gt; unsigned char center;</p><p> for(i=5;i<LINE_MAX-5;i++)</p><p><b> {</b></p><p> if((i>5)&&(i<=45))//40個(gè)偏轉(zhuǎn)狀態(tài)對(duì)應(yīng)320個(gè)偏轉(zhuǎn)量</p><p><b&
11、gt; {</b></p><p> if(*(p_Image+i-5)>=COMPARE&&*(p_Image+i-4)>=COMPARE&&*(p_Image+i-3)>=COMPARE&&*(p_Image+i-2)<=COMPARE&&*(p_Image+i-1)<=COMPARE)</p&
12、gt;<p><b> {</b></p><p><b> data1=i;</b></p><p><b> flag1=1;</b></p><p><b> continue;</b></p><p><b> }
13、</b></p><p><b> }</b></p><p> if((i>55)&&(i<=95))//40個(gè)偏轉(zhuǎn)狀態(tài)對(duì)應(yīng)320個(gè)偏轉(zhuǎn)量</p><p><b> {</b></p><p> if(*(p_Image+i+1)<=COM
14、PARE&&*(p_Image+i+2)<=COMPARE&&*(p_Image+i+3)>=COMPARE&&*(p_Image+i+4)>=COMPARE&&*(p_Image+i+5)>=COMPARE)</p><p><b> {</b></p><p><b&g
15、t; data2=i;</b></p><p><b> flag2=1;</b></p><p><b> continue;</b></p><p><b> }</b></p><p><b> }</b></p>
16、<p><b> }</b></p><p> if(flag1==1)</p><p><b> {</b></p><p> //Duoji_PWM(1800);</p><p><b> flag1=0;</b></p><
17、;p> center=data1;</p><p><b> }</b></p><p> if(flag2==1)</p><p><b> {</b></p><p> //Duoji_PWM(1400);</p><p><b> fl
18、ag2=0;</b></p><p> center=data2;</p><p><b> }</b></p><p> return center;</p><p><b> }</b></p><p> /*-----------------
19、---------啟動(dòng)函數(shù)-------------------------------------*/</p><p> void start()</p><p><b> {</b></p><p> unsigned int i,j;</p><p> DDRD&=~(1<<DDD4);
20、 //配置按鍵輸入引腳</p><p> PORTD|=(1<<PD4);</p><p><b> while(1)</b></p><p><b> {</b></p><p> if((PIND&(1<<PIND4))==0) &l
21、t;/p><p><b> {</b></p><p> for(i=255;i>0;i--) Image[i]=0; //順便把數(shù)組給初始化了</p><p> if((PIND&(1<<PIND4))==0) </p><p><b> {</b>
22、</p><p> for(i=0;i<2500;i++)</p><p> for(j=0;j<1141;j++);</p><p><b> return ;</b></p><p><b> } </b></p><p><b> }
23、</b></p><p><b> }</b></p><p><b> }</b></p><p> /*--------------------------速度|比較值調(diào)整---------------------------*/</p><p> void tiaozh
24、eng()</p><p><b> {</b></p><p> if((PINB|0xf8)==0xf8)v=65;//000</p><p> if((PINB&0x01)==0x01)v=70;//001</p><p> if((PINB&0x02)==0x02)v=75;//01
25、0</p><p> if((PINB&0x03)==0x03)v=80;//011</p><p> if((PINB&0x04)==0x04)v=85;//100</p><p> if((PINB&0x05)==0x05)v=90;//101</p><p> if((PINB&0x06)=
26、=0x06)v=95;//110</p><p> if((PINB&0x07)==0x07)v=100;//111</p><p> if((PINB|0xe7)==0xe7)COMPARE=0x20;//00</p><p> if((PINB&0x08)==0x08)COMPARE=0x30;//01</p><
27、;p> if((PINB&0x10)==0x10)COMPARE=0x40;//10</p><p> if((PINB&0x18)==0x18)COMPARE=0x50;//11</p><p><b> }</b></p><p> /************************************
28、**********************************/</p><p> /**********************************************************************/</p><p> int main()</p><p><b> { </b></p>
29、<p> volatile char k=0;</p><p> float pid_compare;</p><p> DDRB&=0xe0;</p><p> PORTB|=0x1f;</p><p> DDRC&=0x03;</p><p> DDRC|=0x02;<
30、/p><p> PORTC=0x03;</p><p> PORTC|=0x02;//輸出高電平使能端有效電機(jī)正轉(zhuǎn)</p><p> //PORTC&=0xfd;//輸出低電平使能端無(wú)效電機(jī)停轉(zhuǎn)</p><p> asm("nop");</p><p> asm("nop&
31、quot;);</p><p> start(); //等待按鍵</p><p> system_init();</p><p> sei(); //開(kāi)全局中斷 </p><p>&
32、lt;b> while(1)</b></p><p><b> { </b></p><p> //jiance();</p><p> tiaozheng();</p><p> k=GetRelMid(Image);</p><p> //while(fi
33、nish)</p><p><b> // { </b></p><p> // finish=0;</p><p> if((k>=5)&&(k<=45))</p><p><b> {</b></p><p> pid_com
34、pare=k;</p><p> time=(pid_compare*7+1600);</p><p> if(time>=1700)</p><p><b> {</b></p><p> //Duoji_PWM(time);</p><p> Dianji_PWM(v+10)
35、;</p><p> Duoji_PWM(time);</p><p><b> }</b></p><p> if((time>=1650)&&(time<1700))</p><p><b> {</b></p><p> //Di
36、anji_PWM(90-time/100);</p><p> //Duoji_PWM(time);</p><p> PORTC&=0xfd;</p><p> PORTC|=0x02;</p><p> Dianji_PWM(v+5);</p><p> Duoji_PWM(time);<
37、/p><p><b> }</b></p><p> if((time<1650)&&(time>1600))</p><p><b> {</b></p><p> Dianji_PWM(v-5);</p><p> Duoji_PWM(
38、time);</p><p> //Dianji_PWM(v+time/200);</p><p><b> }</b></p><p><b> } </b></p><p> if((k>=55)&&(k<=95))</p><p>
39、;<b> {</b></p><p> pid_compare=k;</p><p> time=((pid_compare-99)*7+1600);</p><p> if(time<=1500)</p><p><b> {</b></p><p>
40、 //Duoji_PWM(time);</p><p> Dianji_PWM(v+5);</p><p> Duoji_PWM(time);</p><p><b> }</b></p><p> if((time<=1550)&&(time>1500))</p>&
41、lt;p><b> {</b></p><p> //Dianji_PWM(90-time/100);</p><p> //Duoji_PWM(time);</p><p> PORTC&=0xfd;</p><p> PORTC|=0x02;</p><p>
42、 Dianji_PWM(v-5);</p><p> Duoji_PWM(time);</p><p><b> }</b></p><p> if((time>1550)&&(time<1600))</p><p><b> {</b></p>&
43、lt;p> //Dianji_PWM(v+(time+50)/200);</p><p> //Duoji_PWM(time);</p><p> Dianji_PWM(v);</p><p> Duoji_PWM(time);</p><p><b> }</b></p><
44、p><b> }</b></p><p> // } </p><p><b> };</b></p><p><b> }</b></p><p> /*--------------------------VSYNC中斷服務(wù)---
45、---------------------*/</p><p> ISR(INT0_vect)</p><p><b> {</b></p><p><b> row=0;</b></p><p><b> }</b></p><p>
46、/*-------------------------HREF中斷服務(wù)-------------------------*/</p><p> ISR(INT1_vect)</p><p><b> {</b></p><p><b> row++;</b></p><p> if(row=
47、=30)</p><p><b> {</b></p><p> Image[0]=PINA;</p><p> Image[1]=PINA;</p><p> Image[2]=PINA;</p><p> Image[3]=PINA;</p><p> Im
48、age[4]=PINA;</p><p> Image[5]=PINA;</p><p> Image[6]=PINA;</p><p> Image[7]=PINA;</p><p> Image[8]=PINA;</p><p> Image[9]=PINA;</p><p>
49、Image[10]=PINA;</p><p> Image[11]=PINA;</p><p> Image[12]=PINA;</p><p> Image[13]=PINA;</p><p> Image[14]=PINA;</p><p> Image[15]=PINA;</p><
50、;p> Image[16]=PINA;</p><p> Image[17]=PINA;</p><p> Image[18]=PINA;</p><p> Image[19]=PINA;</p><p> Image[20]=PINA;</p><p> Image[21]=PINA;</p&
51、gt;<p> Image[22]=PINA;</p><p> Image[23]=PINA;</p><p> Image[24]=PINA;</p><p> Image[25]=PINA;</p><p> Image[26]=PINA;</p><p> Image[27]=PINA
52、;</p><p> Image[28]=PINA;</p><p> Image[29]=PINA;</p><p> Image[30]=PINA;</p><p> Image[31]=PINA;</p><p> Image[32]=PINA;</p><p> Image[
53、33]=PINA;</p><p> Image[34]=PINA;</p><p> Image[35]=PINA;</p><p> Image[36]=PINA;</p><p> Image[37]=PINA;</p><p> Image[38]=PINA;</p><p>
54、 Image[39]=PINA;</p><p> Image[40]=PINA;</p><p> Image[41]=PINA;</p><p> Image[42]=PINA;</p><p> Image[43]=PINA;</p><p> Image[44]=PINA;</p>&
55、lt;p> Image[45]=PINA;</p><p> Image[46]=PINA;</p><p> Image[47]=PINA;</p><p> Image[48]=PINA;</p><p> Image[49]=PINA;</p><p> Image[50]=PINA;</
56、p><p> Image[51]=PINA;</p><p> Image[52]=PINA;</p><p> Image[53]=PINA;</p><p> Image[54]=PINA;</p><p> Image[55]=PINA;</p><p> Image[56]=PI
57、NA;</p><p> Image[57]=PINA;</p><p> Image[58]=PINA;</p><p> Image[59]=PINA;</p><p> Image[60]=PINA;</p><p> Image[61]=PINA;</p><p> Imag
58、e[62]=PINA;</p><p> Image[63]=PINA;</p><p> Image[64]=PINA;</p><p> Image[65]=PINA;</p><p> Image[66]=PINA;</p><p> Image[67]=PINA;</p><p&g
59、t; Image[68]=PINA;</p><p> Image[69]=PINA;</p><p> Image[70]=PINA;</p><p> Image[71]=PINA;</p><p> Image[72]=PINA;</p><p> Image[73]=PINA;</p>
60、<p> Image[74]=PINA;</p><p> Image[75]=PINA;</p><p> Image[76]=PINA;</p><p> Image[77]=PINA;</p><p> Image[78]=PINA;</p><p> Image[79]=PINA;<
61、;/p><p> Image[80]=PINA;</p><p> Image[81]=PINA;</p><p> Image[82]=PINA;</p><p> Image[83]=PINA;</p><p> Image[84]=PINA;</p><p> Image[85]=
62、PINA;</p><p> Image[86]=PINA;</p><p> Image[87]=PINA;</p><p> Image[88]=PINA;</p><p> Image[89]=PINA;</p><p> Image[90]=PINA;</p><p> Im
63、age[91]=PINA;</p><p> Image[92]=PINA;</p><p> Image[93]=PINA;</p><p> Image[94]=PINA;</p><p> Image[95]=PINA;</p><p> Image[96]=PINA;</p><p
64、> Image[97]=PINA;</p><p> Image[98]=PINA;</p><p> Image[99]=PINA;</p><p><b> finish=1;</b></p><p><b> } </b></p><p><b&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于攝像頭的尋跡小車設(shè)計(jì)
- 基于攝像頭的智能小車決策系統(tǒng)研究.pdf
- 智能小車(攝像頭)-專業(yè)課程設(shè)計(jì)與實(shí)習(xí)報(bào)告
- 攝像頭智能車設(shè)計(jì)方案
- 監(jiān)控?cái)z像頭
- 監(jiān)控?cái)z像頭
- 基于wince.net的攝像頭驅(qū)動(dòng)程序開(kāi)發(fā)
- 智能循跡小車
- 基于ARM的攝像頭驅(qū)動(dòng)程序的開(kāi)發(fā).pdf
- 基于CMOS攝像頭智能賽車的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 內(nèi)置攝像頭問(wèn)題
- 智能攝像頭行業(yè)分析研究報(bào)告
- 智能農(nóng)業(yè)攝像頭監(jiān)控軟件[C#].rar
- 基于Android平臺(tái)的智能網(wǎng)絡(luò)攝像頭應(yīng)用程序設(shè)計(jì)與開(kāi)發(fā).pdf
- 攝像頭檢驗(yàn)標(biāo)準(zhǔn)
- 攝像頭知識(shí)累積
- 智能循跡小車論文
- 基于攝像頭的智能車路線識(shí)別系統(tǒng)設(shè)計(jì).pdf
- 基于頂部攝像頭和鼠載攝像頭的大鼠自動(dòng)導(dǎo)航系統(tǒng).pdf
- 智能農(nóng)業(yè)攝像頭監(jiān)控軟件[C#].rar
評(píng)論
0/150
提交評(píng)論