完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uint unsigned int ***it ctr3=P0^6; //分时发射1 左边 ***it ctr2=P0^4; //分时发射2 中间 ***it ctr1=P0^5; //分时发射3 右边 ***it out=P1^6; //激光接收管 信号端 ***it hi=P2^6; ***it f=P0^7; //蜂鸣器 ***it pwm1=P2^0; //舵机1 ***it pwm2=P2^4; //舵机2 ***it pwm3=P3^5; //舵机3 ***it pwm4=P3^7; //舵机4 ***it pwm5=P1^6; //舵机5 ***it pwm6=P1^7; //舵机6 char d,e,d1,p; unsigned int a,b,c;//a是右边的,c是左边的,b是中间的 unsigned int set,m,angle; //set为舵机,电机转角标志位,angle为舵机打角 unsigned int angle1,angle2;//angle1,angle2为电机PWM变化打角 unsigned int aa,bb,cc,dd,ee,ff,aaa,bbb,ccc,ddd,eee,fff;//angle1,angle2为电机PWM变化打角 unsigned int a1,a2,a3,a4,a5;//angle1,angle2为电机PWM变化打角 void delay(uint); //延时函数 void pwmctr( );//电机打角函数 void anglectr( );//舵机打角函数 void angles(); /****中断初始化 */ void time0_Init() { TMOD=0X01; IE=0X82; TH0=(65536-130)/256; TL0=(65536-130)%256; TR0=1; } void main() { f=0;//关闭蜂鸣器 a=0; b=0; c=0; set=0; angle=62; //中值 angle1=62; //电机控制 angle2=200; Time0_Init(); aa=30;//左上 bb=30;//左下 ff=30;//左底 // cc=30 ;//右上 dd=30;// 右下 ee=30 ;//右底 // for(;;) { pwmctr( ); anglectr( ); angles( ); } } void angles( ) { if(a5>0){ a5=0; if(aa==aaa) aa=aaa; else if(aa if(bb==bbb) bb=bbb; else if(bb if(cc==ccc) cc=ccc; else if(cc if(dd==ddd) dd=ddd; else if(dd if(ee==eee) ee=eee; else if(ee if(ff==fff) ff=fff; else if(ff } } void anglectr( ) { if(a1>2) a2++,a5++,a1=0; if(a2>240) a2=30; if(a2<40){ aaa=30;//左上 bbb=30;//左下 fff=30;//左底 // ccc=30 ;//右上 ddd=30;// 右下 eee=30 ;//右底 // } //==================== if(a2>40&&a2<80){ if(a2>70)aaa=37;//左上 if(a2<50){ fff=21;//左底 // bbb=32;//左下 eee=40 ;//右底 // } if(a2>55){ bbb=32;//左下 ccc=30 ;//右上 ddd=35;// 右下 eee=25 ;//右底 // } } //==================== if(a2>80&&a2<120){ if(a2>110)aaa=37;//左上 if(a2<90){ ccc=37 ;//右上 //eee=40;//右底 // } if(a2>95){ fff=29;//左底 // bbb=31;//左下 //ccc=30 ;//右上 ddd=28;// 右下 eee=30 ;//右底 // } } //==================== if(a2>120&&a2<160){ if(a2>150){aaa=25;//左上 ccc=22 ;//右上 } if(a2<130){ fff=18;//左底 // bbb=32;//左下 eee=36;//右底 // } if(a2>135){ bbb=24;//左下 fff=31;//左底 // ddd=29;// 右下 //eee=30 ;//右底 // } } //=---------------------=================== if(a2>160&&a2<230){ if(a2<170){ eee=23 ;//右底 // ddd=25;// 右下 } if(a2>170&&a2<185){ bbb=31;//左下 fff=22;//左底 // } if(a2>185&&a2<200){ ddd=38;// 右下 eee=23 ;//右底 // } if(a2>200){aaa=35;//左上 ccc=35 ;//右上 } if(a2>220){ ddd=31;// 右下 eee=35 ;//右底 // bbb=38;//左下 fff=30;//左底 // } /* if(a2>230){ bbb=28;//左下 ddd=28;// 右下 eee=30 ;//右底 // } */ } //=---------------------=================== if(a2>230){ aaa=30;//左上 bbb=30;//左下 fff=30;//左底 // ccc=30 ;//右上 ddd=30;// 右下 eee=30 ;//右底 // } /* */ } void pwmctr( ) //电机控制 { if(set else pwm1=0; //------------------------------ if(set else pwm2=0; //------------------------------ if(set else pwm3=0; //------------------------------ if(set pwm4=1; else pwm4=0; //------------------------------ if(set else pwm5=0; //------------------------------ if(set else pwm6=0; //------------------------------ } void delay(uint x) { uint i,j; for(i=x;i>0;i--) for(j=12;j>0;j--); } void T0_time()interrupt 1 //中断 { TH0=(65536-130)/256; //频率为100HZ,周期20MS TL0=(65536-130)%256; if(set==100) a1++; set++; if(set>400) set=0; //电机2PWM |
|
相关推荐
3个回答
|
|
没有看明白是什么回事
|
|
|
|
楼主出来解说一下吧
|
|
|
|
谢谢楼主的无私分享啊吖啊啊
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
460 浏览 0 评论
【敏矽微ME32G070开发板免费体验】+ADC测试与LED点亮
418 浏览 0 评论
飞凌嵌入式-ELFBOARD ELF 2的硬件知识分享--核心板
352 浏览 0 评论
【敏矽微ME32G070开发板免费体验】\\+Lora通信终端产品开发项目
514 浏览 0 评论
1576 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11970 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 19:16 , Processed in 0.666017 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号