智能车改舵机中值步骤_智能小车舵机控制

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:09   877   0

1

//

只利用一个定时器

T0

,定时时间为

,定义一个角度标识,数值为

1

2

3

4

5

//

实现

1ms

2ms

高电平的输出,再定义一个变量,数值最大为

40

,实现周期为

20ms

//

每次进入定时中断,判断此时的角度标识,进行

//

相应的操作。比如此时为

5

,则进入的前

5

次中断期间,信号输出为高电平,即为

//

高电平。剩下的

35

次中断期间,信号输出为低电平,即为

的低电平。这样总的时间

//

20ms

,为一个周期。

//

51

板上

s1

s2

按键

//

P1^7

输出

PWM

信号控制舵机

#include ""

unsigned char count; //

次数标识

sbit pwm =P1^7 ; //PWM

信号输出

sbit jia =P3^0; //

角度增加按键检测

IO

sbit jan =P3^1; //

角度减少按键检测

IO

sbit jianwei=P3^4; //

按键位

unsigned char jd; //

角度标识

sbit dula=P2^6;

sbit wela=P2^7;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e

void delay(unsigned char i)//

延时

{

unsigned char j,k;

for(j=i;j>0;j--)

for(k=125;k>0;k--);

}

void Time0_Init() //

定时器初始化

{

TMOD = 0x01; //

定时器

0

工作在方式

1

IE= 0x82;

TH0= 0xfe;

TL0= 0x33; //

晶振,

TR0=1; //

定时器开始

}

void Time0_Int() interrupt 1 //

中断程序

{

TH0 = 0xfe; //

重新赋值

TL0 = 0x33;

if(count

判断次数是否小于角度标识

pwm=1; //

确实小于,

PWM

输出高电平

else

pwm=0; //

大于则输出低电平

count=(count+1); //

次数加

1

count=count%40; //

次数始终保持为

40

即保持周期为

20ms

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP