寻迹小车

编程入门 行业动态 更新时间:2024-10-28 16:23:53

寻迹<a href=https://www.elefans.com/category/jswz/34/1766934.html style=小车"/>

寻迹小车

#include <reg52.h>/*电机驱动信号引脚定义*/
sbit IN1=P2^7;
sbit IN2=P2^6;
//sbit ENA=P2^5;
sbit IN3=P2^4;
sbit IN4=P2^3;
//sbit ENB=P2^2;/*光电对管输入信号引脚定义*/
sbit left1=P0^0;
sbit left2=P0^1;
sbit right1=P0^2;
sbit right2=P0^3;/*电机PWM信号输出引脚定义*/
sbit left_moto_pwm=P2^5;
sbit right_moto_pwm=P2^2;/*附加引脚定义*/
sbit z=P1^1;//声控非接触式启动
sbit f=P1^2;//蜂鸣器
sbit b=P0^4;//红外避障识别/*电机运动简便定义*/
#define left_moto_go {IN1=1,IN2=0;}
#define left_moto_back {IN1=0,IN2=1;}
#define right_moto_go {IN3=0,IN4=1;}
#define right_moto_back {IN3=1,IN4=0;}/*相关变量定义*/
unsigned char pwm_val_left=0;//valid
unsigned char push_val_left=0;
unsigned char pwm_val_right=0;
unsigned char push_val_right=0;/*延时函数*/
void delay(unsigned int k)
{
unsigned int x,y;
for(x=0;x<k;x++);
for(y=0;y<110;y++);
}/*电机控制函数*/
void run(void)
{push_val_left=20;
push_val_right=20;
left_moto_go;
right_moto_go;}//直行void stop(void)
{push_val_left=0;
push_val_right=0;
left_moto_go;
right_moto_go;}//停止void leftturn1(void)
{
push_val_left=10;
push_val_right=15;
left_moto_back;
right_moto_go;}//小左转void rightturn1(void)
{ push_val_left=15;
push_val_right=10;
left_moto_go;
right_moto_back;}//小右转void leftturn2(void)
{
push_val_left=10;push_val_right=20;
left_moto_back;
right_moto_go;}//大左转void rightturn2(void)
{
push_val_left=20;
push_val_right=10;
left_moto_go;right_moto_back;}//大右转/*电机PWM生成函数*/
void pwm_out_left_moto(void)
{if(pwm_val_left<=push_val_left)left_moto_pwm=1;
else
left_moto_pwm=0;
if(pwm_val_left>=20)
pwm_val_left=0;
}void pwm_out_right_moto(void)
{
if(pwm_val_right<=push_val_right)
right_moto_pwm=1;
else
right_moto_pwm=0;
if(pwm_val_right>=20)
pwm_val_right=0;}/*定时器中断服务函数*/
void timer0()interrupt 1 using 2   
{
TH0=(65536-92)/256;
TL0=(65536-92)%256;
pwm_val_left++;
pwm_val_right++;
pwm_out_left_moto();
pwm_out_right_moto();}/*蜂鸣器函数*/void fmq(void)
{
f=1;
delay(20);
f=0;}/*运动控制函数*/
void xunji()
{
if(left2==1&&left1==1&&right1==1&&right2==1){
run();delay(1);}//直行if(left2==0&&left1==1&&right1==1&&right2==1){
leftturn1();delay(1);}//小左转if(left2==1&&left1==0&&right1==1&&right2==1){
leftturn2();
delay(1);
}//大左转if(left2==0&&left1==0&&right1==1&&right2==1)
{
leftturn2();
delay(185);
run();delay(100);
}//左转直行if(left2==1&&left1==1&&right1==0&&right2==1){rightturn1();delay(1);
}//小右转if(left2==1&&left1==1&&right1==1&&right2==0){
rightturn2();
delay(1);}//大右转if(left2==1&&left1==1&&right1==0&&right2==0){
rightturn2();delay(185);
run();delay(100);
}//右转直行if(left2==0&&left1==0&&right1==0&&right2==0)
{
stop();fmq();}  //停止if(b==1)
{
fmq();
}//避障
}void main()             {/*定时器初始化*/TMOD=0x01;
TH0=(65536-92)/256;
TL0=(65536-92)%256;
EA=1;
ET0=1;
TR0=1;
if(z==0){
/*循环检测状态*/
while(1){xunji();}}}

更多推荐

寻迹小车

本文发布于:2023-07-27 22:11:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1227550.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小车

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!