




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、#include include.h#include math.huint8 SCI_Finish_Flag=0;uint8 DMA_Finish_Flag=0;unsigned char L_BlackEndL=0;unsigned char L_BlackEndM=0;unsigned char L_BlackEndR=0;unsigned char LL_BlackEndL=0;unsigned char LL_BlackEndM=0;unsigned char LL_BlackEndR=0;unsigned char *Source_image;unsigned int Time;un
2、signed char Cross_Time;unsigned char Cross_flag;unsigned char FaChe=0;unsigned char kai_Start_Line=0;void Cross_Stop(void) if(Cross_flag=1) Cross_Time+; if(Cross_Time75) Cross_flag=0; void Start_TwoMiao(void) static unsigned char i=0; if(FaChe=1&Work_Mode=1) if(i150) FaChe=0; Work_Mode=0; /Motor_PWM
3、=1500; Motor_Base=Speed_Base; void main(void) /uint32 count=0; /uint8 j=0,a=0; /uint16 ADValue; /unsigned char cross_Recognition=0; DisableInterrupts; All_Init(); EnableInterrupts; enable_irq(87);/使能A口中斷 ,A24場中斷 enable_irq(90);/使能D口中斷 ,D6,D7 enable_irq(68);/定時器0 enable_irq(69);/定時器1 LED_P8x16Str(0,0
4、,000); Excursion=0; Per_E=0; Last_Per_E=0; Motor_PWM=0; Time=0; Cross_Time=0; Cross_flag=0; / if(gpio_get(PORTA,14)=1 & gpio_get(PORTA,16)=1 ) /保守速度/ / Speed_Max=135;/ Speed_Min=125;/ straight_Speed=135;/ / else if(gpio_get(PORTA,14)=0 & gpio_get(PORTA,16)=1 ) /最大速度/ / Speed_Max=160;/ Speed_Min=90;/
5、 straight_Speed=140;/ / else if(gpio_get(PORTA,14)=0 & gpio_get(PORTA,16)=0 ) /中檔速度/ / Speed_Max=150;/ Speed_Min=140;/ straight_Speed=140;/ / else if(gpio_get(PORTA,14)=0 & gpio_get(PORTA,16)=0 )/ / Speed_Max=150;/ Speed_Min=110;/ straight_Speed=150;/ for(;) /cross_Recognition=0; #if Control_one if(
6、DMA_Finish_Flag=0) /DMA傳輸完成 /gpio_ctrl(PORTA,16,1); /Servo_PWM=5350; SCI_Finish_Flag=1; Denoising(uc_FrameBuffer_Even0); /去噪 EdgeDetection(uc_FrameBuffer_Even0,EdgeData0); /提取邊緣 Get_Edge(uc_FrameBuffer_Even0); /求邊緣 /SCI(); if(XuXian_Flag=1) /XuXian_Find(uc_FrameBuffer_Even0); /SCI(); if(White_Row_En
7、d!=IMAGE_ROW-1 & White_Row_End10) Cross_Connect(); /SCI(); Edge_Filtering(); /邊緣濾波 Edge_Repair(); Cross(1); /SCI(); / if(cross_Recognition!=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(); /Projec
8、t(); /gpio_ctrl(PORTA,16,0); AT_LED_P8x16Str(30,0,L_Edge_Zero_StartRow1); AT_LED_P8x16Str(62,0,L_Edge_Zero_End1); AT_LED_P8x16Str(30,2,R_Edge_Zero_StartRow1); AT_LED_P8x16Str(62,2,R_Edge_Zero_End1); AT_LED_P8x16Str(104,2,(L_Edge_Zero_StartRow1+L_Edge_Zero_End1)/2); AT_LED_P8x16Str(104,4,(R_Edge_Zero
9、_StartRow1+R_Edge_Zero_End1)/2); AT_LED_P8x16Str_4w_int(0,4,L_Inflexion_Slope_Value); AT_LED_P8x16Str_4w_int(48,4,Left_Inflexion_Point); AT_LED_P8x16Str_4w_int(0,6,R_Inflexion_Slope_Value); AT_LED_P8x16Str_4w_int(48,6,Right_Inflexion_Point); AT_LED_P8x16Str(104,0,XuXian_Flag); AT_LED_P8x16Str(104,6,
10、Find_Base_Edge_Flag); SCI_Finish_Flag=0; DMA_Finish_Flag=2; #elif Control_two if(ImageOverEven=TRUE) /AT_LED_P8x16Str_4w(48,6,ADValue); Source_image=uc_FrameBuffer_Even0; /gpio_ctrl(PORTA,16,1); Denoising(uc_FrameBuffer_Even0); /去噪 EdgeDetection(uc_FrameBuffer_Even0,EdgeData0); /提取邊緣 Get_Edge(uc_Fra
11、meBuffer_Even0); /求邊緣 if(XuXian_Flag=1) /XuXian_Find(uc_FrameBuffer_Even0); if(White_Row_End!=IMAGE_ROW-1 & White_Row_End10) Cross_Connect(); Edge_Filtering(); /邊緣濾波 Edge_Repair(); Cross(1); /if(cross_Recognition!=1) / Repair_Edge(); / /Cross_Stop(); New_Control(); if(Work_Mode=0) Motor_Control(); /
12、Motor_PWM=1400; /Motor_PWM=DJ; Key(); Start_TwoMiao(); /Project(); /SCI(); /SCI傳輸 ImageOverEven=FALSE; /gpio_ctrl(PORTA,16,0); else if(ImageOverOdd=TRUE) /gpio_ctrl(PORTA,16,1); Source_image=uc_FrameBuffer_Odd0; Denoising(uc_FrameBuffer_Odd0); /去噪 EdgeDetection(uc_FrameBuffer_Odd0,EdgeData0); /提取邊緣
13、Get_Edge(uc_FrameBuffer_Odd0); /求邊緣 if(XuXian_Flag=1) /XuXian_Find(uc_FrameBuffer_Even0); if(White_Row_End!=IMAGE_ROW-1 & White_Row_End10) Cross_Connect(); Edge_Filtering(); /邊緣濾波 Edge_Repair(); Cross(1); /if(cross_Recognition!=1) / Repair_Edge(); / /Cross_Stop(); New_Control(); if(Work_Mode=0) Moto
14、r_Control(); /Motor_PWM=1400; /Motor_PWM=DJ; Key(); Start_TwoMiao(); /Project(); /SCI(); ImageOverOdd=FALSE; /gpio_ctrl(PORTA,16,0); #elif Control_three /1 主程序使用的變量定義 uint32 runcount;/運行計數器 uint16 ADValue; /2 關中斷 DisableInterrupts; /禁止總中斷 /3 模塊初始化 light_init(Light_Run_PORT,Light_Run1,Light_OFF); /指示
15、燈初始化 uart_init (UART0,periph_clk_khz,9600); /串口初始化 /ADC adc_init(0); adc_init(1); uart_sendstring(UART0, (uint8 *)Welcome to K60 ADC Examplern); uart_sendstring(UART0,(uint8 *)Preparing for ADC operate!rn); uart_sendstring(UART0,(uint8 *)Start ADC0.taccuracy is 10.rn); uart_sendstring(UART0,(uint8 *
16、)Start ADC1.taccuracy is 16.rn); /主循環 while(1) /1 主循環計數到一定的值,使小燈的亮、暗狀態切換 runcount+; if(runcount=10) light_change(Light_Run_PORT,Light_Run1);/指示燈的亮、暗狀態切換 runcount=0; /進行一次模塊0通道16采樣 ADValue = ad_ave(0, ADchannel,10,10); uart_sendstring(UART0,(uint8 *)rn); uart_sendnumber(UART0, ADValue); /進行一次模塊1通道16采
17、樣 uart_sendstring(UART0,(uint8 *)t-); ADValue = ad_ave(1, ADchannel,16,10); uart_sendnumber(UART0, ADValue); #else #endif /Control C文件#include include.hunsigned char ConRowSta=40;unsigned char ConRowEnd=60;unsigned short int Speed=100;/按鍵unsigned char Button_work_flag=0;unsigned char Shake_Count=0;u
18、nsigned char Work_Button=0;unsigned char Work_Mode=1;/保護unsigned char 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
19、char Motor_I=1;unsigned char Motor_D=10;short int Speed_Output=0;/有關剎車unsigned short int Speed_Base=0;unsigned short int DJ=3300;unsigned short int Speed_Max=100;unsigned short int Speed_Min=100;/Max 120 Min 100 穩定 十字還有問題 Max 130 Min 105 稍微有點不穩unsigned char straight_Speed=100;unsigned char StaLine_d
20、elay=25;unsigned short int DuoJi_Goal=5520;unsigned char DuoJi_Value_Count=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_o
21、ne=0) Button_work_flag=1; else if(Key_two=0) Button_work_flag=2; else if(Key_three=0) Button_work_flag=3; else if(Key_four=0) Button_work_flag=4; else if(Shake_Count3) Shake_Count=0; if(Button_work_flag=1) Button_work_flag=0; if(Key_one=0) /while(!Key_one); Work_Button=1; order_num+; if(order_num100
22、) order_num=100; else Work_Button=0; else if(Button_work_flag=2) Button_work_flag=0; if(Key_two=0) /while(!Key_two); Work_Button=2; order_num-; if(order_num8) key_display(5); temp=0; /key_display(5);void Project(void) if(Project_Start) if(Pulse=0) Motor_PWM=0; Work_Mode=1; Project_Start=0; void butt
23、on_debug_data(char order,char anniu_number) /賽車數據按鈕在線設置函數 if(anniu_number=3) /加 switch(order) /case 1: ConRowSta+; break; /case 2: ConRowEnd+; break; /case 3: Speed+=10; break; /case 4: break; case 6: Kp+=0.01; break; case 7: Kd+=0.01; break; case 13: Speed_Base+=50; break; case 9: Change_error+=50;
24、 break; /case 9: Motor_P+=1; break; case 11: Motor_I+=1; break; case 12: Motor_D+=1; break; /case 13: DJ+=100; break; case 3: Speed_Max+=5; break; case 2: Speed_Min+=5; break; case 4: straight_Speed+=5; break; case 1: StaLine_delay+=1; break; case 8: StaLine_zhi+=1; break; default : break; else if(a
25、nniu_number=4) /減 switch(order) /case 1: ConRowSta-; break; /case 2: ConRowEnd-; break; / case 3: Speed-=10; break; / case 4: break; case 6: Kp-=0.01; break; case 7: Kd-=0.01; break; case 13: Speed_Base-=50; break; case 9: Change_error-=50; break; /case 9: Motor_P-=1; break; case 11: Motor_I-=1; bre
26、ak; case 12: Motor_D-=1; break; /case 13: DJ-=100; break; case 3: Speed_Max-=5; break; case 2: Speed_Min-=5; break; case 4: straight_Speed-=5; break; case 1: StaLine_delay-=1; break; case 8: StaLine_zhi-=1; break; default : break; void key_display(unsigned char order) /鍵盤顯示函數 AT_LED_P8x16Str(0,0,ord
27、er); LED_P8x16Str(0,2, ); switch(order) /case 1: LED_P8x16Str(0,2,ConRowSta:);AT_LED_P8x16Str(80,2,ConRowSta);break; /case 2: LED_P8x16Str(0,2,ConRowEnd:);AT_LED_P8x16Str(80,2,ConRowEnd);break; /case 3: LED_P8x16Str(0,2,Speed:);AT_LED_P8x16Str_4w(48,2,Speed);break; case 5: LED_P8x16Str(0,2,Pulse:);
28、AT_LED_P8x16Str(48,2,Pulse);break; /case 5: LED_P8x16Str(8,0,x:);LED_P8x16Str(0,2,);break; case 6: LED_P8x16Str(0,2,Kp:); AT_LED_P8x16Str_4w_Float(24,2,(uint16)(Kp*1000);break; case 7: LED_P8x16Str(0,2,Kd:); AT_LED_P8x16Str_4w_Float(24,2,(uint16)(Kd*1000);break; case 13: LED_P8x16Str(0,2,Speed_Base:
29、); AT_LED_P8x16Str(88,2,Speed_Base);break; case 9: LED_P8x16Str(0,2,Change_error); AT_LED_P8x16Str_4w(96,2,Change_error);break; case 11: LED_P8x16Str(0,2,Motor_I:); AT_LED_P8x16Str(64,2,Motor_I);break; case 12: LED_P8x16Str(0,2,Motor_D:); AT_LED_P8x16Str(64,2,Motor_D);break; /case 13: LED_P8x16Str(0,2,DJ:); AT_LED_P8x16Str_4w(24,2,DJ);break; case 3: LED_P8x16Str(0,2,Speed_Max:); AT_LED_P8x16Str_4w(80,2,Speed_Max);break; case 2: LED_P8x16Str(0,2,Speed_Min:); AT_LED_P8x16Str_4w(80,2,Speed_Min);break; case 4: LED_P8x16Str(0,2,zhi_Speed:); AT_LED_P8x16Str_4w(80,2,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業廢水處理與節能減排
- 工業機器人技術在智能制造中的運用
- 工業廢水處理技術及實踐案例分析
- 工業機器人與智能材料的融合應用
- 工業機器人與機器學習的融合應用
- 工業機器人技術的節能減排策略研究
- 工業自動化系統設計與管理探討
- 工業物聯網的構建與實施
- 工業節能與低碳技術發展路徑
- 工業節能減排技術及市場分析
- 政府采購工程監理合同范本
- 人工智能在智能體育中的應用
- 紀檢干部培訓經典課件
- 每周食品安全排查治理
- 電競酒店管理制度
- 房屋買賣居間合同書范本
- 錘擊樁(砼預制方樁、預應力砼管樁、鋼樁)工程旁站監理記錄
- 基于文獻計量學的屋頂綠化研究綜述
- 醫療設備日常維護記錄
- 血液標本采集-課件
- 【液壓機控制系統故障及診斷方法研究12000字(論文)】
評論
0/150
提交評論