51单片机控制多路舵机.docx

上传人:b****7 文档编号:10719183 上传时间:2023-02-22 格式:DOCX 页数:9 大小:35.20KB
下载 相关 举报
51单片机控制多路舵机.docx_第1页
第1页 / 共9页
51单片机控制多路舵机.docx_第2页
第2页 / 共9页
51单片机控制多路舵机.docx_第3页
第3页 / 共9页
51单片机控制多路舵机.docx_第4页
第4页 / 共9页
51单片机控制多路舵机.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

51单片机控制多路舵机.docx

《51单片机控制多路舵机.docx》由会员分享,可在线阅读,更多相关《51单片机控制多路舵机.docx(9页珍藏版)》请在冰豆网上搜索。

51单片机控制多路舵机.docx

51单片机控制多路舵机

51单片机控制多路舵机

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

该实验例程是实现8个舵机在两个角度之间摆动。

0度和90度

通过该例程,读者要学会分时复用定时器,用1个定时器来产生多路PWM的思想。

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

#include<12c5a.H>//STC12C5A系列单片机

voiddelay(uint16time);//软件延时函数

voidTimer_init();//定时器初始化函数

voidTimer0(uint32us);//定时器0定时函数

 

uint16pos[2][9]={//上一节中控制一个舵机这里只需要两个数。

sbitpwm9=P3^4;

sbitpwm8=P0^5;

sbitpwm7=P0^6;

sbitpwm6=P0^7;

sbitpwm5=P4^6;

sbitpwm4=P4^1;

sbitpwm3=P4^5;

sbitpwm2=P4^4;

sbitpwm1=P2^7;

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

函数名:

main()

功能:

入口函数

备注:

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

voidmain()

{

uint8i=0;

P0M1=0;//设置P口为强推免输出模式,下同

P0M0=0XFF;

P1M1=0;

P1M0=0XFF;

P2M1=0;

P2M0=0XFF;

P3M1=0;

P3M0=0XFF;

P4M1=0;

P4M0=0XFF;

P5M1=0;

P5M0=0XFF;

P4SW|=0X70;

 

Timer_init();//定时器初始化

Timer0(31);//通过一个定时值进入定时循环

 

while

(1)

{

for(i=1;i<9;i++)//pos[0]位置

pwm[i]=pos[0][i];

delay(1000);

for(i=1;i<9;i++)//pos[1]位置

pwm[i]=pos[1][i];

delay(1000);//舵机在两个角度之间摆动

}

}

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

函数名:

delay(uint16time)

功能:

软件延时函数

参数:

time定时值,其大小与延时长短成正比

备注:

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

voiddelay(uint16time)

{

uint16i;

uint16j;

for(i=0;i<1000;i++)

for(j=0;j

}

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

函数名:

timer_init()

功能:

定时器初始化函数

备注:

1T

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

voidTimer_init()

{

EA=1;//开总中断

AUXR|=0xC0;//T0,T1工作在1T

TMOD|=0x11;//T0工作在方式1,16位

ET0=1;//开定时器0中断

}

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

函数名:

timer0(uint32us)

功能:

定时器0定时函数

参数:

us,毫秒。

精确定时。

备注:

晶振12M,工作模式1T

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

voidTimer0(uint32us)

{

uint32valu;

valu=us*12;//工作在1T,最大定时时间2700us

valu=valu;

valu=0xffff-valu;//

TH0=valu>>8;

TL0=(valu<<8)>>8;

TR0=1;//T0开始工作

}

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

函数名:

T0zd(void)interrupt1

功能:

定时器0中断函数

备注:

控制8个舵机

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

voidT0zd(void)interrupt1

{

staticuint8i=1;

switch(i)//

{

case1:

{

pwm1=1;

Timer0(pwm[1]);//定时

}break;

case2:

{

pwm1=0;//pwm1变低

Timer0(2500-pwm[1]);//定时

}break;

case3:

{

pwm2=1;//pwm2变高

Timer0(pwm[2]);//定时时常为pwm[2]

}break;

case4:

{

pwm2=0;//pwm2变低

Timer0(2500-pwm[2]);//定时时常为pwm[2]

}break;

case5:

{

pwm3=1;//pwm3变高

Timer0(pwm[3]);//定时时常为pwm[3]

}break;

case6:

{

pwm3=0;//pwm3变低

Timer0(2500-pwm[3]);//定时

}break;

case7:

{

pwm4=1;//pwm4变高

Timer0(pwm[4]);//定时

}break;

case8:

{

pwm4=0;//pwm4变低

Timer0(2500-pwm[4]);//定时

}break;

case9:

{

pwm5=1;//pwm5变高

Timer0(pwm[5]);//定时

}break;

case10:

{

pwm5=0;//pwm5变低

Timer0(2500-pwm[5]);//定时

}break;

case11:

{

pwm6=1;//pwm6变高

Timer0(pwm[6]);//定时

}break;

case12:

{

pwm6=0;//pwm6变低

Timer0(2500-pwm[6]);//定时

}break;

case13:

{

pwm7=1;//pwm7变高

Timer0(pwm[7]);//定时

}break;

case14:

{

pwm7=0;//pwm7变低

Timer0(2500-pwm[7]);//定时

}break;

case15:

{

pwm8=1;//pwm8变高

Timer0(pwm[8]);//定时

}break;

case16:

{

pwm8=0;//pwm8变低

Timer0(2500-pwm[8]);//定时

i=0;

}break;

default:

break;

}

i++;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1