东华大学程序清单.docVIP

  • 3
  • 0
  • 约9.02千字
  • 约 6页
  • 2017-06-08 发布于湖北
  • 举报
东华大学程序清单

东华大学程序清单 #include hidef.h //基本定义和宏定义 #include mc9s12dg128.h //器件相关定义 #include stdlib.h #pragma LINK_INFO DERIVATIVE mc9s12dg128b #define WIDTH 0x0EA6 //定义半周期的减计数器初值 #define BLACK_ROAD 0 //定义黑色路面的状态值 #define WHITE_ROAD 1 //定义白色路面的状态值 #define Kp 8 //比例系数 #define Ki 0//积分系数(暂定为0.5,实际上是除以2取整,每几个控制周期加一次积分) #define Kd 5//微分系数 #define Speed_Kp 0//速度比例系数 #define Speed_Kd 20 //速度微分系数 #define CONTROL_PERIOD 2 //控制周期的比例系数:控制周期=CONTROL_PERIOD*半周期长度 #define INTEGRAL_PERIOD 10 //积分周期的比例系数:积分周期=INTEGRAL_PERIOD*半周期长度 #define HIGHEST_SPEED 75 //全程最高速度 #define NORMAL_SPEED 65 //直道一般速度 #define LOWEST_SPEED 50 //全程最低速度(用于进弯时) #define MAX_UK 30 //控制量的最大值的绝对值 #define MAX_LEFT_UK 25 //最大左转控制量 #define MAX_RIGHT_UK -30 //最大右转控制量 #define MAX_LEFT_DUTY MAX_LEFT_UK+140//最大左转占空比 #define MAX_RIGHT_DUTY MAX_RIGHT_UK+140 //最大右转占空比 #define STRAIGHT_HIGH_LIMIT 400 //直道最长加速时间限制 #define STRAIGHT_LOW_LIMIT 300 //直道最长减速时间限制 #define CURVE_LIMIT 70 //弯道计数器极限值 #define USE_SPEED_KD //此处决定是否使用微分控制速度 #undef USE_SPEED_KD static int period_counter=0; //控制周期计数器 static int integral_counter=0; //积分计数器 #ifdef USE_SPEED_KD #else static int curve=0; //弯道控制周期计数器 static long straight_high=0; //直道加速时间计数器 static long straight_low=0; //直道减速时间计数器 static int speed_switch=1; //速度选择开关 #endif static int last_received_signal[8]={0}; //上次采样得到的路面状态信号 static int present_received_signal[8]={0}; //本次采样得到的路面状态信号 int Last_Error=0; //上两次的误差e(k-2) int Prev_Error=0; //上一次的误差e(k-1) int Present_Error=0; //本次误差e(k) int uk=0; //经PID运算得到的控制量 #pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt 26 void MDC_ISR(void); //减计数器中断例程,中断向量号:26 void CRG_Init(void); //时钟初始化例程 void PORT_Init(void); //端口初始化例程 void MDC_Init(void);//减计数器初始化例程 void Servo_Init(void); //舵机用PWM初始化例程 void Motor_Init(void);//电机用PWM初始化例程 void Test(void); //启动测试例程(不是必需的) byte Road_Judge(int); //路面判断例程 void Road_Status_Output(int,byte); //路面情况输出例程 byte Signal_Filter(void); //无效传感器信号滤除例程 void Get_Error(void); //计算误差例程 void Execute_Control(void); //进行控制作用例程 void Servo_Adjust

文档评论(0)

1亿VIP精品文档

相关文档