/*****************************************************************************
* *
*项目:基于51单片机的四路红外循迹小车设计 *
* *
*创建人: 小彬 *
* *
*最后一次修改:2015年5月 *
* *
* *
*关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为1KHZ,这样定时中断次数 *
*设定为C=10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样*
*可以设定占空比可从1-100变化。即0.01ms*100=1ms *
******************************************************************************/
#include <REGX52.H>
#define uchar unsigned char
#define uint unsigned int
/*****************************************************************************
* TH0和TL0是计数器0的高8位和低8位计数器,计算办法:TL0=(65536-C)%256; *
* TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器*
* 工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时 *
* 间为1ms*65536=65.536ms *
******************************************************************************/
#define V_TH0 0XFF
#define V_TL0 0XF6
#define V_TMOD 0X01
sbit D1_right2=P2^0; // 红外模块接口 低电平有效
sbit D2_right1=P2^1;
sbit D3_left1=P2^2;
sbit D4_left2=P2^3;
sbit IN1=P1^0; //L298N电机驱动模块接口
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit ENA=P1^4;
sbit ENB=P1^5;
unsigned char ZKB1,ZKB2;
/******************************************************
*函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/
void init_sys(void) /*系统初始化函数*/
{
/*定时器初始化*/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
TR0=1;
ET0=1;
EA=1;
}
//延时
/*void Delay5Ms(void)
{
unsigned int TempCyc = 1000;
while(TempCyc--);
} */
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
void qianjin()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
ZKB1=72; /*占空比初始值设定 左轮*/
ZKB2=80; /*占空比初始值设定 右轮*/
}
/*void turn_left1()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
ZKB1=72;
ZKB2=60;
}
void turn_left2()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
ZKB1=90;
ZKB2=20;
}
void turn_right1()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
ZKB1=60;
ZKB2=75;
}
void turn_right2()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
ZKB1=20;
ZKB2=88;
} */
void go_back()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
ZKB1=25;
ZKB2=25;
}
/*void go_youzhijiao()
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
ZKB1=25;
ZKB2=25;
while((D1_right2==0)&&(D2_right1==0))
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
ZKB1=25;
ZKB2=25;
}
} */
void go_stop()
{
ENA=1;
ENA=1;
}
void jiance()
{
uint i=0;
if((D2_right1==0)&&(D3_left1==0)) {qianjin();}
else if((D2_right1==1)&&(D3_left1==1))
{
go_stop();
delayms(2000);
go_back();
i++;
}
else if(i==1)
{
go_back();
if((D2_right1==1)&&(D3_left1==1))
go_stop();
}
}
/*
void xunji()
{
uchar flag,flg2;
if((D1_right2==0)&&(D2_right1==0)&&(D3_left1==0)&&(D4_left2==0))
{ flag=0; }
else if((D1_right2==0)&&(D2_right1==0)&&(D3_left1==1)&&(D4_left2==0))
{ flag=1;}
else if((D1_right2==0)&&(D2_right1==0)&&(D3_left1==0)&&(D4_left2==1))
{ flag=2;}
else if((D1_right2==0)&&(D2_right1==1)&&(D3_left1==0)&&(D4_left2==0))
{ flag=3; }
else if((D1_right2==1)&&(D2_right1==0)&&(D3_left1==0)&&(D4_left2==0))
{ flag=4; }
else if((D1_right2==1)&&(D2_right1==1)&&(D3_left1==1)&&(D4_left2==1))//第一个十字选择
{ flag=5; flg2=1;}
else if((D1_right2==1)&&(D2_right1==1)&&(D3_left1==1)&&(D4_left2==1))//第二个十字选择
{ flag=6;flg2++; }
else if((D1_right2==1)&&(D2_right1==1)&&(D3_left1==1)&&(D4_left2==1))//T型选择
{ flag=7;flg2++; }
else {flag=8;}
switch (flag)
{
case 0:qianjin();
break;
case 1:turn_left1();
break;
case 2:turn_left2();
break;
case 3:turn_right1();
break;
case 4:turn_right2();
break;
case 5:go_youzhijiao();
break;
case 6:go_youzhijiao();
break;
case 7:go_youzhijiao();
break;
case 8:qianjin();
break;
default: break;
}
}
*/
void main (void)
{
init_sys();
while(1)
{
jiance() ;
/*对占空比值限定范围*/
if (ZKB1>99) ZKB1=1;
if (ZKB1<1) ZKB1=99;
}
}
/*中断函数*/
void timer0(void) interrupt 1 using 2
{
static uchar click=0; /*中断次数计数器变量*/
TH0=V_TH0; /*恢复定时器初始值*/
TL0=V_TL0;
++click;
if (click>=100) click=0;
if (click<=ZKB1) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
ENA=0;
else
ENA=1;
if (click<=ZKB2)
ENB=0;
else
ENB=1;
}
四路红外循迹程序
需积分: 42 44 浏览量
2015-08-13
10:08:53
上传
评论 3
收藏 30KB ZIP 举报
slow-rain
- 粉丝: 0
- 资源: 8
最新资源
- 《CKA/CKAD应试指南/从docker到kubernetes 完全攻略》学习笔记 第1章docker基础(1.1-1.4)
- 基于python实现的水下压缩空气储能互补系统建模仿真与经济效益分析+源代码+论文
- 华中科技大学-自然语言处理实验,Bi-LSTM+CRF的中文分词框架,并且利用基于深度学习的方法进行中文命名实体识别++源码报告
- 基于动态罚函数的铁路车流分配与径路优化模型python源码
- 鱼群算法求解组环问题python源码+文档说明
- 基于决策优化的多波束测深测线规划模型MATLAB代码
- 课程设计-基于python实现的多目标优化算法求解带时间窗的车辆路径规划问题+源代码+文档说明+界面截图+pptx
- 基于通信信号与通信系统的MATLAB仿真源码-课程设计
- 嵌入式-信号机制(概念,发送,定时,捕捉,SIGCHLD 信号实现回收子进程)
- c语言管理系统大一大二笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈