我这只有舵机,摄像头,和主程序,但是只是框架,要等调试.doc

我这只有舵机,摄像头,和主程序,但是只是框架,要等调试.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
我这只有舵机,摄像头,和主程序,但是只是框架,要等调试

我这只有舵机,摄像头,和主程序,但是只是框架,要等调试。可以参考哈 #ifndef _WATCH_H_ //头文件保护 #define _WATCH_H_ #ifndef ULONG #define ULONG unsigned long #define UCHAR unsigned char #define UINT unsigned int #endif #define ROAD_MAX 10 ////////////////代设值 #define MP0 //捕捉象素引脚 #define HREF //捕捉行中断引脚 ////////////////// static unsigned char Colors[10][48]; //象素数组 static unsigned char JudgeMax; //最大象素 static unsigned char JudgeMin; //最小象素 unsigned char Over; //中断函数处理完成 //使用数组后要清零 struct ROADS { unsigned char LeftRight; //1 left, 0 right 2 表示没检测到黑线 4表示起始线 unsigned int road; //转向率,0表示直线或则没检测到黑线 }Roads[10]; //没检测到黑线一般为前方有大于90度的弯, //行驶一会后数组会更新,不会因此丢掉跑道 unsigned long RoadLength; //mm单位 void GetRoads(); //取象素 void ProcessRoads(); //取转向率 void delay(UINT); //延时函数 void ColorToRoads(UINT); //2值化与赋值 #endif //_WATCH_H_ 以下为实现文件: //watch.c #include hidef.h /* common defines and macros */ #include MC9S12XS128.h /* derivative information */ #include watch.h #pragma CODE_SEG NON_BANKED #pragma TRAP_PROC void GetRoads() //场中断服务函数 { UINT i; UINT Href= 0; delay(5); while(HREF) { if(Href= 270) //点读取完毕,退出循环 break; if((270-Href)%21!= 0 || Href 60) //取60-270行中平均间隔的行数,共30行 { Href++; while(HREF); //等待此行扫描结束 while(!HREF); //等待新行开始扫描 continue; } delay(...); //根据调式结果具体设置 for(i= 0; i 48; i++) { Colors[((270-Href)%21)][i]= MP0; //读取引脚数据,后来会根据串口还是并口读取做相应修改 if(MP0 judgeMax) //取最大最小值 JudgeMax= MP0; if(MP0 JudgeMin) JudgeMin= MP0; delay(...); //具体设置 } Href++; while(HREF); while(!HREF); //等待行中断结束 } Over= 1; //中断函数处理完成 } #pragma CODE_SEG DEFAULT void ColorToRoads(UINT Href) { UINT i; UINT temp; //用于起始线判断 UINT temp2; UINT temp3; UCHAR Judge; //平均厥值 UINT j= 0; UINT m_nCount= 0; Judge= (JudgeMax+ JydgeMin)/2; Roads[Href].road= 0; Roads[Href].LeftRight= 0; for(i= 0; i48; i+= 3) { if(Colors[i]= Judge|| Colors[i+ 1]= Judge|| Colors[i+ 2]= Judge) { Roads[Href].road= (0x8000 (UCHAR)j); //相应位赋值为1 m_nCount++; } j++; } if(Roads[Href].road== 0x00) { Ro

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档