1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
小車循跡程序
[打印本頁]
作者:
王朝翔
時間:
2018-6-9 16:18
標題:
小車循跡程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char zkb1=0; // 左電機占空比
unsigned char zkb2=0; //右電機占空比
unsigned char t=0; //
sbit LSEN=P2^0; // 左紅外對管io2.0
sbit MSEN=P2^1; // 中紅外對管io2.1
sbit RSEN=P2^2; // 右紅外對管io2.2
sbit IN1=P1^0; //L298Nin1口對51IO1.0口
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
//初始化定時器 中斷
void init()
{
TMOD=0x01; // 定時器工作在方式一
TH0=(65536-2000)/256; //定時2ms
TL0=(65536-2000)%256;
EA=1; //打開總中斷
ET0=1; //打開定時器中斷
TR0=1; //使用TCON寄存器,TR0 = 1
}
//中斷函數 加 脈寬調制
void timer0() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
if(t>zkb1) //大于左電機占空比
IN1=0; //in1關閉
else
IN1=1; //否則in1打開
if(t>zkb2) //小于右電機占空比
IN3=0;
else
IN3=1;
t++;
if(t>=20) //20就是這個周期
{
t=0;
}
}
//前進模塊
void qianjin()
{
zkb1=10;
zkb2=10;
}
//左轉函數
void turn_left()
{
zkb1=0;
zkb2=10; //右電機轉速大于左電機
}
//右轉函數
void turn_right()
{
zkb1=10; //左電機轉速大于右電機
zkb2=0;
}
//循跡函數
void xunji()
{
uchar flag;
if((RSEN==0)&&(MSEN==1)&&(LSEN==0))
{
flag=0;
}
//左轉函數
else if((RSEN==0)&&(MSEN==0)&&(LSEN==1))
{
flag=1;
}
//右轉函數
else if ((RSEN==1)&&(MSEN==0)&&(LSEN==0))
{
flag=2;
}
switch (flag)
{
case 0:
qianjin();
break;
case 1:
turn_right();
break;
case 2:
turn_left();
break;
default:
break;
}
}
//主程序
void main()
{
init();
zkb1=10;
zkb2=10;
while(1)
{
//給電機加啟動程序
IN1=1;
IN2=0;
IN3=1;
IN4=0;
while(1)
{
xunji(); //循跡
}
}
}
作者:
高翔宇
時間:
2018-6-11 17:43
謝謝樓主
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1