云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 舵机控制详解

舵机控制详解

  • 62 次阅读
  • 3 次下载
  • 2026/4/27 16:24:09

{ pwm=0; TH1=(65536-pwm_value)/256; TL1=(65536-pwm_value)%6; TR1=0; }

void main(void)//主函数 {

// uchar i; InitTimer(); pwm_value=1500; while(1) { if(key1==0) { delay_ms(10); if(key1==0) { pwm_value=value[0]; while(key1==0); } } if(key2==0) { delay_ms(10); if(key2==0) { pwm_value=value[1]; while(key2==0); } } } }

(2)

#include

typedef unsigned int uint; typedef unsigned char uchar;

sbit pwm=P1^0;//输出PWM信号 uchar count=0;

uint pwm_value=1500;//初值为1.5ms uint value[]={1500,1000,1500,2000,1500};

void delay_ms(uint x) { uint i; while(x--) for(i=0;i<125;i++); }

void InitTimer(void) { TMOD=0x11;//开定时器0,1 TH0=(65536-20000)/256;//定时20MS,20MS为一个周期 TL0=(65536-20000)%6; TH1=(65536-1500)/256;//定时1.5MS,这时舵机处于0度 TL1=(65536-1500)%6; EA=1;//开总断 TR0=1;//开定时器0 ET0=1; TR1=1;//开定时器1 ET1=1; }

void timer0(void) interrupt 1//定时器0中断函数 { pwm=1; TH0=(65536-20000)/256;//定时20MS,20MS为一个周期 TL0=(65536-20000)%6; TR1=1; count++; }

void timer1(void) interrupt 3//定时器1中断函数 { pwm=0; TH1=(65536-pwm_value)/256; TL1=(65536-pwm_value)%6; TR1=0; }

void main(void)//主函数 { uchar i; InitTimer(); pwm_value=1500; while(1) { for(i=0;i<5;i++) { pwm_value=value[i];//通过数组就可以改变舵机的转角度

delay_ms(5000); } } }

(3)按键控制两路舵机 #include

typedef unsigned int uint; typedef unsigned char uchar; sbit jj=P1^0;//输出PWM信号 sbit sj=P1^1;

uint temp0,temp1,temp2,temp3; uchar count=0; uchar s=0; uchar m=0;

uint pwm_value=1500;//初值为1.5ms sbit key1=P0^0; sbit key2=P0^1;

uint value[]={1200,1800,2500,2000}; void delay_ms(uint x) { uint i; while(x--) for(i=0;i<125;i++); }

void InitTimer(void) { TMOD=0x01;//开定时器0,1 TH0=(65536-500)/256;//定时20MS,20MS为一个周期 TL0=(65536-500)%6; EA=1;//开总断 TR0=1;//开定时器0 ET0=1; }

void timer0(void) interrupt 1//定时器0中断函数 { TH0=(65536-300)/256;//定时20MS,20MS为一个周期 TL0=(65536-300)%6; count++; switch(m) { case 0:

{ } case 1: { } case 2: { } case 3: {

if(count<=4)

{ jj=1; sj=0; } else { jj=0; sj=0; }

break;

if(count<=8) { jj=0; sj=1; } else { jj=0; sj=0; }

break;

if(count<=6) { jj=1; sj=0; } else { jj=0; sj=0; }

break;

if(count<=7)

{ jj=0; sj=1; } else { jj=0; sj=0; } break; } default : break; } if(count==70)count=0; }

void main(void)//主函数 {

// uchar i; InitTimer();

// pwm_value=1500; while(1) { if(key1==0) { delay_ms(10); if(key1==0) { m++; if(m==5)m=0; while(key1==0); } } } }

搜索更多关于: 舵机控制详解 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

{ pwm=0; TH1=(65536-pwm_value)/256; TL1=(65536-pwm_value)%6; TR1=0; } void main(void)//主函数 { // uchar i; InitTimer(); pwm_value=1500; while(1) { if(key1==0) { delay_ms(10); if(key1==0) { pwm_value=value[0]; while(key1==0); } } if(key2==0) { delay_ms(10); if(key2==0) { pwm_value=value[1]; while(key2==0); } } } }

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com