完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
山东省高校第五届机器人大赛技术报告
#define PWM6T2L (*(unsigned char volatile xdata *)0xff43) #define PWM6CR (*(unsigned char volatile xdata *)0xff44) #define PWM7T1 (*(unsigned int volatile xdata *)0xff50) #define PWM7T1H (*(unsigned char volatile xdata *)0xff50) #define PWM7T1L (*(unsigned char volatile xdata *)0xff51) #define PWM7T2 (*(unsigned int volatile xdata *)0xff52) #define PWM7T2H (*(unsigned char volatile xdata *)0xff52) #define PWM7T2L (*(unsigned char volatile xdata *)0xff53) #define PWM7CR (*(unsigned char volatile xdata *)0xff54) sfr P_SW2 = 0xba; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr ***it ***it ***it ***it ***it ***it ***it ***it ***it ***it ***it P0M1 = 0x93; P0M0 = 0x94; P1M1 = 0x91; P1M0 = 0x92; P2M1 = 0x95; P2M0 = 0x96; P3M1 = 0xb1; P3M0 = 0xb2; P4M1 = 0xb3; P4M0 = 0xb4; P5M1 = 0xC9; P5M0 = 0xCA; P6M1 = 0xCB; P6M0 = 0xCC; P7M1 = 0xE1; P7M0 = 0xE2; PWMCFG = 0xf1; PWMCR = 0xf5; PWMIF = 0xf6; PWMFDCR= 0xf7; PWM2 = P3^7; PWM3 = P2^1; PWM4 = P2^2; PWM5 = P2^3; PWM6 = P0^7; PWM7 = P0^6; yanjing= P1; dayanjing=P3^3; dang1=P0^0; dang2=P0^1; dang3=P0^2; 15山东省高校第五届机器人大赛技术报告 void PWM_config(void); void Delay10ms(unsigned int); void tibian(unsigned short c,d); void tibian1(unsigned short c,d); void next1(void); void next2(void); void next3(void); void zhixing(void); void zhuanwan(void); void PWM2_SetPwmWide(unsigned short Wide); void PWM3_SetPwmWide(unsigned short Wide); void PWM4_SetPwmWide(unsigned short Wide); void PWM5_SetPwmWide(unsigned short Wide); void PWM6_SetPwmWide(unsigned short Wide); void PWM7_SetPwmWide(unsigned short Wide); void IntConfiguration(); Unsigned short xianzhuang2,xianzhuang3,xianzhuang4,xianzhuang5,xianzhuang6,xianzhuang7,zhuan jiao2,zhuanjiao3,zhuanjiao4,zhuanjiao5,zhuanjiao6,zhuanjiao7; unsigned short k=0,j,num=0,cishu=0,mingling=0,qianjin=0,buzi=0,KeyValue=0; void main() { xianzhuang2=1450;xianzhuang3=1545;xianzhuang4=1500;//最标准姿势 xianzhuang5=1510;xianzhuang6=1453;xianzhuang7=1460; zhuanjiao2=1850;zhuanjiao3=1145;zhuanjiao4=1500; zhuanjiao5=1510;zhuanjiao6=1453;zhuanjiao7=1460; PWM_config(); EA=1;//打开总中断 P1=0xff; while(1) { PWM2_SetPwmWide(xianzhuang2); PWM3_SetPwmWide(xianzhuang3); PWM4_SetPwmWide(xianzhuang4); PWM5_SetPwmWide(xianzhuang5); PWM6_SetPwmWide(xianzhuang6); PWM7_SetPwmWide(xianzhuang7); PWM6_SetPwmWide(xianzhuang6); zhixing(); 16山东省高校第五届机器人大赛技术报告 } } void IntConfiguration() { //设置 INT1 IT1=1; EX1=1; } void Int0() interrupt 2 //外部中断 0 的中断函数 { Delay10ms(1); if(dayanjing==0) { EA=0; KeyValue=1; } } void zhixing() { if(xianzhuang2!=zhuanjiao2) { tibian1(xianzhuang2,zhuanjiao2); xianzhuang2=j; } if(xianzhuang3!=zhuanjiao3) { tibian1(xianzhuang3,zhuanjiao3); xianzhuang3=j; } if(xianzhuang4!=zhuanjiao4) { tibian1(xianzhuang4,zhuanjiao4); xianzhuang4=j; } if(xianzhuang5!=zhuanjiao5) { tibian1(xianzhuang5,zhuanjiao5); xianzhuang5=j; } if(xianzhuang6!=zhuanjiao6) { 17山东省高校第五届机器人大赛技术报告 tibian1(xianzhuang6,zhuanjiao6); xianzhuang6=j; } if(xianzhuang7!=zhuanjiao7) { tibian1(xianzhuang7,zhuanjiao7); xianzhuang7=j; } Delay10ms(1); } void tibian1(unsigned short c,d) { if(c c++; } else if(c>d) { c--; } if(c==d) { next(); } j=c; } void next () { if(mingling==0) { switch (num) { case(0):break; 18山东省高校第五届机器人大赛技术报告 case(1):zhuanjiao6=1241;zhuanjiao7=1359;break;//起步支撑 case(2):break; case(3):zhuanjiao6=1341;break;// 角 度 回 旋 case(4): zhuanjiao2=2037;zhuanjiao3=1332;zhuanjiao4=1667; zhuanjiao5=1677;zhuanjiao6=1413;break;//漫右脚同时右脚回 90 调节 2 3 号舵机可使 67 舵机落脚时是否碰地 case(5):break; case(6):break; case(7):break; case(8):break; case(9): if(zhuanjiao6!=1413) { zhuanjiao6=1413;num--; } else { zhuanjiao6=1453;zhuanjiao7=1460; } break; case(10):break; case(11):zhuanjiao6=1574;zhuanjiao7=1637;break;//zhuanjiao6=1574;zhuanjiao7=16 37;break;// 起步支撑 6 的偏转角度增大可使其右偏 减小左偏 case(12):break; case(13): switch(P1) { case(0xff):num++;break; //处于白线 case(0xf7):zhuanjiao7=1700;break;//前面一个进入黑线 case(0xf3):zhuanjiao7=1720;break;//前面两个进入黑线 case(0xf1):zhuanjiao7=1850;break;//前面三个进入黑线 case(0xf0):zhuanjiao7=1950;break;//前面四个进入黑线 case(0xb7):zhuanjiao7=1650;break;//前面一个进去黑线 后面一个进入黑线 case(0x97):num++;break; //前面一个进入黑线 后面 两个进去黑线 case(0x87):num++;break; //前面一个进入黑线 后面 三个进入黑线 case(0xb3):zhuanjiao7=1700;break;//前面两个进入黑线 后面一个进入黑线 19山东省高校第五届机器人大赛技术报告 case(0x93):zhuanjiao7=1660;break;//前面两个进入黑线 后面两个进去黑线 case(0x83):num++;break; 线 后面三个进入黑线 case(0xb1):zhuanjiao7=1720;break;//前面三个进入黑线 后面一个进入黑线 case(0x91):zhuanjiao7=1700;break;//前面三个进入黑线 后面两个进去黑线 case(0x81):zhuanjiao7=1660;break;//前面三个进入黑线 后面三个进入黑线 case(0xb0):zhuanjiao7=1720;break;//前面四个进入黑线 后面一个进入黑线 case(0x90):zhuanjiao7=1700;break;//前面四个进入黑线 后面两个进去黑线 case(0x80):zhuanjiao7=1660;break;//前面四个进入黑线 后面三个进入黑线 case(0xbf):num++;break; case(0x9f):num++;break; case(0x8f):num++;break; //后面一个进入黑线 // 后面两个进去黑线 //后面三个进入黑线 case(0x88):zhuanjiao7=1780;break;//前面一个出来黑线 后面三个进入黑线 case(0x8c):zhuanjiao7=1950;break;//前面两个出来黑线 后面三个进入黑线 case(0x8e):zhuanjiao7=1950;break;//前面三个出来黑线 后面三个进入黑线 case(0xc8):zhuanjiao7=1720;break;//前面一个出来黑线 后面一个出来黑线 case(0xcc):zhuanjiao7=1740;break;//前面两个出来黑线 后面一个出来黑线 2 case(0xce):zhuanjiao7=2050;break;//前面三个出黑线 后面一个出来黑线 case(0xcf):zhuanjiao7=2050;break;//前面四个个出黑线 后面一个出来黑线 case(0xe8):zhuanjiao7=1720;break;//前面一个出来黑线 后面两个出来黑线 case(0xec):zhuanjiao7=1750;break;//前面两个出来黑线 后面两个出来黑线 2 case(0xee):zhuanjiao7=1950;break;//前面三个 出黑线 后面两个出来黑线 3 case(0xef):zhuanjiao7=1950;break;//前面全出黑线 后面两个出来黑线 3 20 //前面两个进入黑山东省高校第五届机器人大赛技术报告 case(0xf8):zhuanjiao7=2050;break;//前面一个出来黑线 case(0xb8):zhuanjiao7=2100;break;//前面一个出来黑线 后面一个进入黑线 case(0x98):zhuanjiao7=2050;break;//前面一个出来黑线 后面两个进去黑线 case(0xfc):zhuanjiao7=2100;break;//前面两个出来黑线 case(0xbc):zhuanjiao7=2080;break;//前面两个出来黑线 后面一个进入黑线 case(0x9c):zhuanjiao7=2050;break;//前面两个出来黑线 后面两个进去黑线 case(0xfe):zhuanjiao7=2100;break;//前面三个出来黑线 case(0xbe):zhuanjiao7=2080;break;//前面三个出来黑线 后面一个进入黑线 case(0x9e):zhuanjiao7=2050;break;//前面三个出来黑线 后面两个进去黑线 default: num++;break; } case(14):if(zhuanjiao7==1637) { zhuanjiao2=1643;zhuanjiao3=928;zhuanjiao4=1333;zhuanjiao5=1343; zhuanjiao7 =1500;break; }//处于白线 漫左脚 左脚回 90 else { zhuanjiao2=1683;zhuanjiao3=938;zhuanjiao4=1333; zhuanjiao5=1343;num++;break; } case(15):break; case(16):break; case(17):break; case(18):break; case(19): if(zhuanjiao7!=1500) { zhuanjiao7=1500; num--; }//如果左脚是摩擦前进 先回 90 else { zhuanjiao6=1453;zhuanjiao7=1460;//右脚回 90 落地 21 5 5 5山东省高校第五届机器人大赛技术报告 } break; case(20):break; case(21):zhuanjiao6=1296;zhuanjiao7=1360;break;//7 偏转角度减小后右偏 case(22):break; case(23):break; case(24):if(zhuanjiao6==1296) { zhuanjiao2=2037;zhuanjiao3=1332;zhuanjiao4=1667;zhuanjiao5=1677; zhuanjiao6=1413;break;//漫右脚同时右脚回 90 }//调节 2 3 号舵机可使 67 舵机落脚时是否碰地 else { zhuanjiao2=2037;zhuanjiao3=1332;zhuanjiao4=1667;zhuanjiao5=1677;num++;b reak; } } num++; if(num>24) { if(KeyValue==1) { qianjin++; if(qianjin>2) { KeyValue=0; mingling=1; } } if(num==25) num=5; else num=6; cishu++;//多少步后开启中断 if(cishu>28) { IntConfiguration(); } } } 22山东省高校第五届机器人大赛技术报告 } void Delay10ms(unsigned int c) { unsigned char a,b; for(;c>0;c--) for(b=30;b>0;b--) for(a=47;a>0;a--); } //误差 0us void PWM_config(void) { P0M0&=~0xc0; P0M1&=~0xc0; P0&=~0xc0; P1M0=0; P1M1=0; P2M0&=~0x0e; P2M1&=~0x0e; P2&=~0x0e; P3M0&=~0x80; P3M1&=~0x80; P3&=~0x80; P_SW2|=0x80; PWMCKS=0x0b; PWMC=CYCLE; PWM2T1=1; PWM2T2=0; PWM2CR=0x00; PWM3T1=1; PWM3T2=0; PWM3CR=0x00; PWM4T1=1; PWM4T2=0; PWM4CR=0x00; PWM5T1=1; PWM5T2=0; PWM5CR=0x00; 23 //设置 P0.6/P0.7 电平 //设置 P2.1/P2.2/P2.3 电平 //设置 P3.7 电平 //PWM时钟为系统时钟/12 //设置 PWM周期 //PWM2 输出到 P3.7 //PWM3 输出到 P2.1 //PWM4 输出到 P2.2 //PWM5 输出到 P2.3山东省高校第五届机器人大赛技术报告 PWM6T1=1; PWM6T2=0; PWM6CR=0x08; PWM7T1=1; PWM7T2=0; PWM7CR=0x08; PWMCFG=0x00; PWMCR=0x3f; PWMCR|=0x80; P_SW2&=~0x80; } void PWM2_SetPwmWide(unsigned short Wide) { if(Wide==0) { PWMCR&=~0x01; PWM2=0; } else if(Wide==CYCLE) { PWMCR&=~0x01; PWM2=1; } else { P_SW2|=0x80; PWM2T1=Wide; P_SW2&=~0x80; PWMCR|=0x01; } } void PWM3_SetPwmWide(unsigned short Wide) { if(Wide==0) { PWMCR&=~0x02; PWM3=0; } else if(Wide==CYCLE) { PWMCR&=~0x02; 24 //PWM6 输出到 P0.7 //PWM7 输出到 P0.6 //配置 PWM的输出初始电平 //使能 PWM信号输出 //使能 PWM模块山东省高校第五届机器人大赛技术报告 PWM3=1; } else { P_SW2|=0x80; PWM3T1=Wide; P_SW2&=~0x80; PWMCR|=0x02; } } void PWM4_SetPwmWide(unsigned short Wide) { if(Wide==0) { PWMCR&=~0x04; PWM4=0; } else if(Wide==CYCLE) { PWMCR&=~0x04; PWM4=1; } else { P_SW2|=0x80; PWM4T1=Wide; P_SW2&=~0x80; PWMCR|=0x04; } } void PWM5_SetPwmWide(unsigned short Wide) { if(Wide==0) { PWMCR&=~0x08; PWM5=0; } else if(Wide==CYCLE) { PWMCR&=~0x08; PWM5=1; } 25山东省高校第五届机器人大赛技术报告 else { P_SW2|=0x80; PWM5T1=Wide; P_SW2&=~0x80; PWMCR|=0x08; } } void PWM6_SetPwmWide(unsigned short Wide) { if(Wide==0) { PWMCR&=~0x10; PWM6=0; } else if(Wide==CYCLE) { PWMCR&=~0x10; PWM6=1; } else { P_SW2|=0x80; PWM6T1=Wide; P_SW2&=~0x80; PWMCR|=0x10; } } void PWM7_SetPwmWide(unsigned short Wide) { if(Wide==0) { PWMCR&=~0x20; PWM7=0; } else if(Wide==CYCLE) { PWMCR&=~0x20; PWM7=1; } else { 26山东省高校第五届机器人大赛技术报告 P_SW2|=0x80; PWM7T1=Wide; P_SW2&=~0x80; PWMCR|=0x20; } } |
|
相关推荐
1个回答
|
|
花钱吧
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
464 浏览 0 评论
643 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
942 浏览 0 评论
1028 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
724 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12043 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 08:13 , Processed in 0.523638 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号