
用51控制四驱循迹小车,用的是四路红外线传感器,求中断的PWM控制的程序。
1个回答
展开全部
调节占空比就是调节下面的ZKB1的值,此处是1~1000的范围,要调节此值可以在while里面加点语句。
#include<reg51.h>
typedef unsigned char unchar;
typedef unsigned char unint;
#define V_TH0 0XFF //调节 V_TH0 和V_TL0的值即调节周期
#define V_TL0 0X81
#define V_TMOD 0X01
sbit P1_0 = P1^0;
/************************主函数********************/
unchar ZKB1; //调节
main()
{
//ZKB1=11; /*占空比初始值设定8 18 1ms 32*/
//ZKB2=18; /*占空比初始值设1.5y定*/
init_sys();
while(1)
{ }
}
/******************************************************
*函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/
void init_sys(void) /*系统初始化函数*/
{
/*定时器初始化*/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
ZKB1=20;
// TR0=0;
// ET0=0;
// EA=0;
TR0=1;
ET0=1;
EA=1;
}
/*中断函数*/
void timer0(void) interrupt 1 using 2
{
static unchar click=0; /*中断次数计数器变量*/
TH0=V_TH0; /*恢复定时器初始值*/
TL0=V_TL0;
++click;
if (click>=1000) click=0;
if (click<=ZKB1) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
P1_0=1;
else
P1_0=0;
}
#include<reg51.h>
typedef unsigned char unchar;
typedef unsigned char unint;
#define V_TH0 0XFF //调节 V_TH0 和V_TL0的值即调节周期
#define V_TL0 0X81
#define V_TMOD 0X01
sbit P1_0 = P1^0;
/************************主函数********************/
unchar ZKB1; //调节
main()
{
//ZKB1=11; /*占空比初始值设定8 18 1ms 32*/
//ZKB2=18; /*占空比初始值设1.5y定*/
init_sys();
while(1)
{ }
}
/******************************************************
*函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/
void init_sys(void) /*系统初始化函数*/
{
/*定时器初始化*/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
ZKB1=20;
// TR0=0;
// ET0=0;
// EA=0;
TR0=1;
ET0=1;
EA=1;
}
/*中断函数*/
void timer0(void) interrupt 1 using 2
{
static unchar click=0; /*中断次数计数器变量*/
TH0=V_TH0; /*恢复定时器初始值*/
TL0=V_TL0;
++click;
if (click>=1000) click=0;
if (click<=ZKB1) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
P1_0=1;
else
P1_0=0;
}

2024-09-04 广告
无人机舵机是一种关键的控制组件,它负责调节无人机的姿态和飞行方向。在无人机中,舵机通过接收信号输入,驱动控制面如机翼、尾翼等,从而调整无人机的俯仰、横滚和航向。这种装置具有高精度和快速响应的特点,是实现无人机稳定飞行和精确控制的重要部分。东...
点击进入详情页
本回答由德晟智能提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询