找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1376|回复: 0
打印 上一主题 下一主题
收起左侧

红外寻迹小车源码

[复制链接]
跳转到指定楼层
楼主
ID:416370 发表于 2019-3-17 15:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#define moto_go    {R_moto1=0,R_moto2=1,    L_moto3=0,L_moto4=1;} //前进


#define moto_left    { R_moto1=0,R_moto2=1,   L_moto3=0,L_moto4=0;} //左转
#define moto_right   {R_moto1=0,R_moto2=0,  L_moto3=0,L_moto4=1;}  //右转
sbit ENA=P1^4;
sbit ENB=P1^2;


sbit hwl=P1^0;  //左红外
sbit hwr=P1^1;   //右红外


sbit R_moto1=P3^0; //IN1
sbit R_moto2=P3^1;//IN2


sbit L_moto3=P3^2; //IN3
sbit L_moto4=P3^3;//IN3





void  run(void)
{
   
  moto_go ;

}
void  turnleft(void)
{
   moto_left;
}  

void  turnright(void)
{
   moto_right;
}  

void Timer0Init()
{
TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

TH0=0XFC; //给定时器赋初值,定时1ms
TL0=0X18;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器   
}
   







void main()
{  run();
Timer0Init();  //定时器0初始化

while(1)
{
if(hwl==0&&hwr==0)  run();
if(hwl==1&&hwr==0) turnleft();  




if(hwl==0&&hw==1) turnright();
  


}
   

}


//调速
void Timer0() interrupt 1
{
static unsigned int i=0;
TH0=0XFC; //给定时器赋初值,定时1ms
TL0=0X18;
i++;
if(i<90) {ENA=1,ENB=1;}
if(i>90&&i<120) {ENA=0,ENB=0;}
if(i==120) i=0;
}




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表