基于pid算法的图像处理智能车控制系统设计内容摘要:

[9] 孙同景、陈贵友,《 Freescale 9S12 十六位单片机原理及嵌入式开发技术》,机械工业出版社, 2020 [10] 王威,《 HCS12微控制器原理及应用》,北京航空航天大学出版社, 2020 [11] 赵广林,《常用电子元器件识别 /检测 /选用一读通》,电子工业出版社, 2020 19 19 附 录 附录 A 算法源程序 include include uint8 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。 unsigned 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) { 20 20 Cross_flag=0。 } } } void Start_TwoMiao(void) { static unsigned char i=0。 if(FaChe==1amp。 amp。 Work_Mode==1) { if(i200) { i++。 if(i150) { FaChe=0。 Work_Mode=0。 //Motor_PWM=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。 21 21 enable_irq(87)。 //使能 A 口中断 , A24 场中断 enable_irq(90)。 //使能 D 口中断 , D6,D7 enable_irq(68)。 //定时器 0 enable_irq(69)。 //定时器 1 LED_P8x16Str(0,0,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 amp。 amp。 gpio_get(PORTA,16)==1 ) //保守速度 // { // Speed_Max=135。 // Speed_Min=125。 // straight_Speed=135。 // } // else if(gpio_get(PORTA,14)==0 amp。 amp。 gpio_get(PORTA,16)==1 ) //最大速度 // { // Speed_Max= // Speed_Min=90。 // straight_Speed=140。 // } // else if(gpio_get(PORTA,14)==0 amp。 amp。 gpio_get(PORTA,16)==0 ) //中档速度 // { // Speed_Max=150。 22 22 // Speed_Min=140。 // straight_Speed=140。 // } // else if(gpio_get(PORTA,14)==0 amp。 amp。 gpio_get(PORTA,16)==0 ) // { // Speed_Max=150。 // Speed_Min=110。 // straight_Speed=150。 // } for(。 ) { //cross_Recognition=0。 if Control_one if(DMA_Finish_Flag==0) //DMA 传输完成 { //gpio_ctrl(PORTA,16,1)。 //Servo_PWM=5350。 SCI_Finish_Flag=1。 Denoising(uc_FrameBuffer_Even[0])。 //去噪 EdgeDetection(uc_FrameBuffer_Even[0],EdgeData[0])。 //提取边缘 Get_Edge(uc_FrameBuffer_Even[0])。 //求边缘 //SCI()。 if(XuXian_Flag==1) { //XuXian_Find(uc_FrameBuffer_Even[0])。 23 23 } //SCI()。 if(White_Row_End!=IMAGE_ROW1 amp。 amp。 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=2020。 } //Key()。 SCI()。 //Project()。 //gpio_ctrl(PORTA,16,0)。 AT_LED_P8x16Str(30,0,L_Edge_Zero_StartRow1)。 24 24 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_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,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_Even[0]。 ////gpio_ctrl(PORTA,16,1)。 Denoising(uc_FrameBuffer_Even[0])。 //去噪 EdgeDetection(uc_FrameBuffer_Even[0],EdgeData[0])。 //提取边缘 Get_Edge(uc_FrameBuffer_Even[0])。 //求边缘 if(XuXian_Flag==1) { 25 25 //XuXian_Find(uc_FrameBuffer_Even[0])。 } if(White_Row_End!=IMAGE_ROW1 amp。 amp。 White_Row_End10) { Cross_Connect()。 }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。