📄 systeminitial.h
字号:
/*****************宏定义***************/
/*********系统初始化部分*******/
#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 + -