巡线小车源程序(MSP430-PID).doc

巡线小车源程序(MSP430-PID).doc

ID:59828752

大小:29.50 KB

页数:7页

时间:2020-11-25

巡线小车源程序(MSP430-PID).doc_第1页
巡线小车源程序(MSP430-PID).doc_第2页
巡线小车源程序(MSP430-PID).doc_第3页
巡线小车源程序(MSP430-PID).doc_第4页
巡线小车源程序(MSP430-PID).doc_第5页
资源描述:

《巡线小车源程序(MSP430-PID).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、巡线小车源程序(MSP430,PID)首先是各种宏定义的头文件[cpp]viewplaincopyprint?1"myhead.h"2#ifndefxxxx_xxx3#definexxxx_xxx4#defineP435#defineI0.016#defineD1007#defineLeftMotorTurnNeg{P3OUT

2、=BIT0;P3OUT&=~BIT1;}8#defineLeftMotorTurnPos{P3OUT&=~BIT0;P3OUT

3、=BIT1;}9#defineRightMotorTurnNeg{P3OUT

4、=BIT3;P3OUT&=~BIT2

5、;}10#defineRightMotorTurnPos{P3OUT&=~BIT3;P3OUT

6、=BIT2;}11#defineLeftPwmOutTACCR112#defineRightPwmOutTACCR213#defineF1000014#defineT(/F)15#defineBASIC10016#definesimpletime(unsignedint)517#defineLEFT10018#defineRIGHT10019#endif接下来就是点击驱动的头文件[cpp]viewplaincopyprint?20"Motor.h"21#ifndefMot

7、or22#defineMotor23#include"myhead.h"24#include"msp430x14x.h"1voidMotorLeft(floatleft)2{3LeftMotorTurnPos//正转4if(left<0)5{6LeftMotorTurnNeg//反转7left=-left;8}9LeftPwmOut=(int)(left*T/100);10}11voidMotorRight(floatright)12{13RightMotorTurnPos//正转14if(right<0)15{16RightMotorTurnNeg//17righ

8、t=-right;18}19RightPwmOut=(int)(right*T/100);20}21voidDriveMotor(floatPIDout)22{23floatleft=BASIC+PIDout;24floatright=BASIC-PIDout;25if(left>100)left=100;26if(left<-100)left=-100;27if(right>100)right=100;28if(right<-100)right=-100;29MotorLeft(left);30MotorRight(right);//工作正常1}2#endif再下

9、来是主文件[cpp]viewplaincopyprint?3”main.c"45#include"Motor.h"6floatlasterror,sumerror;7floatSensor[]={-4,-3,-2,-1,0,1,2,3,4};8intflag;9voiddelay(inttime)10{}11voidtimer_inti()12{13TACTL=TASSEL_2+MC_1+TAR+ID_0;//SMCLK,增计数模式,清零,不分频;允许定时器溢出中断14TACCR0=/F;//其中F为PWM的频率15TACCTL1=OUTMOD_7;16TACCTL

10、2=OUTMOD_7;1718TBCTL=TASSEL_2+MC_1+TBR+ID_0+CNTL_0;//SMCLK,增计数模式,清零,不分频;允许定时器溢出中断,16WEI19TBCCTL0

11、=CCIE;20TBCCR0=8000*simpletime;//控制采样时间21_EINT();22}23voidIO_inti()24{1P1DIR=BIT3+BIT2;//用于定时器输出2P1SEL=BIT3+BIT2;34P3DIR=0X7f;//用作传感器输入跟电机驱动5P5DIR=0X00;//用于传感器输入67P6DIR=0XFF;//用于流水灯输出,纯粹调试用

12、89P2DIR

13、=BIT4;//外部中断,用于壁障10P2IE=BIT4;11P2IES=BIT4;1213}14voidPID_inti()15{16sumerror=0;17lasterror=0;18flag=0;19}20voidCrystal()//晶振启振程序21{22BCSCTL1&=~XT2OFF;23do24{25inti;26IFG1&=~OFIFG;27for(i=255;i>=0;i--);28}while(IFG1&OFIFG);29BCSCTL2=SELM_2+DIVM_0+SELS+DIVS_0;//SMCLK=MCLK=XT2;D

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。