版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include <reg51.h>#include <stdio.h>#define uint unsigned int#define uchar unsigned char/*/ uchar led_data9=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80; uchar circle=0,cir_comp=0,cir_count=0;/设定圈数,实际圈数 uchar turn_count=0; bit end=0; /圈数跑完标志/*/sbit xg0=P10;/左寻轨对管sbit xg1=P11;/中间寻轨对管sbit
2、 xg2=P12;/右寻轨对管sbit xz=P13;/感应挡板对管/*/sbit Q_IN1=P20; /车前左轮控制 sbit Q_IN2=P21;sbit Q_IN3=P22; /车前右轮控制sbit Q_IN4=P23; sbit H_IN1=P24; /车尾左轮控制sbit H_IN2=P25;sbit H_IN3=P26; /车尾右轮控制sbit H_IN4=P27;sbit Q_ENA=P30; /车前左轮使能,PWMsbit Q_ENB=P31; /车前右轮使能,sbit H_ENA=P36; /车尾左轮使能,sbit H_ENB=P37; /车尾右轮使能,/*/#define
3、 stra_q_l 100 /直线行走时,四个轮子占空比调试#define stra_q_r 100#define stra_h_l 100#define stra_h_r 100#define turn_q_l 100 /转弯时四个轮子的占空比调试#define turn_q_r 100#define turn_h_l 100#define turn_h_r 100 #define turnr_time 2900/右转弯时的延时常数#define turnl_time 3000 /左转弯时的延时常数#define dt_time 5800 /原地掉头时延时常数#define over_tim
4、e 1000 /停止延时#define back_time 2500 /走完环形,回到直道延时转弯#define black_time 1500 /过黑线的时间#define correct_l_time 700 /左矫正时间#define correct_r_time 700 /右矫正时间#define hou_time 200/*/ uchar q_duty_l,q_duty_r,h_duty_l,h_duty_r,/车前后左右轮占空比 i=0,j=0,k=0,m=0;/*/ void delay_cir(uint n) uchar x; while(n-) for(x=0; x<2
5、50;x+); ; /*/void delay(uint ct)/ 延时函数 uint t; t=ct; while(t-);/*/void straight() /直走 q_duty_l=stra_q_l; q_duty_r=stra_q_r; h_duty_l=stra_h_l; h_duty_r=stra_h_r; Q_IN1=1; Q_IN2=0; Q_IN3=1; Q_IN4=0; H_IN1=1; H_IN2=0; H_IN3=1; H_IN4=0; /*/void houtui()/后退 q_duty_l=stra_q_l; q_duty_r=stra_q_r; h_duty_l
6、=stra_h_l; h_duty_r=stra_h_r; Q_IN1=0; Q_IN2=1; Q_IN3=0; Q_IN4=1; H_IN1=0; H_IN2=1; H_IN3=0; H_IN4=1; /*/void turn_left()/左转 q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_h_l; h_duty_r=turn_h_r; Q_IN1=0; /左轮反转 Q_IN2=1; H_IN1=0; H_IN2=1; Q_IN3=1; /右轮正转 Q_IN4=0; H_IN3=1; H_IN4=0; delay(turnl_tim
7、e);/*/void turn_right() /右转 q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_q_l; h_duty_r=turn_q_r; Q_IN1=1; /左轮正转 Q_IN2=0; H_IN1=1; H_IN2=0; Q_IN3=0;/右轮反转 Q_IN4=1; H_IN3=0; H_IN4=1; delay(turnr_time);/*/void turn_round() /原地掉头 q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_h_l; h_duty_r=tu
8、rn_h_r; Q_IN1=0; /左轮反转 Q_IN2=1; H_IN1=0; H_IN2=1; Q_IN3=1; /右轮正转 Q_IN4=0; H_IN3=1; H_IN4=0; delay(dt_time);/*/void over() /小车停止 Q_IN1=0; Q_IN2=0; Q_IN3=0; Q_IN4=0; H_IN1=0; H_IN2=0; H_IN3=0; H_IN4=0; /*/void correct_right() /左偏,向右矫正 q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_q_l; h_duty_r=t
9、urn_q_r; Q_IN1=1; /左轮正转 Q_IN2=0; H_IN1=1; H_IN2=0; Q_IN3=0;/右轮反转 Q_IN4=1; H_IN3=0; H_IN4=1; delay(correct_r_time);void correct_left() /右偏,向左矫正 q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_h_l; h_duty_r=turn_h_r; Q_IN1=0; /左轮反转 Q_IN2=1; H_IN1=0; H_IN2=1; Q_IN3=1; /右轮正转 Q_IN4=0; H_IN3=1; H_IN4=
10、0; delay(correct_l_time);/*/void xunji() if(xg1=1) turn_count+;over();delay(over_time);if(turn_count=1)straight(); delay(black_time);elseif(turn_count=2)houtui(); delay(hou_time); turn_left();elseif(turn_count=3)houtui(); delay(hou_time); turn_right();elseif(turn_count=4)houtui(); delay(hou_time); t
11、urn_right();elseif(turn_count=5)straight(); delay(black_time);elseif(turn_count=6)houtui(); delay(hou_time); turn_right();elseif(turn_count=7)houtui(); delay(hou_time); turn_right(); straight(); delay(back_time); turn_left();elseif(turn_count=8)straight(); delay(black_time);elseif(turn_count=9)houtu
12、i(); delay(100); turn_round(); if(turn_count>=9)turn_count=0; cir_count+; circle-;if(cir_count=cir_comp) end=1; over(); delay(500); else if(xg0=0)&&(xg1=0)&&(xg2=0) straight(); else if(xg0=1)&&(xg1=0)&&(xg2=0) over(); delay(over_time); houtui(); delay(hou_time); co
13、rrect_right(); /左偏,向右矫正 else if(xg0=0)&&(xg1=0)&&(xg2=1) over(); delay(over_time); houtui(); delay(hou_time); correct_left(); /右偏,向左矫正 /*/void int0(void) interrupt 0/中断圈数设定 EX0=0; delay_cir(250); circle+; cir_comp+; if(circle>8) circle=0; cir_comp=0; P0=led_datacircle; EX0=1;/*/vo
14、id time1(void) interrupt 3 /T1溢出中断,电机调速 i+; j+; k+; m+; if(i<q_duty_l) Q_ENA=1; else Q_ENA=0; if(i>100) Q_ENA=1;i=0; if(j<q_duty_r) Q_ENB=1; else Q_ENB=0; if(j>100 ) Q_ENB=1;j=0; if(k<h_duty_l) H_ENA=1; else H_ENA=0; if(k>100) H_ENA=1;k=0; if(m<h_duty_r) H_ENB=1; else H_ENB=0; if(m>100) H_ENB=1;m=0; P0=led_datacircle; TH1=0XFF; TL1=0XF6; /*/void mai
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版最高额借款合同模板
- 2025年度货物仓储租赁及管理服务合同
- 2024年装修工程业主专属协议协议版B版
- 2024年跨国公司财务代理合同
- 2024年软件研发项目信息保密协议书版B版
- 二建市政工程实务-二建《市政公用工程管理与实务》深度自测卷2355
- 2024年事业单位教师招聘言语理解与表达题库学生专用
- 2024年七年级上册语文教学总结
- Unit5 Lets eat Part A Lets learn(说课稿)-2024-2025学年人教PEP版英语三年级上册
- 2025年月个人工作总结及计划
- 幼儿园背景研究分析报告
- 围墙维修 施工方案
- 创伤关节骨科年度总结
- 2022-2023学年江苏省盐城第一学期高一期末考试数学试卷及答案解析-普通用卷
- 医师病理知识定期考核试题与答案
- 履约情况证明(共6篇)
- 矿井提升容器课件
- 云南省迪庆藏族自治州各县区乡镇行政村村庄村名居民村民委员会明细
- 《洁净工程项目定额》(征求意见稿)
- 城镇燃气设计规范
- 年零售药店操作规程版
评论
0/150
提交评论