⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systeminitial.h

📁 基于飞思卡尔智能车比赛
💻 H
📖 第 1 页 / 共 3 页
字号:
/*****************宏定义***************/
   /*********系统初始化部分*******/   
#define OSCCLK_VALUE  16      //外部晶振频率大小
#define REFDV_VALUE   1       //系统时钟分频系数
#define SYNR_VALUE    3       //倍频系数
#define BUS_CLK     (OSCCLK_VALUE*(SYNR_VALUE+1)/(REFDV_VALUE+1)) //总线时钟=24M
#define BR          9600
   
   /***********摄像头部分*********/
   /*新摄像头,未改晶振,场前19~20行消隐,有效行288行*/
#define ROW_num  30  		      //有效列
#define LINE_num (211)     //有效行288,实际运行时两头不稳定,固只取286行
//#define scale    8            //表示每个刻度所占点数
//#define index_scale (LINE_num/scale)
#define index_min 0
#define index_max (ROW_num-1)
#define index_center ((index_max+index_min)/2)
#define LINE_invalid_num 13//13		//场前消隐行数12,为保稳定多取一行为13行
//#define CCD_UNVISIBLE_K 1.0f
//#define CCD_VISIBLE_K   ((float)angle_sclae_min / (float)angle_scale_max)  //将angle_scale_max度范幅度变为angle_scale_min度
//#define ccd_far 2
																	 
#define ccd_Row_invalid_num 6
//ad_threshold 112//40   //设定视频阈值
   
/*******舵机、速度控制部分*****/	
#define angle_scale_max 90		         //舵机最大摆动角度幅度
#define angle_sclae_min 34				     //ccd可见时影射到水平面上的夹角
#define speedometer_voltage_max 3.0f//3.6f 	 //3.6v
#define speedometer_ad_max (((float)speedometer_voltage_max/5.0f)*255)
#define speed_k (1.0+infrared_value7*speed_voltage_k)
#define shift_angle 80//70//47//200    
    /**********调试标志部分*******/
//#define sci_infrared_select
#define ccd_select 
//#define sci_cmos_select			    //串口调试用
//#define ccd_time_test           //CCD时间测试 用灯来显示
#define ccd_threshold

/*************函数声明**************/
void SYSCLK_Init(void);       //时钟初始化
void PORTH_Init(void);        //H口初始化,用作场同步中断
void IRQ_Init(void);          //IRQ初始化,用作行同步中断
void PORTB_Init(void);		 	  //端口B初始化
void InitPWM(void);		        //PWM 初始化
void ATD0_Init(void);         //ATD0初始化
void ATD1_Init(void);					//ATD1初始化
void print_ad_video(void);		//串口输出
void SYSTEM_Init(void);				//系统初始化
void MDC_u(uint);							//定时单元
void PID(void);								//PID调节
uchar threshold_judge_process(void);
//uchar dir_video(void);

/*************变量定义***************/
   /***********摄像头部分*********/
int ad_black_num_invalid_sum=0;
uchar index_cmos[LINE_num/10+1]={0};     //定义index1,2用于暂存摄像头和红外传感器的方向值
uchar index_cmos_last=index_center;
uchar index_cmos_last_last=index_center;
uchar index_cmos_last_50=index_center;
uchar index_cmos_begin_temp=0,index_cmos_end_temp=0;
uchar index_max_temp=0,index_min_temp=0;
uchar begin_flag=0; 
uchar index_cmos_flag[LINE_num/10+1];
uchar black_num_cmos[LINE_num/10+1];
uchar flag_cmos_visible=0;
uchar right_line_cmos=0,error_line_cmos=0;
uchar begin_line_flag=0,begin_line_range=0;
uint index_sum=0;
uchar ad_cmos_temp=0;			
uchar begin_line=0;
uchar line_num_duan=0;
uchar index_cmos_begin_line_last=10;
//char Nextline_delay=6;	   //初始化阈值调整每场行延时
//char ccd_threshold_over=0; //初始化阈值调整结束标志
uint line_counter=0;       //行计数器
uint line_counter_valid=0;
uint line_counter_temp=0;
uchar ROW_invalid_time=ccd_Row_invalid_num;	//6	//行前消隐时间(us),由于调用MDC定时器,函数调用的时间已超过行消隐时间,因此ROW_invalid_time为象征性延时,只要有调用MDC函数的过程即可
//uchar ad_black_num[index_scale][3];   //定义一个数组,存放每刻度的黑点数
uchar ad_black_num_threshold_max[3];
uchar ad_black_num_threshold_min[3];
uchar ccd_over=0;
uchar black_series[3];
uchar middle_temp=18;
uchar threshold_judge_last=0;
uchar threshold_judge_current=0;
uchar ad_video[LINE_num/10+61][ROW_num];    //摄像头ATD采样数据
uchar ad_threshold[3]={112,112,112};  //设定视频阈值threshold_judeg_begin()来判断现场环境远点是否可用                                          
uchar ad_threshold_single=108;
uchar once1=0;
uchar row_num_temp=0;
char row_i_begin=0,row_i_end=ROW_num;
uchar flag_ccd_visible[3]={0};
uchar flag_ccd_far_enable=1;          //由阈值设计函数
uchar NextLine_WaitingTime_far=4;     //35 //测出来的,此时第二行不影响下一次的第一行的点
uchar NextLine_WaitingTime_middle=16;
uchar NextLine_WaitingTime_near=12;
uchar WaitingTime_near=ccd_Row_invalid_num,WaitingTime_middle=17,WaitingTime_far=4;
uchar threshold_init_temp[40]={0};    //初始化各行的阈值,共40行
uchar ad_black_nZum_sum[40]={0};				//初始化后各行黑点数的总和,共40行
int ad_black_num_sum_far=0;
/*******舵机、速度控制部分*****/	
char index_angle=0;
uchar infrared_value7_last=0;         //储存上次的速度反馈值
float speed_voltage_k=((float)angle_scale_max/(float)angle_sclae_min-1.0f)/(float)speedometer_ad_max; 
            //speed_k=1+(angle_scale_max/angle_sclae_min-1)*(infrared_value7/speedometer_ad_max);
float speed_ctrl_k=0;
float speed_ctrl_v=0;
float cmos_k=0.0f;
int PWMDTY01_temp;

uchar speed_v_max=155;
uchar speed_v_min=100;
uchar speed_v_unvisible=95;

uchar line_min=0;
/*float index_to_angle[21]={-(10.0f+16.0f),-(9.5f+16.0f),-(7.0f+16.0f),-(5.5f+16.0f+2),-(6+13.2f+2.8f),-(6+9.9f+2.8f),-(6+6.6f+2.8f),-(3.3f+2.8f+3),-2.8f,-1.4f,
0,1.4f,2.8f,(3.3f+2.8f+3),(6.6f+2.8f+6),(9.9f+2.8f+6),(13.2f+2.8f+6),(5.5f+16.0f+2),(7.0f+16.0f),(9.5f+16.0f),(10.0f+16.0f)};
*/
//float index_to_angle[21]={-(10.0f+16.0f),-(7.5f+16.0f),-(5.0f+16.0f),-(2.5f+16.0f),-(13.2f+2.8f),-(9.9f+2.8f),-(6.6f+2.8f),-(3.3f+2.8f),-2.8f,-1.4f,
//0,1.4f,2.8f,(3.3f+2.8f),(6.6f+2.8f),(9.9f+2.8f),(13.2f+2.8f),(2.5f+16.0f),(5.0f+16.0f),(7.5f+16.0f),(10.0f+16.0f)};

float index_to_angle[ROW_num]=

{
/*-31.1	,
-29.7	,
-26.1	,
-17.3	,
-12.9	,
-9.5	,
-6.6	,
-4.2	,
-2.3	,
-1.2	,
0	,
1.2	,
2.3	,
4.2	,
6.6	,
9.5	,
12.9	,
17.3	,
26.1	,
29.7	,
31.1	

-31.1	,
-25	,
-22.1	,
-18.6	,
-14.7	,
-11.2	,
-7.4	,
-4.7	,
-2.3	,
-1.2	,
0	,						 //yuan lai de
1.2	,
2.3	,
4.7	,
7.4	,
11.2	,
14.7	,
18.6	,
22.1	,
25	,
31.1	


-32.1	,
-22.2	,
-14.5	,
-9.6	,
-6.6	,
-4.7	,
-3.5	,
-2.5	,
-1.6	,  //////180du hu		  good
-0.5	,
0	,
0.5	,
1.6	,		 
2.5	,
3.5	,
4.7	,
6.6	,
9.6	,
14.5	,
22.2	,
32.1	

-44.3	,
-30.3	,
-25.7	,
-21.7	,
-18	,
-14.3	,
-11.8	,
-9.7	,
-7.7	,
-6.1	,
-4.8	,
-3.6	,
-2.6	,
-1.7	,
-1.1	,
-0.4	,
0	,
0.4	,
1.1	,
1.7	,
2.6	,
3.6	,
4.8	,
6.1	,
7.7	,
9.7	,
11.8	,
14.3	,
18	,
21.7	,
25.7	,
30.3	,
44.3	,

-44.3	,
-32	,
-24	,
-18.6	,
-14.6	,
-11.6	,
-9.5	,
-7.5	,
-6.2	,
-5.1	,
-4	,
-3.2	,
-2.6	,
-2.3	,
-2	,
-1	,
0	,
1	,
2	,
2.3	,
2.6	,
3.2	,
4	,
5.1	,
6.2	,
7.5	,
9.5	,
11.6	,
14.6	,
18.6	,
24	,
32	,
44.3	,

-44.3	,
-32	,
-24	,
-18.6	,
-14.6	,
-11.6	,
-9.5	,
-7.5	,
-6.2	,
-5.1	,
-4	,
//-3.2	,
-2.6	,
//-2.3	,
-2	,
//-1	,
0	,
//1	,
2	,
//2.3	,
2.6	,
//3.2	,
4	,
5.1	,
6.2	,
7.5	,
9.5	,
11.6	,
14.6	,
18.6	,
24	,
32	,
44.3	,

-34.5	,
-28.2	,
-24.3	,
-20.5	,
-17.7	,
-15	,
-12.9	,
-11	,
-9.2	,
-7.7	,
-6.9	,
//-6.3	,
-5.7	,
//-5	,
-4.2	,
//-3.3	,
0	,
//3.3	,
4.2	,
//5	,
5.7	,
//6.3	,
6.9	,
7.7	,
9.2	,
11	,
12.9	,
15	,
17.7	,
20.5	,
24.3	,
28.2	,
34.5	,

 -34.5	,
-29.7	,
-25.3	,
-20.9	,
-17.7	,
-14.9	,
-12.5	,
-10.7	,
-9.2	,
-8	,
-7.2	,
//-6.3	,
-5.7	,
//-5	,
-4.2	,
//-3.3	,
0	,
//3.3	,
4.2	,
//5	,
5.7	,
//6.3	,
7.2	,
8	,
9.2	,
10.7	,
12.5	,
14.9	,
17.7	,
20.9	,
25.3	,
29.7	,
34.5	,

-34.5	,
-29.7	,
-25.3	,
-20.9	,
-18.1	,
-16	,
-14.3	,
-12.9	,
-11.8	,
-10.9	,
-10	,
-9	,
-8.3	,
-7.4	,
-6.1	,
//-3.8	,
0	,
//3.8	,
6.1	,
7.4	,
8.3	,
9	,
10	,
10.9	,
11.8	,
12.9	,
14.3	,
16	,
18.1	,
20.9	,
25.3	,
29.7	,
34.5	,

-34.5	,
-29.7	,
-25.3	,
-22	,
-19.3	,
-16.6	,
-14.9	,
-13.2	,
-11.4	,
-10	,
-8.6	,
-7.7	,
-6.8	,
-5.9	,
-4.8	,
//-3.2	,
0	,
//3.2	,
4.8	,
5.9	,
6.8	,
7.7	,
8.6	,
10	,
11.4	,
13.2	,
14.9	,		//good   25
16.6	,
19.3	,
22	,
25.3	,
29.7	,
34.5	,

-30	,
-25.6	,
-22.1	,
-18.8	,
-16	,
-14.4	,
-13.1	,
-12.4	,
-11.44	,
-10.81	,
-10.1	,
-9.2	,
-7.9	,
//-6.7	,
-5.2	,
//-3.2	,
0	,
//3.2	,
5.2	,
//6.7	,
7.9	,
9.2	,
10.1	,
10.81	,
11.44	,
12.4	,
13.1	,
14.4	,
16	,
18.8	,
22.1	,
25.6	,
30	,

-35.7	,
-28.3	,
-23.3	,
-19.3	,
-16.5	,
-14.4	,
-13.1	,
-11.8	,
-10.9	,
-10.18	,
-9.64	,
-8.83	,
-7.66	,
//-6.7	,
-5.2	,
//-3.2	,
0	,
//3.2	,
5.2	,
//6.7	,
7.66	,
8.83	,
9.64	,
10.18	,
10.9	,
11.8	,
13.1	,
14.4	,
16.5	,
19.3	,
23.3	,
28.3	,
35.7	,
*/
/*
-32.6	,
-23.5	,
-18.5	,
-15.1	,
-12.6	,
-10.6	,
-9.6	,
-8.8	,
-8.2	,
-7.2	,
-6.4	,
-5.4	,
-4.7	,
//-3.7	,
-2.6	,
//-1.7	,
0	,
//1.7	,
2.6	,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -