




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* 硬件连接*/#include#include #define Sevro_moto_pwm P2_7 /接舵机信号端输入PWM信号调节速度#define ECHO P2_4 /超声波接口定义#define TRIG P2_5 /超声波接口定义#define Left_moto_go P1_0=1,P1_1=0,P1_2=1,P1_3=0; /左边两个电机向前走#define Left_moto_back P1_0=0,P1_1=1,P1_2=0,P1_3=1; /左边两个电机向后转#define Left_moto_Stop P1_0=0,P1_1=0,P1_2=0,P1_3=0; /左边两个电机停转 #define Right_moto_go P1_4=1,P1_5=0,P1_6=1,P1_7=0;/右边两个电机向前走#define Right_moto_back P1_4=0,P1_5=1,P1_6=0,P1_7=1;/右边两个电机向前走#define Right_moto_Stop P1_4=0,P1_5=0,P1_6=0,P1_7=0;/右边两个电机停转 unsigned char const discode = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/;unsigned char const positon3= 0xfe,0xfd,0xfb;unsigned char disbuff4 = 0,0,0,0,; unsigned char posit=0; unsigned char pwm_val_left = 0;/变量定义unsigned char push_val_left =14;/舵机归中,产生约,1.5MS 信号 unsigned long S=0;unsigned long S1=0;unsigned long S2=0;unsigned long S3=0;unsigned long S4=0;unsigned int time=0; /时间变量unsigned int timer=0;/延时基准变量unsigned char timer1=0;/扫描时间变量/*/ void delay(unsigned int k) /延时函数 unsigned int x,y; for(x=0;xk;x+) for(y=0;y=3) posit=0;/*/ void StartModule() /启动测距信号 TRIG=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TRIG=0; /*/ void Conut(void) /计算距离 while(!ECHO); /当RX为零时等待 TR0=1; /开启计数 while(ECHO); /当RX为1计数并等待 TR0=0; /关闭计数 time=TH0*256+TL0; /读取脉宽长度 TH0=0; TL0=0; S=(time*1.7)/100; /算出来是CM disbuff0=S%1000/100; /更新显示 disbuff1=S%1000%100/10; disbuff2=S%1000%10 %10;/*/前速前进 void run(void) Left_moto_go ; /左电机往前走 Right_moto_go ; /右电机往前走/*/前速后退 void backrun(void) Left_moto_back ; /左电机往前走 Right_moto_back ; /右电机往前走/*/左转 void leftrun(void) Left_moto_back ; /左电机往前走 Right_moto_go ; /右电机往前走/*/右转 void rightrun(void) Left_moto_go ; /左电机往前走 Right_moto_back ; /右电机往前走/*/STOP void stoprun(void) Left_moto_Stop ; /左电机停走 Right_moto_Stop ; /右电机停走/*/ void COMM( void ) push_val_left=5; /舵机向左转90度 timer=0; while(timer=4000); /延时400MS让舵机转到其位置 StartModule(); /启动超声波测距 Conut(); /计算距离 S2=S; push_val_left=23; /舵机向右转90度 timer=0; while(timer=4000); /延时400MS让舵机转到其位置 StartModule(); /启动超声波测距 Conut(); /计算距离 S4=S; push_val_left=14; /舵机归中 timer=0; while(timer=4000); /延时400MS让舵机转到其位置 StartModule(); /启动超声波测距 Conut(); /计算距离 S1=S; if(S220)|(S420) /只要左右各有距离小于,20CM小车后退 backrun(); /后退 timer=0; while(timerS4) rightrun(); /车的左边比车的右边距离小右转 timer=0; while(timer=4000); else leftrun();/车的左边比车的右边距离大左转 timer=0; while(timer=4000); /*/* PWM调制电机转速 */*/* 左电机调速 */*调节push_val_left的值改变电机转速,占空比 */void pwm_Servomoto(void) if(pwm_val_left=200)pwm_val_left=0; /*/*TIMER1中断服务子函数产生PWM信号*/ void time1()interrupt 3 using 2 TH1=(65536-100)/256; /100US定时 TL1=(65536-100)%256; timer+; /定时器100US为准。在这个基础上延时 pwm_val_left+; pwm_Servomoto(); timer1+; /2MS扫一次数码管 if(timer1=20) timer1=0; Display(); /*/*TIMER0中断服务子函数产生PWM信号*/ void timer0()interrupt 1 using 0 /*/void main(void)TMOD=0X11;TH1=(65536-100)/256; /100US定时TL1=(65536-100)%256;TH0=0;TL0=0; TR1= 1;ET1= 1;ET0= 1;EA = 1;d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年生态循环农业技术模式与经济效益互动关系实证分析报告
- 2026届四川广元天立学校高一化学第一学期期中统考模拟试题含解析
- 现代管理学课件升学教育
- 现代教育原理课件
- 2025年春季初级经济师职业资格考试 经济基础知识考前冲刺押题模拟试题试卷
- 吉林省通榆县第一中2026届化学高一上期末联考试题含解析
- 2025年注册会计师(CPA)考试 会计科目实战演练全真试卷
- 2025年注册会计师(CPA)考试 会计科目全真模拟试卷答案精讲版
- 2025年小学数学毕业升学考试易错题型深度解析模拟试卷
- 测量员的岗位职责
- 《工业机器人技术与应用》高职人工智能技术应用专业全套教学课件
- 院前急救质控标准
- 【公开课】乙醇++说课课件+-2024-2025学年高一下学期化学人教版(2019)必修第二册
- 厦门垃圾分类题目及答案
- 数字人文资源本体建模-洞察及研究
- 2025年新高考1卷(新课标Ⅰ卷)语文试卷(含答案)
- 捡土豆装车合同协议书
- 超市卫生管理规范培训
- 国际压力性损伤溃疡预防和治疗临床指南(2025年版)解读
- 2025年中国光纤通讯电缆市场调查研究报告
- 薪资抵扣协议书模板
评论
0/150
提交评论