51单片机控制多路舵机Word文件下载.docx

上传人:b****2 文档编号:3889653 上传时间:2023-05-02 格式:DOCX 页数:9 大小:15.53KB
下载 相关 举报
51单片机控制多路舵机Word文件下载.docx_第1页
第1页 / 共9页
51单片机控制多路舵机Word文件下载.docx_第2页
第2页 / 共9页
51单片机控制多路舵机Word文件下载.docx_第3页
第3页 / 共9页
51单片机控制多路舵机Word文件下载.docx_第4页
第4页 / 共9页
51单片机控制多路舵机Word文件下载.docx_第5页
第5页 / 共9页
51单片机控制多路舵机Word文件下载.docx_第6页
第6页 / 共9页
51单片机控制多路舵机Word文件下载.docx_第7页
第7页 / 共9页
51单片机控制多路舵机Word文件下载.docx_第8页
第8页 / 共9页
51单片机控制多路舵机Word文件下载.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

51单片机控制多路舵机Word文件下载.docx

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

51单片机控制多路舵机Word文件下载.docx

uint16pwm[9]={1500,1500,1500,1500,1500,1500,1500,1500,1500};

//定时器取定时值从这里取

sbitpwm16=P5^3;

sbitpwm15=P1^5;

sbitpwm14=P1^6;

sbitpwm13=P1^7;

sbitpwm12=P4^3;

sbitpwm11=P3^2;

sbitpwm10=P3^3;

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);

i++)//pos[1]位置

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

//舵机在两个角度之间摆动

}

}

delay(uint16time)

软件延时函数

参数:

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

voiddelay(uint16time)

uint16i;

uint16j;

for(i=0;

1000;

i++)

for(j=0;

j<

time;

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)>

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]);

//定时

case3:

pwm2=1;

//pwm2变高

Timer0(pwm[2]);

//定时时常为pwm[2]

case4:

pwm2=0;

//pwm2变低

Timer0(2500-pwm[2]);

case5:

pwm3=1;

//pwm3变高

Timer0(pwm[3]);

//定时时常为pwm[3]

case6:

pwm3=0;

//pwm3变低

Timer0(2500-pwm[3]);

case7:

pwm4=1;

//pwm4变高

Timer0(pwm[4]);

case8:

pwm4=0;

//pwm4变低

Timer0(2500-pwm[4]);

case9:

pwm5=1;

//pwm5变高

Timer0(pwm[5]);

case10:

pwm5=0;

//pwm5变低

Timer0(2500-pwm[5]);

case11:

pwm6=1;

//pwm6变高

Timer0(pwm[6]);

case12:

pwm6=0;

//pwm6变低

Timer0(2500-pwm[6]);

case13:

pwm7=1;

//pwm7变高

Timer0(pwm[7]);

case14:

pwm7=0;

//pwm7变低

Timer0(2500-pwm[7]);

case15:

pwm8=1;

//pwm8变高

Timer0(pwm[8]);

case16:

pwm8=0;

//pwm8变低

Timer0(2500-pwm[8]);

i=0;

default:

break;

i++;

}

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2