太阳能单片机程序

#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);//显示

}

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值