标题:
两路循迹,多多担待
[打印本页]
作者:
bing115
时间:
2018-8-1 12:02
标题:
两路循迹,多多担待
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//**********定义电机的方向*********//
#define left_qian IN1=0;IN2=1 //左边电机前进方向
#define left_hou IN1=1;IN2=0 //左边电机后退方向
#define right_qian IN3=1;IN4=0 //右边电机前进方向
#define right_hou IN4=1;IN3=0 //右边电机后退方向
/********循迹传感器端口定义*****/
/* 传感器位置 */
/* 左0 右0 */
/* P25 P24 */
/******************************/
sbit left_0=P2^5; //左边信号
sbit right_0=P2^4; //右边信号
/*******电机驱动模块端口定义*****/
sbit ENA=P0^0; //左边电机使能
sbit IN1=P0^1; //左边电机方向控制
sbit IN2=P0^2; //左边电机方向控制
sbit ENB=P0^5; //右边电机使能
sbit IN3=P0^7; //右边电机方向控制
sbit IN4=P0^6; //右边电机方向控制
uchar zkb_l=0; //左边电机占空比
uchar zkb_r=0; //右边电机占空比
uchar t=0; //定时器中断计数器
void init_time0()
{
TMOD=0x01; //方式1 16位计数器
TH0=(65536-100)/256;
TL0=(65536-100)%256;
ET0=1; //定时器0中断允许位
TR0=1; //定时器0运行控制位
}
void time0() interrupt 1
{
TH0=0xff;
TL0=0x9c;
if(t<zkb_l)ENA=1;
else ENA=0;
if(t<zkb_r)ENB=1;
else ENB=0;
t++;
if(t>=100)t=0;
}
void xunji()
{
if((left_0==0)&&(right_0==1))
{
zkb_l=30;
zkb_r=100;
left_hou;
right_qian;
}
else if((left_0==1)&&(right_0==1)) //直行
{
zkb_l=70; //左边占空比70%
zkb_r=70; //右边占空比70%
left_qian; //左边电机前进
right_qian; //右边电机前进
}
else if((left_0==1)&&(right_0==0))
{
zkb_l=100;
zkb_r=30;
left_qian;
right_hou;
}
}
void main()
{
init_time0();
EA=1;
while(1)
{
xunji();
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1