舵机控制八路伺服电机_第1页
舵机控制八路伺服电机_第2页
舵机控制八路伺服电机_第3页
舵机控制八路伺服电机_第4页
舵机控制八路伺服电机_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、控制八路伺服电机。J6,J7,J8,J10,J11,J12插座为16路,P1.3,P1.4为78路。注意:伺服电机数据线是I/O-VCC-GNDChip type : AT89S52 Clock frequency : 24MHz */*/#include "reg52.h"#define delay_time 0xcbeb /定义延时常量sbit P2_3=P23;/以下常量对应的角度(n为负) n90 n45 0 45 90unsigned int loc_angle5=0x014d,0x029B,0x04e8,0x0535,0x0683;unsigned int de

2、lay_timel,delay_timeh; /低电平延时时间,高电平延时时间unsigned char pwm_number=0; /脉冲数unsigned char pwm_outword=1; /输出命令void delay_1ms() /1毫秒延时程序 unsigned char j=0,i=8;dowhile(-j) ; while(-i);void delay(unsigned char i) /毫秒级延时程序while(i-)delay_1ms(); void timer0(void) interrupt 1 /T0定时中断服务子程序unsigned int temp; /临时变

3、量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

4、; /设置成16位定时器TH0=0x44; /设置中断初值TL0=0x44;EA=1; /使能全局中断ET0=1; /使能T0中断TR0=1; /启动T0void main()unsigned char i_temp; /临时变量dowhile(P2_3); /声控for(i_temp=0;i_temp<10;i_temp+) /开始时,灯闪烁10次 P0=0; /灯亮delay(100); /延时0.2SP0=0xff; /灯灭delay(100); /延时0.2Stime0_init(); /定时器初始化while(1) /循环for (i_temp=0;i_temp<5;i_

5、temp+) /5个位置依次切换delay_timeh=0xffff-loc_anglei_temp;delay_timel=delay_time+loc_anglei_temp;while(pwm_number<50);pwm_number=0; /while 结束/main SL-DIY08-52引脚功能分配 52pdi.jpg (56.17 KB) 被浏览 153 次 */ORG 0000HLJMP mainORG 000BHLJMP time0ORG 0030Hpwm_outword EQU 0010H ;控制命令delay_timeh EQU 0012H ;高电平延时值dela

6、y_timel EQU 0014H ;低电平延时值pwm_number EQU 0016H ;脉冲数delay_100ms: ;100毫秒延时子程序MOV R2,#0C8H ;取延时外循环数200D2: MOV R1,#0FAH ;取延时内循环数250D1: DJNZ R1 ,D1 ;内循环,累减一,DJNZ R2, D2 ;外循环,累减一RETtime0: ;定时器0中断服务程序MOV A,pwm_outwordXRL A,#010HJZ loadhMOV R4,delay_timehMOV R5,delay_timeh+01H ;装入高电平延时值 MOV P1,#0FFHMOV P2,#0

7、FFH MOV A,pwm_outword ;输出控制命令ADD A,ACCMOV pwm_outword,A SJMP loadlloadh:MOV R4,delay_timelMOV R5,delay_timel+01H ;装入低电平延时值 MOV pwm_outword,#01H MOV P1,#00H MOV P2,#0FH INC pwm_number ;低电平输出完成,脉冲数+ loadl: MOV TL0,R5 MOV A,R4MOV R5,AMOV R4,#00H MOV TH0,A ;装入值 RETI time0_init:MOV TMOD,#01H MOV TH0,#0ee

8、H ;装载初值 MOV TL0,#0eeH SETB EA ;使能全局中断 SETB ET0 ;使能T0中断 SETB TR0 RETmain: JB P2.3,main ;等待声控 MOV R4,#00shanshuo: ;刚开始8LED闪烁十次MOV P0,#00 ;8LED全亮 LCALL delay_100ms ;延时100毫秒 MOV P0,#0FFH ;8LED全灭 LCALL delay_100ms ;延时100毫秒 INC R4 ;寄存器加一CJNE R4,#0AH,shanshuo ;闪烁十次 LCALL time0_init ;初始化定时器 xunhuan: MOV R4,

9、#00HCLR AMOV R0,Aload: MOV DPTR,#angleMOV A,R0MOVC A,A+DPTR ;读取低八位MOV R6,AINC R0MOV A,R0MOVC A,A+DPTR ;读取高八位MOV R7,AMOV A,#0FFHSUBB A,R7MOV delay_timeh+01H,A ;装载高电平的延时时间的高八位MOV A,#0FFHSUBB A,R6MOV delay_timeh,A ;装载高电平的延时时间的低八位MOV A,R7ADD A,#0EBHMOV delay_timel+01H,A ;装载低电平的延时时间的高八位MOV A,R6ADDC A,#0CBHMOV delay_timel,A ;装载高电平的延时时间的低八位pwm50 : MOV A,pwm_numberCLR CSUB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论