c语言小车程序,循迹小车程序C语言

/****************************************************************************

简单寻迹程序:接法

EN1 EN2 PWM输入端,本程序不输入PWM,直接使插上跳线帽,使能输出,这样就能全速运行

P1_0 P1_1 接IN1 IN2 当 P1_0=1,P1_1=0; 时左上电机正转 左上电机接驱动板子输出端(蓝色端子OUT1 OUT2)

P1_0 P1_1 接IN1 IN2 当 P1_0=0,P1_1=1; 时左上电机反转

P1_0 P1_1 接IN1 IN2 当 P1_0=0,P1_1=0; 时左上电机停转

P1_2 P1_3 接IN3 IN4 当 P1_2=1,P1_3=0; 时左下电机正转 左下电机接驱动板子输出端(蓝色端子OUT3 OUT4)

P1_2 P1_3 接IN3 IN4 当 P1_2=0,P1_3=1; 时左下电机反转

P1_2 P1_3 接IN3 IN4 当 P1_2=0,P1_3=0; 时左下电机停转

P1_4 P1_5 接IN5 IN6 当 P1_4=1,P1_5=0; 时右上电机正转 右上电机接驱动板子输出端(蓝色端子OUT5 OUT6)

P1_4 P1_5 接IN5 IN6 当 P1_4=0,P1_5=1; 时右上电机反转

P1_4 P1_5 接IN5 IN6 当 P1_4=0,P1_5=0; 时右上电机停转

P1_6 P1_7 接IN7 IN8 当 P1_6=1,P1_7=0; 时右下电机正转 右下电机接驱动板子输出端(蓝色端子OUT7 OUT8)

P1_6 P1_7 接IN7 IN8 当 P1_6=0,P1_7=1; 时右下电机反转

P1_6 P1_7 接IN7 IN8 当 P1_6=0,P1_7=0; 时右下电机停转

P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1

P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2

P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3

P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4

四路寻迹传感器有信号(白线)为0 没有信号(黑线)为1

四路寻迹传感器电源+5V GND 取自于单片机板靠近液晶调节对比度的电源输出接口

关于单片机电源:本店驱动模块内带LDO稳压芯片,当电池输入6V时时候可以输出稳定的5V

分别在针脚标+5 与GND 。这个输出电源可以作为单片机系统的供电电源。

****************************************************************************/

#include

#define Left_moto_pwm P3_6 //PWM输出本寻迹小车不用

#define Right_moto_pwm P3_7 //PWM输出本寻迹小车不用

#define Left_1_led P3_2 //P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1

#define Left_2_led P3_3 //P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2

#define Right_1_led P3_4 //P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3

#define Right_2_led P3_5 //P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4

#define Left_moto_go {P1_0=1,P1_1=0,P1_2=1,P1_3=0;} //左边两个电机向前走

#define Left_moto

_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} //左边两个电机向后转

#define Left_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;} //左边两个电机停转

#define Right_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;} //右边两个电机向前走

#define Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} //右边两个电机向前走

#define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} //右边两个电机停转

unsigned char pwm_val_left =0;

unsigned char push_val_left =1;// 左电机占空比10/40

unsigned char pwm_val_right =0;

unsigned char push_val_right=1;// 右电机占空比10/40

bit Right_moto_stop=1;

bit Left_moto_stop =1;

/************************************************************************/

//延时函数

void delay(unsigned int k)

{

unsigned int x,y;

for(x=0;x

for(y=0;y

}

/************************************************************************/

//前速前进

void run(void)

{

//push_val_left =4;

//push_val_right =4;

Left_moto_go ;

Right_moto_go ;

}

/************************************************************************/

/* PWM调制电机转速 */

/************************************************************************/

/* 左电机调速 */

/*调节push_val_left的值改变电机转速,占空比 */

void pwm_out_left_moto(void)

{

if(Left_moto_stop)

{

if(pwm_val_left

Left_moto_pwm=1;

else

Left_moto_pwm=0;

if(pwm_val_left>=10)

pwm_val_left=0;

}

else Left_moto_pwm=0;

}

/******************************************************************/

/* 右电机调速 */

void pwm_out_right_moto(void)

{

if(Right_moto_stop)

{

if(pwm_val_right

Right_moto_pwm=1;

else

Right_moto_pwm=0;

if(pwm_val_right>=10)

pwm_val_right=0;

}

else Right_moto_pwm=0;

}

/***************************************************/

/*TIMER0中断服务子函数*/

void timer0()interrupt 1 using 2

{

TH0=0XF8; //1Ms定时

TL0=0X30;

pwm_val_left++;

pwm_val_right++;

pwm_out_left_moto();

pwm_out_right_moto();

}

/*********************************************************************/

/*--主函数--*/

void main(void)

{

TMOD=0X01;

TH0= 0XF8; //1ms定时

TL0= 0X30;

TR0= 1;

ET0= 1;

EA = 1;

delay(100);

run();

while(1) /*无限循环*/

{

//有信号为0 没有信号为1

if(Left_2_led==0&&Right_1_led==0)

run();

else

{

if(Left_2_led==1&&Right_1_led==0) //右边检测到黑线

{

Left_moto_go; //左边两个电机正转

Right_moto_back; //右边两

个电机反转

}

if(Right_1_led==1&&Left_2_led==0) //左边检测到黑线

{

Right_moto_go; //右边两个电机正转

Left_moto_back; //左边两个电机反式开始转

}

}

}

}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
循迹小车,随着电力电子器件的发展,PWM电压型逆变器在交流变频调速、UPS、电能质量控制器、轻型直流输电换流器等电力电子装置中得到了越来越广泛的应用。PWM电压型逆变器直流侧所需的理想无脉动直流电压源通常通过整流加上大直流电容滤波获得。大直流滤波电容的使用,给装置带来占用空间大、成本高及严重影响电能质量方面的问题。因此,研究如何减小甚至去除逆变器直流侧电容,以及解决因其产生的低次谐波和相关问题,具有十分重要的理论意义和实用价值。本文在综述了国内外在PWM电压型逆变器及各种抑制谐波PWM技术的基础上,对目前工程中应用最广泛的SPWM电压型逆变器的主电路及谐波消除调制技术和相关问题进行了深入研究。50年代末晶闸管标志着电力电子半导体期间的开端。电力电子器件经历了40多年的发展历程[1-2],特别是近30多年内更是得到了迅猛的发展[3,4]。以Th(SCR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值