文档详情

舵机控制八路伺服电机.doc

发布:2015-09-23约3.32千字共5页下载文档
文本预览下载声明
控制八路伺服电机。J6,J7,J8,J10,J11,J12插座为1~6路,P1.3,P1.4为7~8路。 注意:伺服电机数据线是I/O-VCC-GND Chip type : AT89S52 Clock frequency : 24MHz */ /********************************************************************************/ #include reg52.h #define delay_time 0xcbeb //定义延时常量 sbit P2_3=P2^3; //以下常量对应的角度(n为负) n90 n45 0 45 90 unsigned int loc_angle[5]={0x014d,0x029B,0x04e8,0x0535,0x0683}; unsigned int delay_timel,delay_timeh; //低电平延时时间,高电平延时时间 unsigned char pwm_number=0; //脉冲数 unsigned char pwm_outword=1; //输出命令 void delay_1ms() //1毫秒延时程序 { unsigned char j=0,i=8; do { while(--j) ; } while(--i); } void delay(unsigned char i) //毫秒级延时程序 { while(i--) delay_1ms(); } void timer0(void) interrupt 1 //T0定时中断服务子程序 { unsigned int temp; //临时变量 if (pwm_outword!=0x10) { temp=delay_timeh; //装入高电平延时值 P1=0XFF; P2=0XFF; //输出控制命令 pwm_outword=1; //控制命令左移一位 } else { temp=delay_timel; //装入低电平延时值 pwm_outword=1; P1=0; //输出低电平 P2=0X0F; pwm_number++; //低电平输出完成,脉冲数++ } TL0=(unsigned char)temp; //装入值 temp=8; TH0=(unsigned char)temp; } void time0_init() //定时器初始化 { TMOD=0x01; //设置成16位定时器 TH0=0x44; //设置中断初值 TL0=0x44; EA=1; //使能全局中断 ET0=1; //使能T0中断 TR0=1; //启动T0 } void main() { unsigned char i_temp; //临时变量 do{}while(P2_3); //声控 for(i_temp=0;i_temp10;i_temp++) //开始时,灯闪烁10次 { P0=0; //灯亮 delay(100); //延时0.2S P0=0xff; //灯灭 delay(100); //延时0.2S } time0_init(); //定时器初始化 while(1) //循环 { for (i_temp=0;i_temp5;i_temp++) //5个位置依次切换 { delay_timeh=0xffff-loc_angle[i_temp]; delay_timel=delay_time+loc_angle[i_temp]; while(pwm_number50); pwm_number=0; } } //while 结束 }//main SL-DIY08-52引脚功能分配 52pdi.jpg (56.17 KB) 被浏览 153 次 ********************************************************************************/ ORG 0000H LJMP main ORG 000BH LJMP time0 ORG 0030H pwm_outword EQU 0010H ;控制命令 delay_timeh EQU 0012H ;高电平延时值 delay_timel EQU 0014H ;低电平延时值 pwm_number EQU 0016H ;脉冲数 delay_100ms: ;100毫秒延时子程序 MOV R2,#0C8H ;取延时外循环数200 D2: MOV R1,#0FAH ;取延时内循环数250 D1: DJNZ R1 ,D1 ;内循环,累减一, DJNZ R2, D2 ;外循环,累减一 RET time0: ;定时器0中断服务程序 MOV
显示全部
相似文档