单片机控制8路舵机8路pwm机器人

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

/******************************************************八路PWM输出说明:1、INT0为片选信号,高电平有效。(默认为输入有效。)2、波特率为57600,8,13、角度格式为+角度+版本2.0最后修改时间:2009-8-17******************************************************/#includeiom8v.h#includemacros.h#includedelay.h/*************************需要修改的***********************///定义舵机数量1~8#definemoto_num8//根据不同舵机定义不同的基准延时长度___|----??|_______#definemoto_aref3760#definemoto_aref2520#definemoto_aref1720/*********************************************************/#definefosc1200'0000#definebaud57600#defineLED_onPORTD|=0X02#defineLED_offPORTD&=~0X02unsignedcharflag_power=1;//控制电源状态为开unsignedchar*buffer;//定义缓冲区指针unsignedcharflag_buffer=0;//定义缓冲区标志unsignedcharangle_buffer[50];//定义接收缓冲区unsignedcharangle[8]={90,90,90,90,90,90,90,90,//60,60,60,60,60,60,60,60,};//定义初始角度数组//*******************舵机延时1**************************voidMoto_delay1(void)//根据不同电机调整最早舵机{delay_nus(6);NOP();NOP();NOP();NOP();NOP();NOP();}//*******************舵机延时2**************************voidMoto_delay2(void)//根据不同电机调整SG-5010{delay_nus(7);NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();}//*******************舵机延时3**************************voidMoto_delay3(void)//根据不同电机调整MG-995{delay_nus(7);NOP();NOP();NOP();NOP();NOP();NOP();}//*******************I/O口初始化*************************voidport_init(void){//PORTA=0x00;//DDRA=0xFF;PORTB=0x00;DDRB=0x3F;//PB6‘7PORTC=0x00;//m103outputonlyDDRC=0xBF;//去掉PC6PORTD=0x04;DDRD|=0x02;}//*******************串口初始化***************************//desiredbaudrate:57600//actual:baudrate:57692(0.2%)voiduart0_init(void){UCSRB=(1RXEN)|(1RXCIE);//接收、送允许、接收中断允许|(1TXEN)//UBRRL=0x0c;//57600//UBRRH=0x00;////UBRRL=0x06;//115200//UBRRH=0x00;//UBRRL=0x4D;//9600UBRRH=0x00;//UCSRC=(1URSEL)|(1UCSZ1)|(1UCSZ0);//选择UCSRC,异步模式,禁止校验,1//位停止位,8位数据位//DDRD|=0X02;//配置TX为输出(很重要)}//*******************片选信号INT0**********************#pragmainterrupt_handlerint0_isr:iv_INT0voidint0_isr(void){if((PIND&0x04)0){UCSRB=(1RXEN)|(1RXCIE);//接收、送允许、接收中断允许}else{UCSRB=0x00;//禁止接收、接收中断~((1RXEN)|(1RXCIE))}}//****************接受中断****************************#pragmainterrupt_handleruart0_rx_isr:iv_USART0_RXCvoiduart0_rx_isr(void){unsignedchari;//一定先读i=UDR;CLI();switch(i){case'':{if(flag_buffer==0){flag_buffer=1;buffer=angle_buffer;LED_on;}}break;//case'':{if(flag_buffer==1){flag_buffer=2;LED_off;}else{flag_buffer=0;}break;}case'n':{flag_power=1;LED_off;break;}//poweroncase'f':{flag_power=0;LED_on;break;}//poweroffdefault:{if(flag_buffer==1){*buffer=i;buffer++;}else{flag_buffer=0;}break;}}SEI();}//**********判断是否接收到数据,转换到角度数组*********voidsearch_buffer(void){if(flag_buffer==2){chari,j,tem,ang;buffer=angle_buffer;for(j=0;jmoto_num;j++){tem=*buffer;buffer++;i=(tem-48)*100;tem=*buffer;buffer++;i=((tem-48)*10)+i;tem=*buffer;buffer++;ang=(tem-48)+i;angle[j]=ang;}flag_buffer=0;}}//******************初始化所有************************voidinit_devices(void){CLI();//disableallinterruptsport_init();uart0_init();MCUCR=0x01;GICR=0x40;TIMSK=0x00;SEI();}//*******************主函数***************************voidmain(void){unsignedchari;init_devices();while(1){if(flag_power==1){//flag/*****************************************************/PORTC|=0x20;//| ̄|___________________moto(1)PC5delay_nus(moto_aref2);//760for(i=angle[0];i0;i--){Moto_delay2();}PORTC&=~0x20;search_buffer();PORTC|=0x10;//____| ̄|_______________moto(2)PC4delay_nus(moto_aref2);for(i=angle[1];i0;i--){Moto_delay2();}PORTC&=~0x10;search_buffer();PORTC|=0x08;//_______| ̄|_____________moto(3)PC3delay_nus(moto_aref1);for(i=angle[2];i0;i--){Moto_delay1();}PORTC&=~0x08;search_buffer();PORTC|=0x04;//___________| ̄|__________moto(4)PC2delay_nus(moto_aref1);for(i=angle[3];i0;i--){Moto_delay1();}PORTC&=~0x04;search_buffer();PORTC|=0x02;//_______________| ̄|_______moto(5)PC1delay_nus(moto_aref1);for(i=angle[4];i0;i--){Moto_delay1();}PORTC&=~0x02;search_buffer();PORTC|=0x01;//___________________| ̄|___moto(6)PC0delay_nus(moto_aref1);for(i=angle[5];i0;i--){Moto_delay1();}PORTC&=~0x01;search_buffer();PORTB|=0x20;//___________________| ̄|___moto(7)PB5delay_nus(moto_aref1);for(i=angle[6];i0;i--){Moto_delay1();}PORTB&=~0x20;search_buffer();PORTB|=0x10;//_____________________| ̄|moto(8)PB4delay_nus(moto_aref1);for(i=angle[7];i0;i--){Moto_delay1();}PORTB&=~0x10;search_buffer();/************************************************///控制结束}//flag_power}//while(1);}//main()/****************************************************PORTB|=0x02;//| ̄|___________________moto(9)pd2delay_nus(moto_aref1);for(i=angle[12]-3;i0;i--){delay_nus(7);NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();}PORTB&=~0x02;PORTB|=0x01;//____| ̄|_______________moto(10)pddelay_nus(moto_aref1);for(i=angle[4];i0;i--){delay_nus(7);NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();}PORTB&=~0x01;PORTD|=0x10;//_______| ̄|_____________moto(11)delay_nus(moto_aref1);for(i=angle[13]-6;i0;i--){delay_nus(7);NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();}PORTD&=~0x10;PORTD|=0x08;//___________| ̄|__________moto(12)delay_nus(moto_aref1);

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功