预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

DG-S8110E舵机 l#include<reg52.h> l#defineuintunsignedint l#defineucharunsignedchar lsbitzhuan=P1^1; l//uintk=0,run=1000,motor; lvoidinit(void) l{ lTMOD=0x01;//T1为方式0定时器T0为方式1定时器 lTH0=0XB1;//20ms lTL0=0XE0; lEA=1;//开总中断 lET0=1;//开定时器中断 lTR0=1;//打开定时器 l} lvoiddelay(void) l{ luchara,c; luintb; lfor(c=1;c>0;c--) lfor(b=50;b>0;b--)//b=142假设参考b=190~35为180°可调 lfor(a=2;a>0;a--); l} lvoidmain() l{ linit(); lwhile(1); l} lvoidtemp()interrupt1 l{ l//20ms小舵机20ms正转30ms反转大舵机20ms转 l//TH0=0XB1; l//TL0=0XE0; lTH0=(65536-2000)/256; lTL0=(65536-2000)%256; lzhuan=1; ldelay(); lzhuan=0; l} l#include<reg52.h> l#defineucharunsignedchar l#defineuintunsignedint l//#defineTURE1 lucharcodeMOTO[4]={0x33,0xa6,0xcc,0x59};//四步 {0x00,0x00,0x00,0x00}; lucharstatus=0; lvoiddelay(void) l{ lunsignedinti; lfor(i=0;i<=70;i++);//450//70全开130全关(6v) l} l/*voidfanzhuan(void)//反转 l{ lstatus--; lif(status==255) l{status=3;} lstatus%=4; lP0=MOTO[status]; ldelay(); l}*/ lvoidzhengzhuan(void)//正转 l{ lstatus++; lstatus%=4;//4 lP0=MOTO[status]; ldelay(); l} lvoidmain(void) l{ lP0=MOTO[status]; lwhile(1) l{ lzhengzhuan(); l} l} l#include<Servo.h>//打开舵机库 lServomyservo;//创建控制对象(最多可创建8个) lintpos=30;//设置变量初始角度 lvoidsetup() l{ lmyservo.attach(9);//定义数字I/O9口 l} lvoidloop() l{ lfor(pos=30;pos<100;pos+=1)//从30到100度手臂小舵机张开 l{//每步加1度 lmyservo.write(pos);//确定伺服变量的位置 ldelay(15);//此位置15ms延时 l} lfor(pos=100;pos>=30;pos-=1)//从100到30度手臂小舵机收紧 l{ lmyservo.write(pos);//确定伺服变量的位置delay(15); //此位置15ms延时 l} l}