/***********************************************
程序功能:实现对云台的角度控制和ad采集功能
************************************************/
#include
#define DRE_out P3DIR |= BIT3 //连接485芯片的DE,RE端口的IO设置为输出状态
#define DE P3OUT |= BIT3 //设置485芯片处于发送状态
#define RE P3OUT &= ~BIT3 //设置485芯片处于接收状态
#define Num_of_Results 16 //对连续采集16次数据(进行平均,数据处理)
typedef unsigned char uchar;
typedef unsigned int uint;
uint results[Num_of_Results]; //保存ADC转换结果的数组
uint average; //转换出来的数值
uchar tcnt = 0;
char receive_order[5];//赋初值
unsigned char order1[7]={0xFF,0x01,0x00,0x08,0x00,0x1E,0x27};//云台指令向上转
unsigned char order2[7]={0xFF,0x01,0x00,0x10,0x00,0x1E,0x2F};//云台指令向下转
unsigned char order3[7]={0xFF,0x01,0x00,0x04,0x1E,0x00,0x23};//云台指令向左转
unsigned char order4[7]={0xFF,0x01,0x00,0x02,0x1E,0x00,0x21};//云台指令向右转
unsigned char order5[7]={0xFF,0x01,0x00,0x0C,0x1E,0x1E,0x49};//云台指令向左上转
unsigned char order6[7]={0xFF,0x01,0x00,0x0A,0x1E,0x1E,0x47};//云台指令向右上转
unsigned char order7[7]={0xFF,0x01,0x00,0x14,0x1E,0x1E,0x51};//云台指令向左下转
unsigned char order8[7]={0xFF,0x01,0x00,0x12,0x1E,0x1E,0x4F};//云台指令向右下转
unsigned char order9[7]={0xFF,0x01,0x00,0x00,0x00,0x00,0x01};//云台指令-停止
unsigned char order0[7]={0xFF,0x01,0x00,0x07,0x00,0x01,0x09};//云台的初始预置位
uchar order_horizontal_angle[7]={0xff,0x01,0x00,0x4B,0x00,0x00,0x4C};//水平角度-0
uchar order_vertical_angle[7]={0xff,0x01,0x00,0x4D,0x00,0x00,0x4E};//垂直角度-0
/*******************************************
函数名称:Delays
功 能:延时一会
参 数:无
返回值 :无
********************************************/
void Delays()
{
int k=20;
int j;
while(k--)
{
j=20;
while(j--);
}
}
/*****************************************
函数名称:InitMSP430
****************************************/
void InitMSP430()
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
DRE_out;
DE;
}
/*****************************************
函数名称:向云台发送指令
功 能:发送指令
参数:
返回值:
******************************************/
void send_order(unsigned char order[])
{
int i=0;
for(i=0;i