


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、#inelude "include.h”#include "math.h"uint8 SCI_Finish_Flag=O;uint8 DMA_Finish_Flag=O;unsigned char L_BlackEndL=O; unsigned char L_BlackEndM=O;unsigned char L_BlackEndR=O;unsigned char LL_BlackEndL=O; unsigned char LL_BlackEndM=O; unsigned char LL_BlackEndR=O;unsigned char *Source_imag
2、e;unsigned int Time;unsigned char Cross_Time;unsigned char Cross_flag;unsigned char FaChe=O;unsigned char kai_Start_Line=O;void Cross_Stop(void)if(Cross_flag=l)Cross_Time+; if(Cross_Time>75)Cross_flag=0;void Start_TwoMiao(void)static unsigned char i=0; if(FaChe=l&&Work_Mode=l) 訐(i<200)
3、i+;if(i>150)FaChe=0;Work_Mode=0;/MotorPWM=1500;Motor_Base=Speed_Base;void main(void)/uint32 count=0;/uint8 j=O,a=O;/uintl6 ADValue;/unsigned char cross_Recognition=0;Disablelnterrupts;Alljnit();En ablel nterrupts;enable_irq(87);/使能A I丨中斷,A24場中斷enableJrq(90);/使能 D I I中斷,D6,D7 enable_irq(68);/定時(shí)器 0
4、enable_irq(69); 定時(shí)器 1 LED_P8xl6Str(0/0;,000M);Excursi on=0;Per_E=O;Last_Per_E=O;Motor_PWM=0;Time=0;Cross_Time=0;Cross_flag=0;/ if(gpio_get(PORTA,14)=l && gpio_get(PORTA,16)=l) 保守速度/Speed_Max=135;/Speed_Min=125;/straight_Speed=135;/elseif(gpio_get(PORTA,14)=0&& gpio_get(PORTA,16)=l) 最
5、人速度/Speed_Max=160;/Speed_Min=90;/straight_Speed=140;/elseif(gpio_get(PORTA,14)=0&& gpio_get(PORTA,16)=0 ) 中檔速度/ /Speed_Max=150;/Speed_Min=140;/straight_Speed=140;/ /elseif(gpio_get(PORTA,14)=0 && gpio_get(PORTA,16)=0 )/Speed_Max=150;/Speed_Min=110;/straight_Speed=150;/for(;)/crossRec
6、ognitio n=0;#if Control_one訐(DMA_Finish_Flag=O) /DMA 傳輸完成gpio_ctrl(PORTAJ6,l); /ServoPWM=5350;SCLFinish_Flag=l;Denoising(uc_FrameBuffer_Even0); 去噪EdgeDetection(uc_FrameBuffer_Even0,EdgeData0); 提取邊緣Get_Edge(uc_FrameBuffer_EvenO);求邊緣/sci();if(XuXian_Flag=l)/XuXian_Find(uc_FrameBuffer_EvenO);/sci();if(
7、White-Row_End!=IMAGE_ROW-l && White_Row_End>10)Cross_C onn ect();/sci();Edge_Filtering(); 邊緣濾波Edge_Repair();Cross(l);/SCI();/ if(cross_Recog nition !=1)/Repair_Edge();/New_Control();/Servo_PWM=5450;/Servo_PWM=4600;/Servo_PWM=6300;if(Work_Mode=0)/Motor_Control();Motor_PWM=2000;/Key();SCI()
8、;/Project();gpio_ctrl(PORTA6,0);AT_LED_P8xl6Str(30/0,L_Edge_Zero_StartRowl);AT_LED_P8xl6Str(620L_Edge_Zero_Endl);AT_LED_P8xl6Str(30/2,R_Edge_Zero_StartRowl);AT_LED_P8xl6Str(622R_Edge_Zero_Endl);AT_LED_P8xl6Str(1042(L_Edge_Zero_StartRowl+L_Edge_Zero_Endl)/2);AT_LED_P8xl6Str(104A(R_Edge_ZeroStartRowl+
9、R_Edge_Zero_Endl)/2);AT_LED_P8xl6Str_4wJnt(0,4/L_lnflexion_Slope_Value);AT_LED_P8xl6Str_4wJnt(4&4 丄 eft_lnflexion_Point);AT_LED_P8xl6Str_4w_int(06Rnflexion_Slope_Value);AT_LED_P8xl6Str_4wJnt(48,6,RightJnflexion_Point);AT_LED_P8xl6Str(104QXuXian_Flag);AT_LED_P8xl6Str(1046Find_Base_Edge_Flag);SCI_
10、Finish_Flag=O;DMA-Finish_Flag=2;#elif Con trol_twoif(lmageOverEven=TRUE)AT_LED_P8xl6Str_4w(486ADValue);Source_image=uc_FrameBuffer_Even0; /gpio_ctrl(P0RTAz16,l);Denoising(uc_FrameBuffer_Even0); 去噪 EdgeDetection(uc_FrameBuffer_Even0zEdgeData0); 提取邊緣 Get_Edge(uc_FrameBuffer_EvenO);求邊緣if(XuXian_Flag=l)
11、/XuXian_Find(uc_FrameBuffer_EvenO);if(White_Row_End!=IMAGE-ROW-l && White_Row_End>10)Cross_C onn ect();Edge_Filtering();邊緣濾波Edge_Repair();Cross(l);if(cross_Recog nition !=1)/Repair_Edge();/Cross_Stop();New_Control();if(Work_Mode=0)Motor_Control();/Motor_PWM=1400;/Motor_PWM=DJ;Key();Start_
12、TwoMiao();/Project();/SCI();/SCI 傳輸ImageOverEve n二 FALSE;gpio_ctrl(PORTA6,0);else if(lmageOverOdd=TRUE)/gpio_ctrl(PORTAz16,l);Sourceage=uc_FrameBuffer_Odd0;Denoising(uc_FrameBuffer_Odd0); 去噪EdgeDetection(uc_FrameBuffer_Odd0/EdgeData0); 提取邊緣Get_Edge(uc_FrameBuffer_Odd0);求邊緣if(XuXian_Flag=l)uart_sends
13、tring(UARTOz (uint8 *)HWelcome to K60 ADC Examplern"); uart_sendstring(UART0z(uint8 *)"Preparing for ADC operate!rnM); uart_sendstring(UART0z(uint8 *)"Start ADCOtaccuracy is 10.rnu);uart_sendstring(UART0,(uint8 *)"Start ADC1taccuracy is 16.rnH);主循環(huán) while(l)/I主循環(huán)計(jì)數(shù)到一定的值,使小燈的亮、暗狀態(tài)切
14、換run count+;if(runcount>=10)light_change(Light_Run_PORTLight_Runl);/指示燈的亮、暗狀態(tài)切換 run count=0;進(jìn)行一次模塊0通道16采樣ADValue = ad_ave(0, ADchanneLlOJO);uart_sendstring(UART0/(uint8 *),rnM);uart_sendnumber(UARTO/ ADValue);進(jìn)行一次模塊1通道16采樣uart_sendstring(UART0,(uint8 *)ntM);ADValue = ad_ave(l, ADchannel,16z10);ua
15、rt_sendnumber(UARTOz ADValue);#else#endif/Control C 文件#include "include.h"unsigned char ConRowSta=40;unsigned char ConRowEnd=60;unsigned short int Speed=100;按鍵unsigned char Button_work_flag=0;unsigned char Shake_Count=0;unsigned char Work_Button=0;unsigned char Work_Mode=l;保護(hù)unsigned char
16、Project_Start=0;unsigned char Start_Count=0;/PID/float Kp=0.555;/float Kd=0.509;/float Kp=0.370;/float Kd=0.120;/float Kp=0.420;/float Kd=0.530;/float Kp=0.300;/float Kd=1.900;float Kd=0.200;unsigned short int Motor_P=50;unsigned char MotorJ=l;unsigned char Motor_D=10;short int Speed_Output=0;有關(guān)剎車un
17、signed short int Speed_Base=O;unsigned short int DJ=3300;unsigned short int Speed_Max=100;unsigned short int Speed_Min=100;/Max 120 Min 100 穩(wěn)定 十字還有問題Max 130 Min 105稍微有點(diǎn)不穩(wěn)unsigned char straight_Speed=100;unsigned char StaLine_delay=25;unsigned short int DuoJi_Goal=5520;unsigned char DuoJi_Value_Count
18、=0;unsigned short int L_DuoJi_Goal=5520;signed short int DuoJi_Add=0;unsigned short int Change_error=800;void Key(void)static signed char order_num=0;static unsigned char temp=0;if(Work_Mode)if(Button_work_flag=0)if(Key_one=0)Butto n_ work_flag=l;else if(Key_two=0)Butt on _work_flag=2;else if(Key_th
19、ree=O)Butt on _work_flag=3;else if(Key_four=0)Button _work_flag=4;elseif(Shake_Count>3)Shake_Count=0; if(Button_work_flag=l) Button_work_flag=0; if(Key_one=0)/while(!Key_one); Work_Button=l; order_ nu m+;if(order_num>100) order_num=100;elseWork_Button=0;else if(Button_work_flag=2)Button_work_f
20、lag=0; if(Key_two=0)while(!Key_two);Work_Button=2;order_ num; if(order_ nu m<0) order_num=0;elseWork_Button=0;else if(Button_work_flag=3)Button_work_flag=0; if(Key_three=O)Work_Button=3;elseWork_Button=0;if(order_ nu m%5=0)FaChe=l;LED_P8xl6Str(80/0;,StartH);else if(Button_work_flag=4)Button_work_
21、flag=0;if(Key_four=0)Work_Button=4;elseWork_Button=0;if(order_ nu m%5=0)FaChe=l;LED_P8xl6Str(80Q“Sta 卍');elseButton_work_flag=0;Work_Button=0;if(Work_Button!=0 && Work_Mode!=0)if(Work_Button=3 11 Work_Button=4)butt on _debug_data(order_ num,Work_Butt on);key_display(order_ num);Work_Butt
22、on=0;elsetemp+;if(temp>8)key_display(5);temp=0;/key_display(5);void Project(void)if(Project_Start)if(Pulse=0)Motor_PWM=0; Work_Mode=l; Project_Start=0;void button_debug_data(char orderzchar anniu_number)賽車數(shù)據(jù)按鈕在線設(shè)置函數(shù)if(anniu_nu mber=3)加switch(order)i/case 1:Con RowSta+;break;/case 2:ConRowEnd+;bre
23、ak;/case 3: Speed+=10;break;/case 4:break;case 6:Kp+=O.O1;break;case 7:Kd+=O.O1;break;case 13: Speed_Base+=50;br(case 9: Change_error+=50;break;/case 9: Motor_P+=l;break;case 11: MotorJ+=l;break;case 12: Motor_D+=l;break;/case 13: DJ+=1OO;break;case 3: Speed_Max+=5;break;case 2: Speed_Min+=5; break;
24、case 4: straight_Speed+=5; break;case 1: St a Li ne_delay+=l;break;case 8: St a Li ne_zhi+=l;break;default:break;else if(anniu_number=4)減switch(order)/case 1:Con RowSta-;break;/case 2:Con RowE nd;break;/ case 3:Speed-=10;break;/ case 4:break;case 6:Kp-=O.O1;break;case 7:Kd-=O.O1;break;case 13:Speed_
25、Base-=50;break;case 9:Cha nge_error=50; break;/case 9:Motor_P-=l;break;case 11:MotorJ-=l;break;case 12:Motor_D-=l;break;/case 13: DJ-1OO;break;case 3:Speed_Max-=5;break;case 2:Speed_Min-=5;break;case 4:straight_Speed-=5; break;case 1:StaLi ne_delay=l; break;case &St a Li ne_zhi=l;break;default:b
26、reak;void key_display(unsigned char order)鍵盤顯示函數(shù)AT_LED_P8xl6Str(OOorder);LED_P8xl6Str(0/2,nn);switch(order)/case 1: LED_P8xl6Str(0/2/,lConRowSta:,);AT_LED_P8xl6Str(80,2/ConRowSta);break;/case 2: LED_P8xl6Str(O2 ConRowEnd:J;AT_LED_P8xl6Str(802ConRowEnd);break;/case 3: LED_P8xl6Str(0/2/,Speed:,);Ar_LE
27、D_P8xl6Str_4w(48/2/Speed);break;case 5: LEDPaxlGStMON/Pulse:"); AT_LED_P8xl6Str(48,2,Pulse);break;/case 5: LED_P8xl6Str(&(Vx:”);LED_P8xl6Str(02,'J;break;case6:LED_P8xl6Str(O2”Kp:J;AT_LEDP8xl6Str_4w_Float(24/2,(uintl6)(Kp*1000);break;case7:LED_P8xl6Str(O2”Kd:J;AT_LEDP8xl6Str_4w_Float(24/
28、2,(uintl6)(Kd*1000);break;case13:AT-LED_P8xl6Str(88,2,Speed_Base);break;case9:AT_LED_P8xl6Str_4w(96/2,Change_error);break;case 11: LED_P8xl6Str(02”Motor:“);case12:AT_LED_P8xl6Str(642Motor_D);break;/case 13: LED_P8xl6Str(O2”DJ:J;case3:AT-LED_P8xl6Str_4w(80,2/Speed_Max);break;case2:AT-LED_P8xl6Str_4w(
29、80,2/Speed_Min);break;case4:AT-LED_P8xl6Str_4w(80,2,straight_Speed);break;case1:AT_LED_P8xl6Str(104,2/StaLine_delay);break;LED_P8xl6Str(0/2/,Speed_Base:M);LED_P8xl6Str(0,2/,lChange_error11);AT_LED_P8xl6Str(64,2,MotorJ);break;LED_P8xl6Str(0,2Motor_D:“);AT_LED_P8xl6Str_4w(242DJ);break;LED_P8xl6Str(0/2
30、,,Speed_Max:H);LED_P8xl6Str(0/2,,ISpeed_Min:M);LED_P8xl6Str(0/2/,zhLSpeed:M);LED_P8xl6Str(0/2/,StaLine-delayH);case 8:LED_P8xl6Str(02”StaLin_zhiJ; LED-P8xl6Str(104/2,720H);AT_LED_P8xl6Str(802StaLine_zhi);break;/case & LED_P8xl6Str(&(Vx:“);LED_P8xl6Str(02,'J;break;/case 9: LED_P8xl6Str(&a
31、mp;(Vx:“);LED_P8xl6Str(02");break;/case 10: LED_P8xl6Str(8/0;,x:,);LED_P8xl6Str(0/2;,);break;default: LED_P8xl6Str(0,2/,1H); break;/*/void New_Control(void)static short int Error=0zL_error=0;/LL_error=0static short int Output=5450;/,Last_Output=5350static short int Add=0;static unsigned char Co
32、unt=0;if(Start_Line!=l)/Get_area_Error(ConRowSta,ConRowEnd/2/l);Get_area_Error(ConRowSta,C on RowE nct2J);if(Now_Message_error=l)Get_area_Error(ConRowSta/ConRowEnd/l,l);訐(Area_Sum>1000 && Area_Sum<2541)Error=Area_Error;elseError=L_error; /可以加個(gè)偏差的斜率else if(XuXian_Flag=l)Get_area_Error(C
33、onRowSta,ConRowEnd,l,l);if(Area_Sum>100 && Area_Sum<2541)Error=Area_Error;elseError=L_error; /可以加個(gè)偏差的斜率else if(Area_Sum>1000 && Area_Sum<2541 )/&& Now_Message_error=0Error=Area_Error;else if(Absolute(Area_Error-L_error)>Change_error)if(Cross_flag=l) Error=Area_
34、Error;elseError=L_error;else Error=L_error;/+(L_error-LL_error);elseGet_area_Error(45/50,2z4);Error=Area_Error;Cou nt+;if(Count=100)Count=0;Start_Line=O;/Add=(shortint)(1.0*Kp*(Error-L_error)+1.0*Kd*(Error-2*L_error+LL_error);/Output+=Add;Add=(shortint)(1.0*Kp*Error+1.0*Kd*(Error-L_error);Output=545
35、0+Add;/LL_error=L_error;L_error=Error;if(0utput<4600)DuoJi_Goal=4600;else if(0utput>6300)(00mA(oLLJl(D4suel)En_osq<±【OHdluo)二 u 一 1OJZS(oUJlEsuel iu 一tolls)-oluoulp(D<Dds POA【(o3)olucolp(D(Dds -OPUI 一Ono+WOD "loncJIHzMdlo>es【+1U n oolon - p>l-0 n o &、(_eoD一ono IT_eoE&
36、gt;lmoncJllpp<lmoncl Tl_d 淚辿/7s<l/rNLLJllHlDlll_dH-nHrHIJJd 宀 vndlno 丄 eoDJonoCDS-CD Oom9 丄 PODJoncJ(ovlndlnolp 2ds)£fpp<lp(D(DdsH+lndlnolp<D(Dds 二oLLIlp(D(Ddsl-r,o3lp(D<Dds)*clloloz+o3lp(D(DdsdlolozHPP<lp<D(Ddsos-nd-u2(DdsHoLLJlp22dsoHPP<lp(D<Dds iu 一 lovs OESoulndln
37、olpCDCDds -u 一 1OJZS ORP<、 0HoUJlp(D(DdslT17>0HoIJJlpa)<DdslT0HoLlJlp(D<Dds -u 一 lo-cs OQels(poA)oluoololo 乏 POA unnnnnnnunnunnnnnMTnnnnunnnnnnnununnu:p<D<Dds I1-&-elsHPa)<udsCDSO 宀fdluolHPoCDdsO)S-CD xezlp<D(DdsHP(D<Dds (xel/llp(D<Dds<:dlu(Dl)七(Dso c一 l/llp(D<
38、;DdsHP(D<Dds (u-l/llp(D(Ddsvdlu(Dl)±-xe 乏 lp(D(Dds+009mss9、(xe 乏peCDds'u 一三 lp(D(Dds)*03l<D4suel*0LLJl(L)4suelHdlu(Dlstatic short int Speed_Error=0,L_Speed_Error=0,LL_Speed_Error=0; /static short int Speed_Output=0;static short int Speed_Add=O;Speed_Error=Speed-Pulse;/130Speed_Add=(short int)(Motor_P*1.0*(Speed_Error-L_Speed_Error)+MotorJ*1.0*Speed_Error+ Motor_D*1.0*(Speed_Error-2*L_Speed_Error+L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國增韌母料數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職教育學(xué)模擬考試試卷A卷含答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備初級(jí)技能模擬考試試卷A卷含答案
- 2021-2022學(xué)年廣東省廣州四中初中部逸彩校區(qū)七年級(jí)(下)期中數(shù)學(xué)試卷(含答案)
- 2025年天津市專業(yè)技術(shù)人員公需考試試題-為中國式現(xiàn)代化提供強(qiáng)大動(dòng)力和制度保障-黨的二十屆三中全會(huì)暨《中共中央關(guān)于進(jìn)一步全面深化改革、推進(jìn)中國式現(xiàn)代化的決定》總體解讀
- 高等教育自學(xué)考試《00074中央銀行概論》模擬試卷一
- 2025年大學(xué)英語六級(jí)考試預(yù)測(cè)試卷一
- 2023年同等學(xué)力申碩《英語》試題真題及答案
- 美容整形手術(shù)服務(wù)合同協(xié)議
- 紡織服裝產(chǎn)品質(zhì)量免責(zé)承諾書
- 2025年海南??谑兴畡?wù)局招聘事業(yè)單位人員35人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- COP生產(chǎn)一致性控制計(jì)劃
- 2025年電力人工智能多模態(tài)大模型創(chuàng)新技術(shù)及應(yīng)用報(bào)告-西安交通大學(xué)
- 天津2025年天津市機(jī)關(guān)后勤事務(wù)服務(wù)中心分支機(jī)構(gòu)天津市迎賓館招聘2人筆試歷年參考題庫附帶答案詳解
- 華東師大版七年級(jí)數(shù)學(xué)下冊(cè)“第1周周考”
- 教師論文撰寫培訓(xùn)
- 2024年道路運(yùn)輸企業(yè)安全生產(chǎn)管理人員證考試題庫
- EPC總承包管理方案
- 安全生產(chǎn)管理體系建設(shè)講解
- 學(xué)習(xí)雷鋒主題班會(huì)雷鋒日學(xué)習(xí)雷鋒精神-
- 事故隱患內(nèi)部舉報(bào)獎(jiǎng)勵(lì)制度
評(píng)論
0/150
提交評(píng)論