#include “my_include.h”
char dis0[25];//液晶显示暂存数组
char dis1[25];//液晶显示暂存数组
#define F_SIZE 16
#define MyLCD_Show(m,n,p) LCD_ShowString(LCD_GetPos_X(F_SIZE,m),LCD_GetPos_Y(F_SIZE,n),p,F_SIZE,false)
#define RONGCHAZHI_UD 500 //容差值
#define RONGCHAZHI 500 //容差值
#define ZHUANDONG_ZZ 50 //转动一个正角度
#define ZHUANDONG_FZ -50 //转动另一个方向转动
int lighVla_left = 0;//ad采集结果 1
int lighVla_up = 0;//ad采集结果
int lighVla_right = 0;//ad采集结果
int lighVla_down = 0;//ad采集结果
float batteryVolt = 0;//锂电池电压ad采集结果
float BatCap=80; //容量初始化
unsigned char disFlag = 0;//更新显示
unsigned char setMode =0;//设置模式
unsigned char rememberMode =0xff;//记录上一次设置状态
int main(void)
{
unsigned char disYplace=0; //显示所在行递增变量
USARTx_Init(USART1,9600);
// My_LED_Init();
// My_RTC_Init(false);
My_ADC_Init(ADC1);
My_KEY_Init();
My_StepMotor_Init();
LCD_Init(); //tft初始化
// TP_Init(); //校准已经包括再此函数中 先执行LCD_Init(); 触摸校准调用显示
LCD_Clear(Color16_BLACK);//清全屏
BACK_COLOR=Color16_BLACK;
FRONT_COLOR=Color16_LIGHTGRAY; disYplace=0; //显示所在行递增变量
MyLCD_Show(2,disYplace++,“双轴追光系统”);//显示
FRONT_COLOR=Color16_LIGHTBLUE;
MyLCD_Show(1,disYplace++,"光照参数: ");//显示
MyLCD_Show(4,disYplace++,"上: ");//显示
MyLCD_Show(1,disYplace,"左: ");//显示
MyLCD_Show(9,disYplace++,"右: ");//显示
MyLCD_Show(4,disYplace++,"下: ");//显示
MyLCD_Show(1,disYplace++,"设置: ");//显示
while(1)
{
My_KeyScan();
if(KeyIsPress(KEY_5))
{
if(setMode !=0 )setMode =0;//自动模式
else setMode=1;//手动模式
}
switch(setMode)
{
case 0: //自动模式
if((lighVla_left - lighVla_right)>RONGCHAZHI_UD ) //调整向强光方向转动
{My_StepMotor_RotateAngle(0,ZHUANDONG_ZZ);}
else if((lighVla_right - lighVla_left )>RONGCHAZHI_UD )//调整向强光方向转动
{My_StepMotor_RotateAngle(0,ZHUANDONG_FZ);}
else {My_StepMotor_Stop(10);}
if((lighVla_up - lighVla_down)>RONGCHAZHI_UD ) //调整向强光方向转动
{My_StepMotor_RotateAngle(1,ZHUANDONG_ZZ);}
else if((lighVla_down - lighVla_up )>RONGCHAZHI_UD )//调整向强光方向转动
{My_StepMotor_RotateAngle(1,ZHUANDONG_FZ);}
else {My_StepMotor_Stop(10);}
break;
case 1: //手动模式
if(KeyIsPressed(KEY_1))//按键按下
{
My_StepMotor_RotateAngle(0,ZHUANDONG_ZZ); //转动 度数 正值一个方向 负值另一个方向
}
else if(KeyIsPressed(KEY_3))//按键按下
{
My_StepMotor_RotateAngle(0,ZHUANDONG_FZ);//转动 度数 正值一个方向 负值另一个方向
}
else {My_StepMotor_Stop(0);}
if(KeyIsPressed(KEY_2))//按键按下
{
My_StepMotor_RotateAngle(1,ZHUANDONG_FZ);//转动 度数 正值一个方向 负值另一个方向
}
else if(KeyIsPressed(KEY_4))//按键按下
{
My_StepMotor_RotateAngle(1,ZHUANDONG_ZZ);//转动 度数 正值一个方向 负值另一个方向
}
else {My_StepMotor_Stop(10);}
break;
default: break;
}
lighVla_left =1000 - 1000My_ADC_GetValue(ADC1,ADC_Channel_0)/4096; lighVla_up = 1000 - 1000My_ADC_GetValue(ADC1,ADC_Channel_1)/4096; lighVla_right = 1000 - 1000My_ADC_GetValue(ADC1,ADC_Channel_2)/4096; lighVla_down = 1000 - 1000My_ADC_GetValue(ADC1,ADC_Channel_3)/4096; if(disFlag == 1)//更新显示
{
disFlag =0;
FRONT_COLOR=Color16_LIGHTBLUE; disYplace=2; //显示所在行递增变量
sprintf(dis0,"上:%d ",lighVla_up);//打印
MyLCD_Show(4,disYplace++,dis0);//显示
sprintf(dis0,"%d ",lighVla_left);//打印
MyLCD_Show(4,disYplace,dis0);//显示
sprintf(dis0,"%d ",lighVla_right);//打印
MyLCD_Show(12,disYplace++,dis0);//显示
//All notes can be deleted and modified//
if(rememberMode != setMode)
{
rememberMode = setMode;//记录设置模式
if(setMode == 0)MyLCD_Show(8,disYplace++,"自动 ");//显示
else if(setMode == 1)MyLCD_Show(8,disYplace++,"手动 ");//显示
}
batteryVolt = My_ADC_GetValue(ADC1,ADC_Channel_4)*3.3/4096 *2 ; if(batteryVolt>4.15) //电压值对比
{BatCap = 0.99;}//容量
else if(batteryVolt<3.4)
{BatCap =0;}
else
{BatCap = (batteryVolt-3.4)/(4.15-3.4);}//正常情况下计算比例
if(BatCap<0.45){FRONT_COLOR=Color16_RED; }
sprintf(dis0,"B:%3.1fv Q:%02d%% ",batteryVolt,(int)(BatCap*100));
MyLCD_Show(1,6,dis0);//显示
}
}
}