全套原代码,可以报警拨打手机。
单片机源程序如下:
- //#include "lcd1602_drive.h"
- //#include "main.h"
- //#include "ldssht10.h"
- #include "menu.h"
- #include "sht10.h"
- #include "delay.h"
- #include "lcd1602.h"
- #include "PWM.h"
- #include "TIMER.h"
- #include "PID.h"
- #include "EXIT.h"
- #include "DS1302.H"
- #include "moto.h"
- #include"Flash.h"
- #include "Irda.h"
- #include "DS18B20.h"
- #include "oled.h"
- #include "bmp.h"
- #include "stm32f10x_lib.h"
- //#include "adc.h"
- typedef volatile unsigned char vu8;
- typedef volatile unsigned short vu16;
- unsigned char DS1302_flg=0x00;
- //#include "key.h"
- u16 Now_TH=0; //当前读取到的温度值,扩大10倍数
- u16 Now_PH=0; //当前读取到的湿度值,扩大10倍数
- u16 Now_TH_D=0;
- u16 Now_PH_D=0;
- u16 Now_TH_S=0; //当前读取到的温度值,扩大10倍数
- u16 Now_PH_S=0; //当前读取到的湿度值,扩大10倍数
- u16 avr_ph;
- float avr_ph_f;
- unsigned char Run_days=1; //孵蛋进行天数
- unsigned char Run_YN=0; //系统是否运行中,Y:运行中,N:停止中
- u32 cnt=0;
- u32 cnt_wet=0;
- u32 cnt_wet_h=0;
- //u16 heat_pwm=0;
- //u16 set_temprature=0x0186;//39.0 度
- u16 Set_Temp_date_num[100] ={0};
- u16 Set_Shidu_date_num[100] ={0};
- u16 Set_MOto_fanzhuang[100] ={0
- // 0x004e,0x004e,0x004e,0x004e,0x004e,0x004e,0x004e,0x004e,0x4e,0x4e
- // ,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e
- // ,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e
- };
- u16 Set_fan_runtime[100] = {0};
- u16 Set_egg_codetime[100] = {0};
- u16 set_temprature = 0X0172;//0x0177;//0x0177;//37.5 度
- u16 set_Shidu = 0x00fa;
- u16 target_temprature; //需要达到的目标温度
- u16 target_Shidu;//需要达到的目标的湿度
- u8 target_moto; //当日是否需要翻蛋设置参数
- u8 target_fan; //当日排风扇是否工作设置参数
- u8 Moto_turn_flag;
- u8 moto_start_flag;//电机启动转动标示
- u8 dianji_conut = 0; //电机转动时间控制参数
- u16 Shubeng_Time_Control_Count = 0;//水泵时间计时
- u16 Shuibeng_Control_flag = 0; //水泵工作标志位默认不工作
-
- u8 Close_jiashi_flg = 0x01; //关加湿器标志位
- u8 fengshan_stop_flg = 0x00; //关关风扇标志位
- //unsigned char set_mototurn = 0; //设置翻蛋参数
- u8 set_mototurn = 0;
- u8 set_fan_time = 0; //设置排风扇运行参数
- //uchar s2,s3,s4;
- unsigned char key_num_check_flg = 0x00;
- uchar* table_1[]={"Show Para","Set Para","Hatch Days:","Set TH:","Set PH:","Turn Egg Y/N:"}; //需要显示的字符串
- uchar* table_0[]={"Display","Set Days","Set TH","Set RH","Current Set","Set Pid_P","Set Pid_D","Set Date","Display Tmp RH","Set Moto Chage","Set Moto Init"};//***主菜单显
- unsigned char Display_digit[10]={"0123456789"}; //定义字符数组显示数字
- unsigned char* display_YN[]={"Start Y/N?","Stop Y/N?","Reset Y/N?"}; //显示是不是开始或者停止运行运行参数
- u16 PID_Check_flg=0x00; // 1s检测一次温度标志位
- u8 Display_tp_flag = 0x00;//设备不在孵蛋状态是,读取温度参数值,并显示的标示
- u16 Set_Temp_Flash_Date[1]; //写入flash的初始温度
- u16 Set_Shidu_Flash_Date[1]; //写入flash的初始湿度
- u16 Set_Days_Flash_Date[1]; //写入flash的初始天数
- u16 Set_PID_P_Flash_Date[1]; //写入flash的初始P
- u16 Set_PID_D_Flash_Date[1]; //写入flash的初始D
- u16 Set_Fanzhuan_Flash_Date[1]; //写入flash的初始反转
- u16 Read_Temp_Flash_Date[100];
- u16 Read_Shidu_Flash_Date[100];
- u16 Read_Fanzhuan_Flash_Date[100];
- u16 Read_Temp_Flash_Date_All[1];
- u16 Read_Shidu_Flash_Date_All[1];
- u16 Read_Fanzhuan_Flash_Date_All[1];
- u16 Read_Days_Flash_Date[1];
- u16 Read_PID_P_Flash_Date[1];
- u16 Read_PID_D_Flash_Date[1];
- u16 Flash_Read_Days_TH_PH_Turn_All_Set[5]={0};
- u16 Flash_Write_Days_TH_PH_Turn_All_Set[5] = {0,0,0,0,1}; //所有天数,温度,湿度,和翻转设置
- u8 Moto_Set_Time_flg = 0x00;
- //u8 Moto_Set_flg = 0x00;
- u8 Moto_Left_flg = 0x01;
- u8 Moto_Right_flg = 0x00;
- u8 Moto_Stop_flg = 0x00;
- u8 wet_state_flag=0;
- u16 Moto_Minte_conut = 0x00;
- u8 break_flag=0;
- unsigned char Set_Input_Day_Num = 30; // 初始化天数是30天 最大只能99
- unsigned char Set_Input_Day_Num_t;
- unsigned short PID_P = 2000;//10
- unsigned short PID_D = 5;//5
- u8 Set_MOto_fangzhuan_num = 0x59; //89 Y
- unsigned char set_year = 14;
- unsigned char set_month = 5;
- unsigned char set_day = 29;
- unsigned char set_hour =23;
- unsigned char set_minute = 22;
- unsigned char set_second =30;
- unsigned char second,minute,hour,day,month,year;
- unsigned char minute_d,hour_d,second_d,init_date_state,date_erro_flag;
- u32 cnt_d;
- unsigned char Now_minute,Now_year,Now_month,Now_day,Now_hour; //记录系统启动日期
- //unsigned char Stop_year,Stop_month,Stop_day; // 记录系统停止的日期
- unsigned char Stop_year,Stop_month,Stop_day,set_time; // 记录系统停止的日期
- unsigned char wetfan_state,hotfan_state;
- unsigned char LCD_now_state; // 液晶显示当前状态 SKY HU
- unsigned char LCD_next_state; // 液晶显示下一个状态 SKY HU
- unsigned char LCD_mouse; // ->指示位置 SKY HU
- unsigned char KEY_onoff; //是否开始运行 >|
- unsigned char KEY_reset; //是否复位设定参数按键CH-
- unsigned char KEY_up; //往下翻页按键识别 -
- unsigned char KEY_down; //往下翻页按键识别 +
- unsigned char KEY_confirm; //确认按键识别 EQ
- unsigned char KEY_cancel; //取消按键识别 >>|
- unsigned char KEY_back; //返回按键识别 CH+
- unsigned char KEY_data; //数字按键识别标示 0~9
- unsigned char KEY_value; //数字按键数值 0~9
- unsigned char* KEY_char; //数字按键数值 字符型 “0~9”
- unsigned char KEY_time; //设置时间按钮 100+
- unsigned char KEY_pre;
- unsigned char KEY_next;
- unsigned char KEY_mode;
- unsigned char Cancel_flag; //收到消除标志符号,标示要消除输入错误的值
- unsigned char Set_day_value; //记录需要修改的是哪一天的参数
- unsigned char UpDown_flag; //翻页标示
- //unsigned char ONOFF_flag; //当前启动关闭状态标示 0:关闭; 1:开启
- unsigned char digit[10]={"0123456789"}; //定义字符数组显示数字
- unsigned char bird_mode,Fan_mode, Moto_Runtime, Fan1_Opentime, Warning_Switch,Pump_Runtime; //5个参数变量
- unsigned char Set_bird_mode,Set_Fan_mode, Set_Moto_Runtime, Set_Fan1_Opentime, Set_Warning_Switch,Set_Pump_Runtime; //5个参数变量
- unsigned char Cold_Runtime, Cold_Temp,High_Temp,Low_Temp,pid_mode,wet_time,th_step,wet_fan_speed;
- unsigned char Set_Cold_Runtime, Set_Cold_Temp,Set_High_Temp,Set_Low_Temp,Set_self_test,Set_pid_mode,Set_wet_time,Set_th_step,Set_wet_fan;
- u32 hot_cnt;
- float wendunum1[]={0.00};
- float shidunum1[]={0.00};
- float wendunum1_S[]={0.00};
- float shidunum1_S[]={0.00};
- u8 egg_flag;
- u8 self_test_over=0;
- unsigned char hand_egg_turn,lcd_close_flag,disp_mode,hand_add_water;
- /*红外参数变量设定*/
- unsigned char* bird_name;
- u8 fhua_days;
- u8 step_days[4];
- u16 wendu_t[4],shidu_t[4];
- u8 fandan_t[4],paifen_t[4],liang_t[4];
- u8 egg_size;
- u32 fan_erro_cnt;
- #define REMOTE_ID 0
- #define RDATA PAin(0) //红外数据输入脚
- u8 fac_us=0;//us延时倍乘数
- u16 fac_ms=0;//ms延时倍乘数
- u32 Remote_Odr=0; //命令暂存处
- u8 Remote_Cnt=0; //按键次数,此次按下键的次数
- u8 Remote_Rdy=0; //红外接收到数据
- u8 key;
- u8 set_flag=0;
- u16 start_year=14;//2014;
- u16 start_month=5;//5;
- u16 start_day =17;//17;
- u16 target_cold;
- int start_time_ymd;
- int power_val;
- u32 fan_detect_cnt;
- void delay_init(u8 SYSCLK);
- void delay_irda_us(u32 nus);
- void delay_us(u32 nus);
- void delay_ms(u16 nms);
- u8 Remote_Process(void); //红外接收到数据处理
- u8 Pulse_Width_Check(void);//检查脉宽
- void RCC_Configuration(void); //时钟配置
- void GPIO_Configuration(void);//GPIO口配置
- void NVIC_Configuraton(void);//flash调试
- void RCC_Configuration(void);//时钟配置
- void EXTI_Configuration(void);
- void Display_0(void); //液晶状态0下面的显示
- void Read_THPH(float *wendu,float *shidu);
- void read_new_para(void);
- u8 moto_goto_start(void);
- u8 moto_goto_end(void);
- void self_test(void);
- void device_init(void);
- u8 egg_turn(void);
- u8 add_water(u8 init);
- //u8 open_wet(void);
- u8 egg_erro_flag=0;
- u8 wet_erro_flag=0;
- u8 sen_erro_flag=0;
- u8 sen_erro_flag_S=0;
- int sen_erro_all=0;
- u8 w_first=0;
- u32 w_cnt_t1=0;
- u32 w_cnt_t2=0;
- u8 turn_flag=0;
- u8 no_power_flag,dianchi_flag;
- u8 cold_flag;
- u32 p_cnt_t1=0;
- u32 p_cnt_t2=0;
- u32 s1_cnt,s2_cnt;
- u32 wet_t_cnt ;
- u8 fan_erro_flag;
- unsigned char no_water_flag,no_water_flag_pre,get_water_flag;
- u32 get_water_cnt;
- int temp_cnt;
- int fan_cnt,fan_cnt_pre,add_water_cnt,open_wet_cnt,wet_cnt_tj,wet_cnt_si;
- u8 wet_many_flag,wet_high_temp;
- int max_s1_temp,max_s2_temp;
- int min_s1_temp,min_s2_temp;
- int max_s1_ph,max_s2_ph;
- int min_s1_ph,min_s2_ph;
- unsigned short ds18b20_temp,dot,tt;
- u32 low_t_cnt,high_t_cnt,low_wet_cnt,high_wet_cnt,power_erro_cnt,bump_erro_cnt,fan_erro_cnt;
- void warning_report(void) ;
- void IWDG_Init(u8 prer,u16 rlr);
- void IWDG_Feed(void);
- void fan_ctrl(void);
- void egg_cold(void);
- void shuiben_test(void);
- //void power_switch(void) ;
- #define ADC1_DR_Address ((u32)0x4001244C)
- #define ADC2_DR_Address ((u32)0x4001284C)
- vu16 ADCConvertedValue;
- u16 AD_value[2];
- //vu16 Temperature;
- void DMA_Configuration(void);
- void ADC_Configuration(void);
- void ADC2_Configuration(void);
- void ADC3_Configuration(void);
- int chip_temp;
- int pw_cnt_t1 ,pw_cnt_t2, no_power_flag_pre;
- int water_lever,power_lever;
- int pid_cnt;
- u16 wet_flag;
- u8 dianchi_flag ,dianchi_val;
- u8 fan_open_flag;
- u8 open_wet(void);
- u8 fan_test(void) ;
- //void fan_detect() ;
- u8 power_detect(void);
- u8 blank;
- u32 disp_cnt;
- u8 oled_write_flag;
- u8 sen_use_flag;
- int ave_hot,max_hot;
- u32 wetfan_cnt,wetfan_cnt_t,date_erro_cnt;
- unsigned char too_wet_flag;
- u16 wet_power_level;
- u16 wet_new;
- int u_wet,his_wet;
- u32 wet_erro_cnt,wet_erro_cnt1;
- u8 wet_short_flag ;
- u32 cnt,cnt_egg_time,egg_direct;
- int cnt_turn;
- int egg_turn_time ;
- u8 egg_turn_on;
- u8 egg_use_flag;
- u32 crc_erro;
- u32 read_erro;
- u32 crc_erro_S;
- u32 read_erro_S;
-
- u8 check_flag = 0;
- u8 found_flag = 0;
- u8 bit_count = 0;
- u32 puls_high_time = 0;
- u32 puls_low_time = 0;
- u16 ADC_Get_aveg(u8 ch,u8 n);
- u16 Get_val(u8 ch);
- void hand_turn();
- u8 ueid;
- u16 ReadADCAverageValue()
- {
- u8 i;
- u32 sum = 0;
- /*for(i=0; i<8; i++)
- {
- sum+=ADCConvertedValue[i];
- }
- //sum= ADCConvertedValue; */
- return (ADCConvertedValue);
- }
- /* u16 ffan_detect()
- {
- u16 t1,t2,t4;
- float t3;
- // adcx=ADC_Get_aveg(ADC_Channel_1,10);
- //temp=(float)adcx*(3.3/4096);
- // power_lever=(ADC_GetConversionValue(ADC2)*3.3)*110/4096+10;
- t1=ADC_Get_aveg(ADC_Channel_17,10);
- t2=ADC_Get_aveg(ADC_Channel_7,10);
- t3= t2*1200/t1;
- t4=(u16)t3;
-
- return(t4);
- } */
- void temp_cal()
- {
- vu16 Temperature;
- int t;
- //t =ADCConvertedValue;
- t=ADC_Get_aveg(ADC_Channel_16,10);
- Temperature=(1.42-t*3.3/4096)*1000/4.35 + 25;
- chip_temp = chip_temp/2+Temperature/2;
- if(chip_temp>99) chip_temp=99;
- }
- // u8 water_detect();
- /* u16 ADC_Filter(void)
- {
- u16 result=0;
- u8 i;
- for(i=16;i>0;i--)
- {
- delay_nms(1);
- result += ADCConvertedValue;
- }
- return result/16;
- }
- */
- /*u8 bird_name[];
- void get_bird_name(void); */
- void I2C_Mode_config(void);
- void get_bird_name(u8 mode)
- {
- switch(mode)
- {
- case 0:
- bird_name="手动";
- fhua_days=1;
- step_days[0]=1;
- step_days[1]=0;
- step_days[2]=0;
- step_days[3]=0;
- wendu_t[0]=375;
- wendu_t[1]=372;
- wendu_t[2]=370;
- wendu_t[3]=368;
- shidu_t[0]=450;
- shidu_t[1]=550;
- shidu_t[2]=600;
- shidu_t[3]=650;
- fandan_t[0]=1;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=2;
- paifen_t[1]=6;
- paifen_t[2]=4;
- paifen_t[3]=4;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 1:
- bird_name="牡丹";
- fhua_days=21;
- step_days[0]=5;
- step_days[1]=12;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=600;
- shidu_t[1]=550;
- shidu_t[2]=600;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 2:
- bird_name="玄凤";
- fhua_days=21;
- step_days[0]=5;
- step_days[1]=12;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=450;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=2;
- fandan_t[2]=1;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 3:
- bird_name="虎皮";
- fhua_days=21;
- step_days[0]=5;
- step_days[1]=12;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=600;
- shidu_t[1]=550;
- shidu_t[2]=600;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 4:
- bird_name="和尚";
- fhua_days=24;
- step_days[0]=5;
- step_days[1]=15;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=450;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 5:
- bird_name="太阳";
- fhua_days=24;
- step_days[0]=5;
- step_days[1]=15;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=550;
- shidu_t[1]=550;
- shidu_t[2]=550;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 6:
- bird_name="灰机";
- fhua_days=28;
- step_days[0]=6;
- step_days[1]=18;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=430;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 7:
- bird_name="折中";
- fhua_days=28;
- step_days[0]=6;
- step_days[1]=18;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=450;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 8:
- bird_name="小鸡";
- fhua_days=21;
- step_days[0]=5;
- step_days[1]=14;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=380;
- wendu_t[1]=380;
- wendu_t[2]=378;
- wendu_t[3]=376;
- shidu_t[0]=600;
- shidu_t[1]=550;
- shidu_t[2]=600;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 9:
- bird_name="太平";
- fhua_days=19;
- step_days[0]=5;
- step_days[1]=10;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=600;
- shidu_t[1]=550;
- shidu_t[2]=600;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 10:
- bird_name="金刚";
- fhua_days=26;
- step_days[0]=6;
- step_days[1]=16;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=420;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 11:
- bird_name="葵花";
- fhua_days=28;
- step_days[0]=6;
- step_days[1]=18;
- step_days[2]=3;
- step_days[3]=21;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=420;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 12:
- bird_name="塞内";
- fhua_days=26;
- step_days[0]=6;
- step_days[1]=16;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=450;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 13:
- bird_name="亚马";
- fhua_days=28;
- step_days[0]=6;
- step_days[1]=18;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=430;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 14:
- bird_name="吸蜜";
- fhua_days=26;
- step_days[0]=6;
- step_days[1]=16;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=375;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=450;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 15:
- bird_name="亚历";
- fhua_days=25;
- step_days[0]=6;
- step_days[1]=15;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=376;
- wendu_t[1]=374;
- wendu_t[2]=372;
- wendu_t[3]=370;
- shidu_t[0]=450;
- shidu_t[1]=450;
- shidu_t[2]=450;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 16:
- bird_name="鹌鹑";
- fhua_days=16;
- step_days[0]=3;
- step_days[1]=10;
- step_days[2]=2;
- step_days[3]=1;
- wendu_t[0]=380;
- wendu_t[1]=380;
- wendu_t[2]=378;
- wendu_t[3]=376;
- shidu_t[0]=550;
- shidu_t[1]=550;
- shidu_t[2]=600;
- shidu_t[3]=650;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
- case 17:
- bird_name="孔雀";
- fhua_days=27;
- step_days[0]=6;
- step_days[1]=17;
- step_days[2]=3;
- step_days[3]=1;
- wendu_t[0]=380;
- wendu_t[1]=378;
- wendu_t[2]=376;
- wendu_t[3]=372;
- shidu_t[0]=600;
- shidu_t[1]=600;
- shidu_t[2]=650;
- shidu_t[3]=700;
- fandan_t[0]=4;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=4;
- paifen_t[0]=4;
- paifen_t[1]=3;
- paifen_t[2]=2;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
- break;
-
- case 18:
- bird_name="保温";
- fhua_days=1;
- step_days[0]=1;
- step_days[1]=0;
- step_days[2]=0;
- step_days[3]=0;
- wendu_t[0]=365;
- wendu_t[1]=372;
- wendu_t[2]=370;
- wendu_t[3]=368;
- shidu_t[0]=500;
- shidu_t[1]=520;
- shidu_t[2]=600;
- shidu_t[3]=650;
- fandan_t[0]=0;
- fandan_t[1]=0;
- fandan_t[2]=0;
- fandan_t[3]=0;
- paifen_t[0]=2;
- paifen_t[1]=1;
- paifen_t[2]=1;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=0;
- liang_t[3]=0;
- egg_size=6;
- break;
- case 19:
- bird_name="保手";
- fhua_days=1;
- step_days[0]=1;
- step_days[1]=0;
- step_days[2]=0;
- step_days[3]=0;
- wendu_t[0]=365;
- wendu_t[1]=372;
- wendu_t[2]=370;
- wendu_t[3]=368;
- shidu_t[0]=500;
- shidu_t[1]=520;
- shidu_t[2]=600;
- shidu_t[3]=650;
- fandan_t[0]=0;
- fandan_t[1]=0;
- fandan_t[2]=0;
- fandan_t[3]=0;
- paifen_t[0]=2;
- paifen_t[1]=1;
- paifen_t[2]=1;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=0;
- liang_t[3]=0;
- egg_size=6;
- break;
- default:
- bird_name="手动";
- fhua_days=1;
- step_days[0]=1;
- step_days[1]=0;
- step_days[2]=0;
- step_days[3]=0;
- wendu_t[0]=375;
- wendu_t[1]=372;
- wendu_t[2]=370;
- wendu_t[3]=368;
- shidu_t[0]=450;
- shidu_t[1]=550;
- shidu_t[2]=600;
- shidu_t[3]=650;
- fandan_t[0]=1;
- fandan_t[1]=1;
- fandan_t[2]=2;
- fandan_t[3]=0;
- paifen_t[0]=4;
- paifen_t[1]=2;
- paifen_t[2]=1;
- paifen_t[3]=1;
- liang_t[0]=0;
- liang_t[1]=0;
- liang_t[2]=1;
- liang_t[3]=1;
- egg_size=6;
-
- break;
- }
- }
- void init_val()
- {
- fan_detect_cnt=0;
- u_wet=0;
- his_wet=0;
- too_wet_flag=0;
- wetfan_cnt=0;
- wetfan_cnt_t=0;
- fan_erro_flag=0;
- fan_erro_cnt=0;
- avr_ph_f=400;
- add_water_cnt=0;
- wet_high_temp=0;
- wet_many_flag=0;
- open_wet_cnt=0;
- wet_cnt_tj=0;
- wet_cnt_si=0;
- low_t_cnt=0;
- high_t_cnt=0;
- low_wet_cnt=0;
- high_wet_cnt=0;
- max_s1_temp=0;
- max_s2_temp=0;
- min_s1_temp=500;
- min_s2_temp=500;
- max_s1_ph=0;
- max_s2_ph=0;
- min_s1_ph=990;
- min_s2_ph=990;
- power_erro_cnt=0;
- bump_erro_cnt=0;
- fan_erro_cnt=0;
- date_erro_cnt=0;
- wet_erro_cnt=0;
- wet_erro_cnt1=0;
- wet_short_flag=0;
- wet_t_cnt=0;
- crc_erro=0;
- read_erro=0;
- crc_erro_S=0;
- read_erro_S=0;
- sen_erro_flag=0;
- sen_erro_flag_S=0;
- sen_erro_all=0;
- }
- int main()
- {
- u32 cnt_t,tt,t3;
- u8 w_t,no_w_flag;
- // value humi_val,temp_val;
- // unsigned char error,checksum;
- // unsigned int wendu,shidu;
- // char key_num_check=0x04;
-
- // u8 minute_test = 0x00;
- check_flag = 0;
- found_flag = 0;
- bit_count = 0;
- puls_high_time = 0;
- puls_low_time = 0;
- egg_turn_init();
- egg_use_flag=0;
- init_val();
- wet_state_flag =0;
- wet_flag=0;
- oled_write_flag=0;
- disp_cnt=0;
-
- init_date_state=0;
- date_erro_flag=0;
-
- // water_level=0;
- fan_cnt=0;
- fan_cnt_pre=1;
- no_power_flag_pre=0;
- chip_temp=0;
- pid_cnt=0;
- PID_Init();
- dianchi_flag=0;
- egg_erro_flag=0;
- wet_erro_flag=0;
- no_water_flag=0;
- get_water_flag=0;
- sen_erro_flag=0;
- sen_erro_all=0;
- sen_erro_flag_S=0;
- w_first=0;
- w_cnt_t1=0;
- w_cnt_t2=0;
- p_cnt_t1=0;
- p_cnt_t2=0;
- lcd_close_flag=0;
- disp_mode=0;
- LCD_now_state = 0x00; //液晶初始化显示状态位0
- RCC_Configuration();
- GPIO_Configuration();
- device_init() ;
- //DMA_Configuration();
- ADC_Configuration();
- ADC2_Configuration();
- // ADC3_Configuration();
- EXTI_Configuration();
- NVIC_Configuraton();
- ADC_ITConfig(ADC2,ADC_IT_AWD,ENABLE);
- IWDG_Init(7,2500); //16s
- IWDG_Feed();
- delay_init(72);
- // KEY_INIT();
- TIMER_INIT();
- //GPIO_SetBits(GPIOC,GPIO_Pin_11); //选择适配器
- //GPIO_ResetBits(GPIOC,GPIO_Pin_10); //电瓶充电
- // Init_DS1302();
- LCD_init();
- OLED_Init(); //初始化OLED
- OLED_Clear() ;
- /*
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
-
- delay_nms(1000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0); */
- /*OLED_ChString(0,0,"欢迎中文版本发布");
- OLED_ChString(0,2,"中文版本欢迎发布");
- OLED_ShowString(0,4,"hello how are",16);
- OLED_ShowNum(0,6,123,3,16) ; */
- /*oled_disp_china(0,0,"欢迎中文版本发布");
- oled_disp_china(1,1,"中文版本欢迎发");
- oled_disp_string(2,2,"hello how are"); */
- // oled_disp_num(1,3,123,3);
- // LCD_disp_char(2,1,digit[(ta%10)]);
- /*OLED_ShowCHinese(72,0,4);//子
- OLED_ShowCHinese(90,0,5);//科
- OLED_ShowCHinese(108,0,6);//技 */
- // while(1);
- LCD_BK_ONOFF(1); //测试
- delay_nms(100);
- // LCD_BK_ONOFF(0); //测试
- // LCD_disp_str(0,1,"START");
- // while(1);
- /* GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
-
- delay_nms(100000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0); */
- FLASH_Unlock();
- Fan_mode = (*(vu8*) (u32)0x08030000);
- /* Moto_Runtime = (*(vu8*) (u32)0x0803A800);
- Fan1_Opentime = (*(vu8*) (u32)0x0803B000);
- Warning_Switch = (*(vu8*) (u32)0x0803B800);
- Pump_Runtime = (*(vu8*) (u32)0x0803C000); */
- Moto_Runtime = (*(vu8*) (u32)0x08030800);
- Fan1_Opentime = (*(vu8*) (u32)0x08031000);
- Warning_Switch = (*(vu8*) (u32)0x08031800);
- Pump_Runtime = (*(vu8*) (u32)0x08032000);
- Cold_Runtime = (*(vu8*) (u32)0x08032800);
- Cold_Temp = (*(vu8*) (u32)0x08033000);
- High_Temp = (*(vu8*) (u32)0x08033800);
- Low_Temp = (*(vu8*) (u32)0x08034000);
- Set_self_test = (*(vu8*) (u32)0x08034800);
- pid_mode= (*(vu8*) (u32)0x08035000);
- wet_time= (*(vu8*) (u32)0x08035800);
- bird_mode=(*(vu8*) (u32)0x08036000);
- th_step=(*(vu8*) (u32)0x08036800);
- wet_fan_speed=(*(vu8*) (u32)0x08037000);
- Set_bird_mode= bird_mode;
- Set_wet_time=wet_time;
- Set_th_step=th_step;
- Set_wet_fan=wet_fan_speed;
- Set_pid_mode=pid_mode;
- Set_Fan_mode = Fan_mode;
- Set_Moto_Runtime = Moto_Runtime;
- Set_Fan1_Opentime = Fan1_Opentime;
- Set_Warning_Switch =Warning_Switch;
- Set_Pump_Runtime = Pump_Runtime;
- Set_Cold_Runtime=Cold_Runtime;
- Set_Cold_Temp=Cold_Temp;
- Set_High_Temp=High_Temp;
- Set_Low_Temp =Low_Temp;
- start_year = (*(vu8*) (u32)0x0803D000);
- start_month = (*(vu8*) (u32)0x0803D002);
- start_day = (*(vu8*) (u32)0x0803D004);
- start_time_ymd = (*(vu8*) (u32)0x0803D010);
- // GPIO_OUT_config();
- // delay_us(1);
- // LCD_disp_str(0,1,"TE");
- // LCD_disp_str(0,2,"RH");
- // LCD_disp_str(0,1,"p1");
- PWM_Init();
- TIM2->CCR2 = 0;//0
- TIM2->CCR4 = 0;
- TIM8->CCR1 = 0;
- TIM8->CCR2 = 0;
- TIM8->CCR3 = 0;
- TIM8->CCR4 = 0;
- // GPIO_SetBits(GPIOA,GPIO_Pin_5);
- // GPIO_ResetBits(GPIOA,GPIO_Pin_4);
- //Moto_Ctrol_Right( );
- // moto_goto_start();
- /* GPIO_ResetBits(GPIOE,GPIO_Pin_3);
- GPIO_ResetBits(GPIOC,GPIO_Pin_3); //关水泵
- GPIO_SetBits(GPIOE,GPIO_Pin_3);
- do {}while(1); */
- temp_cal();
- self_test_over=0;
-
- OLED_Clear();
- oled_disp_china(3,0,"启动");
- delay_nms(2000);
-
- self_test();
- s_connectionreset();//sht10
- s_connectionreset_S();//sht10
- s_softreset();
- s_softreset_S();
- //Read_THPH_S(wendunum1_S,shidunum1_S); // 显示温度和湿度
- //if( Now_TH_S>max_s2_temp) max_s2_temp= Now_TH_S;
- self_test_over=1;
- egg_flag=1;
- Run_YN=1;
- /* OLED_Clear();
- oled_disp_china(3,0,"启动");
- delay_nms(2000);*/
- //PWM_Init();
- ///*****************************初始化温度显示区***********************************/
- // LCD_disp_str(2,1,"TTT.TC");
- //
- ///*****************************初始化湿度显示区***********************************/
- /* LCD_disp_str(2,2,"RRR.R%");
- delay_nms(10);
- LCD_clr();
- LCD_write_command(0x0C);//显示开,关光标,闪烁
- Read_THPH(wendunum1,shidunum1); // 显示温度和湿度
- Display_0();
- delay_nms(500);
- Moto_Ctrol_Right();
- delay_nms(1000);
- Moto_Stop();
- delay_nms(1000); */
- // Moto_Ctrol_Left();
- /*TEST FOR ds1302*/
-
- // LCD_clr();
- // while(1)
- // {
- /* Date_Read(); //读取当前日期
-
- Display_date(); //显示当前日期
- delay_nms(2000);
- */
- /* do
- {
- }
- while(1); */
- // }
- // Date_Display(); // 显示日期
- LCD_now_state = 0x00;
- LCD_next_state = 0x00;
- wetfan_state=0x00;
- hotfan_state=0x00;
- LCD_mouse = 0;
- // LCD_disp_str(0,2," ");
- // LCD_disp_str(0,1,"->");
- // LCD_disp_str(2,1,table_0[0]);
- // LCD_disp_str(2,2,table_0[1]);
- key_num_check_flg = 0x00;
- /*****************************************************
- 初始化显示起始页面
- ******************************************************/
- // Read_THPH(wendunum1,shidunum1); // 读取当前温度和湿度
- Run_days = 1; //初始启动默认没启动
- Run_YN = 1; //默认不启动
- LCD_now_state = 0x00; //初始化液晶显示状态机状态为0
- LCD_next_state = 0x00;
- // Display_0(); //显示默认页面
- PID_Check_flg = 0;
- Display_tp_flag = 0;
- GPIO_SetBits(GPIOE,GPIO_Pin_3); //关加湿
- GPIO_SetBits(GPIOC,GPIO_Pin_3); //关水泵
- // LCD_disp_str(0,1,"p3");
- read_new_para();
- // if(Set_self_test==2)
- // {
- // ds18b20_start();
- // }
- cnt_wet=0;
- cnt_wet_h=0;
- s2_cnt=0;
- hand_egg_turn=0;
- hand_add_water=0;
- while(1)
- {
- /*s1_cnt= cnt;
- if(s1_cnt!=s2_cnt)
- {
- Read_THPH_S(wendunum1_S,shidunum1_S); // 显示温度和湿度
- if( Now_TH_S>max_s2_temp) max_s2_temp= Now_TH_S;
- s2_cnt= cnt;
- } */
- temp_cal();
- if(lcd_close_flag==1)
- {
- low_t_cnt=0;
- high_t_cnt=0;
- low_wet_cnt=0;
- high_wet_cnt=0;
- power_erro_cnt=0;
- bump_erro_cnt=0;
- fan_erro_cnt=0;
- add_water_cnt=0;
- open_wet_cnt=0;
- max_s1_temp=0;
- max_s2_temp=0;
- min_s1_temp=500;
- min_s2_temp=500;
- max_s1_ph=0;
- max_s2_ph=0;
- min_s1_ph=990;
- min_s2_ph=990;
- fan_erro_cnt=0;
- wetfan_cnt=0;
- date_erro_cnt=0;
- wet_erro_cnt=0;
- wet_erro_cnt1=0;
- wet_short_flag=0;
- // sen_erro_flag=0;
- // sen_erro_flag_S=0;
- }
- // if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7)==0)
- //fan_cnt=TIM1->CNT; //fan_cnt+1;
- /*chip_temp =ADC_Filter();
- Temperature=(1.42-chip_temp*3.3/4096)*1000/4.35 + 25;
- chip_temp = Temperature; */
- /* if(Set_self_test==3)
- {
- // power_switch() ;
- } */
- IWDG_Feed();
- // shuiben_test();
- /// LCD_disp_str(0,1,"p4");
- if(Remote_Rdy)
- {
- display();
- }
- t3 = (u32)TIM_GetCounter(TIM3);
- if(t3>20000 && found_flag==1)
- {
- GPIO_ResetBits(GPIOC,GPIO_Pin_0); //guan蜂鸣器
- }
- if(lcd_close_flag==1)
- {
- GPIO_ResetBits(GPIOE,GPIO_Pin_4); //关背光
- // OLED_Init();
- //OLED_Display_Off();
- // OLED_Init();
- }
- else
- {
- //OLED_Display_On();
- }
-
- /* if(Set_self_test==2)
- {
-
- tt= ds18b20_read();
- if(tt!=0) ds18b20_temp =tt;
- } */
-
- if(Run_YN != 0) //表示系统启动工作,开始加热加温,正常工作
- {
- // add_water();
- // cnt=2;
- // LCD_disp_char(0,0,digit[cnt%10]);
- // cnt=cnt+1;
- //fan
-
- /*GPIO_SetBits(GPIOA,GPIO_Pin_7);
- GPIO_ResetBits(GPIOA,GPIO_Pin_6);
- GPIO_SetBits(GPIOA,GPIO_Pin_3); */
- //fan
- //fan_set();
- if(LCD_now_state == 0x00)
- {
- egg_cold();
- read_new_para();
- Set_Input_Day_Num_t=Set_Input_Day_Num;
- }
-
- IWDG_Feed();
-
- // no_power_flag= GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5);
- no_power_flag=power_detect();
- if(no_power_flag==1)
- {
- pw_cnt_t1=cnt;
- no_power_flag_pre=1;
- }
- pw_cnt_t2=cnt;
- if(( pw_cnt_t2-pw_cnt_t1)>32)
- {
- no_power_flag_pre=0;
- }
-
- if(no_power_flag==1 || no_power_flag_pre==1)
- {
- wet_erro_flag=0;
- egg_erro_flag=0;
- egg_turn_init();
- sen_erro_flag=0;
- sen_erro_flag_S=0;
- sen_erro_all=0;
- hand_egg_turn=1;
- }
- if(no_power_flag==0)
- {
- // if(egg_erro_flag==0) egg_turn();
- hand_turn();
- IWDG_Feed();
- fan_ctrl();
- /********************风扇和加湿控制****************************/
- // if(Now_PH>target_Shidu) //当检测的湿度大于设置湿度+5时则关掉加湿
- // {
- // GPIO_SetBits(GPIOE,GPIO_Pin_3); //关加湿
- // }
- // LCD_disp_str(0,1,"p5");
- /*if(Now_PH<target_Shidu-10)
- {
- if(wet_erro_flag==0)
- open_wet();
- } */
- }
- // LCD_disp_str(0,1,"p6");
- IWDG_Feed();
- // Date_Display();
- if(Display_tp_flag == 1)
- {
- if(LCD_now_state == 0x00) //当前状态在0X00状态下
- {
- Display_0(); //刷新显示页面
- }
- disp_cnt= disp_cnt+1;
- }
- Display_tp_flag = 0;
- // delay_nms(500);
-
- // PID_Check_flg = 0x00;
- // }
- cnt_t=cnt;
- w_t=Pump_Runtime/10;
- if(cnt_t%16 == 0x00&&LCD_now_state == 0x00)
- {
- if(w_t==1)
- {
- tt=2048;
- }
- else if(w_t==0)
- {
- tt=1024;
- }
- else if(w_t==2)
- {
- tt=512;
- }
- else if(w_t==4)
- {
- tt=8192;
- }
- else if(w_t==5)
- {
- tt=64;
- }
- else
- {
- tt=4096;
- }
- if((Now_PH_D<(target_Shidu -20))&&(cnt_t%512==0)&&(Set_self_test !=8)&&(wet_erro_flag==0))
- {
- wet_erro_flag= add_water(2);
-
- }
- else
- {
- if((wet_erro_flag==0&& cnt_t%tt==0) && (Set_self_test !=8))
- {
- wet_erro_flag= add_water(0);
- }
- }
- /*if(cnt_t%512==0)
- {
- fan_detect();
- } */
- warning_report();
- }
- if(hand_add_water==1)
- {
- wet_erro_flag=0 ;
- wet_erro_flag= add_water(0);
- hand_add_water=0;
- }
- }
- else
- {
- hand_egg_turn=1;
- init_val();
- egg_turn_on=0;
- egg_erro_flag=0;
- GPIO_SetBits(GPIOC,GPIO_Pin_3); //关水泵
- GPIO_SetBits(GPIOE,GPIO_Pin_3); //关加湿
- TIM8->CCR1 = 0; //关排风
- TIM8->CCR2=0; //关热风
- TIM8->CCR3=0; //关辅热风扇
- TIM8->CCR4=0; //关加湿热风扇
- // GPIO_ResetBits(GPIOC,GPIO_Pin_1); //关风扇
- Close_jiashi_flg = 0x01; //没有启动是不会抽水的
- // Moto_Stop();
- TIM2->CCR3 = 0;
- TIM3->CCR1 = 0;
- TIM3->CCR2 = 0;
- PID_Init();
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- if(Display_tp_flag == 1)
- {
- // Read_THPH(wendunum1,shidunum1); // 显示温度和湿度
- if(LCD_now_state == 0x00) //当前状态在0X00状态下
- { //read_new_para();
- Display_0(); //刷新显示页面
- }
- Display_tp_flag = 0;
- disp_cnt= disp_cnt+1;
- }
- }
- IWDG_Feed();
- }
- }
- void device_init(void)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_3); //关水泵
- GPIO_SetBits(GPIOE,GPIO_Pin_3); //关湿度
- // GPIO_SetBits(GPIOC,GPIO_Pin_6); //关风扇1
- TIM8->CCR1 = 0;
- // GPIO_SetBits(GPIOC,GPIO_Pin_7); //关风扇2
- TIM8->CCR2 = 0;
- TIM8->CCR3=0; //关辅热风扇
- TIM8->CCR4=0; //关加湿热风扇
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- GPIO_SetBits(GPIOA,GPIO_Pin_2); //关风扇2
- // delay_nms(1000); //
- // GPIO_ResetBits(GPIOA,GPIO_Pin_2);
- GPIO_SetBits(GPIOB,GPIO_Pin_12); //关高亮LED
- Moto_Stop();
- }
- void IWDG_Init(u8 prer,u16 rlr)
- {
- IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
- IWDG_SetPrescaler(prer);
- IWDG_SetReload(rlr);
- IWDG_ReloadCounter();
- IWDG_Enable();
- }
- void IWDG_Feed(void)
- {
- IWDG_ReloadCounter();
- }
- void time_check()
- {
- if( init_date_state==0)
- {
- cnt_d=cnt;
- second_d=second;
- minute_d=minute;
- hour_d=hour;
- }
-
- if( init_date_state==1)
- {
- if(cnt>cnt_d+8)
- {
-
- if( (hour_d==hour&& minute_d== minute &&second_d==second ) || (minute> (minute_d+4) ))
- {
-
- date_erro_flag=1;
- }
- else
- {
- date_erro_flag=0;
- }
-
- cnt_d=cnt;
- second_d=second;
- minute_d=minute;
- hour_d=hour;
- if(date_erro_flag==1)
- {date_erro_cnt++;}
- }
- }
- init_date_state=1;
- }
- void day_cal(void)
- {
- char day_time0[12]={31,28,31,30,31,30,31,31,30,31,30,31};
- char day_time1[12]={31,29,31,30,31,30,31,31,30,31,30,31};
- int start_day_cnt,now_day_cnt,i,run_day_t;
- Date_Read();
- time_check();
- start_day_cnt=0;
- if(start_year%4==0)
- {
- for( i=1;i<start_month;i++)
- {
- start_day_cnt=start_day_cnt+day_time1[i-1];
- }
- start_day_cnt=start_day_cnt+start_day ;
- }
- else
- {
- for( i=1;i<start_month;i++)
- {
- start_day_cnt=start_day_cnt+day_time0[i-1];
- }
- start_day_cnt=start_day_cnt+start_day ;
- }
- now_day_cnt=0;
- if(year%4==0)
- {
- for( i=1;i<month;i++)
- {
- now_day_cnt=now_day_cnt+day_time1[i-1];
- }
- now_day_cnt=now_day_cnt+day ;
- }
- else
- {
- for( i=1;i<month;i++)
- {
- now_day_cnt=now_day_cnt+day_time0[i-1];
- }
- now_day_cnt=now_day_cnt+day ;
- }
- if(year>start_year)
- {
- if(start_year%4==0)
- {
- now_day_cnt= now_day_cnt+366;
- }
- else
- {
- now_day_cnt= now_day_cnt+365;
- }
- }
- // if(hour==23 && minute ==59 && set_flag==0)
- // {
- // set_flag=1;
- /* if(year> start_year)
- {
- month = month+12;
- }
- if(month>start_month)
- {
- day=day+30;
- } */
- //Run_days=now_day_cnt-start_day_cnt+1;
- run_day_t=now_day_cnt-start_day_cnt+start_time_ymd;
- if(run_day_t<1)
- {
- Run_days=1;
- }
- else if( run_day_t>99)
- {
- Run_days=99;
- }
- else
- {
- Run_days=run_day_t;
- }
-
- }
- void read_new_para(void)
- {
- int t2,t;
- if(Moto_Runtime>0&&Moto_Runtime<100)
- {
- t=Moto_Runtime;
- }
- else
- {
- t=8;
- }
- Readflash((u32)0x08039000,1,4,Flash_Read_Days_TH_PH_Turn_All_Set);
- Flash_Read_Days_TH_PH_Turn_All_Set[4] = Run_days;
- // ErasePageflash((u32)0x0801f000 ,0);
- // Writeflash((u32)0x0801f000,Flash_Read_Days_TH_PH_Turn_All_Set,1,5);
- // Set_Input_Day_Num=Flash_Read_Days_TH_PH_Turn_All_Set[0] ;
- Set_Input_Day_Num = Flash_Read_Days_TH_PH_Turn_All_Set[0];//天数
- if(Set_Input_Day_Num<=0|| Set_Input_Day_Num>99)
- {
- Set_Input_Day_Num=1;
- }
- day_cal();
- if(Run_days>Set_Input_Day_Num) Run_days= Set_Input_Day_Num;
- Readflash((u32)0x0803E000,1,Set_Input_Day_Num+1,Read_Temp_Flash_Date);
- Readflash((u32)0x0803E800,1,Set_Input_Day_Num+1,Read_Shidu_Flash_Date);
- Readflash((u32)0x0803F000,1,Set_Input_Day_Num+1,Read_Fanzhuan_Flash_Date);
- Readflash((u32)0x0803F800,1,Set_Input_Day_Num+1,Set_fan_runtime);
- Readflash((u32)0x0803D800,1,Set_Input_Day_Num+1,Set_egg_codetime);
- if(Set_Cold_Temp>=30&&Set_Cold_Temp<=40)
- {
- t2=Set_Cold_Temp*10;
- }
- else
- {
- t2=350;
- }
- if(cold_flag==1)
- {
- target_temprature=t2 ;
- }
- else
- {
- target_temprature = Read_Temp_Flash_Date[Run_days];
- }
- target_Shidu = Read_Shidu_Flash_Date[Run_days];
- target_moto = Read_Fanzhuan_Flash_Date[Run_days];
- target_fan = Set_fan_runtime[Run_days];
- target_cold = Set_egg_codetime[Run_days];
- if((target_moto ==0) || (Set_bird_mode==19||Set_bird_mode==18) ||(no_power_flag==1))
- {
- egg_turn_on=0;
- egg_turn_time=180000;
- }
- else
- {
- egg_turn_on=1;
- if( target_moto <9)
- {
- //egg_turn_time=target_moto*180;//1800;
- egg_turn_time=target_moto*40;//30;//1800;
- }
- else
- {
- egg_turn_time=4;//1800;
- }
- }
-
- }
-
- void shuiben_test()
- {
- do
- {
- GPIO_ResetBits(GPIOC,GPIO_Pin_3);
- delay_nms(1000);
- IWDG_Feed();
- GPIO_SetBits(GPIOC,GPIO_Pin_3);
- delay_nms(10000);
- }
- while(1);
- }
- void self_test(void)
- {
- unsigned char t1,t2;
- int i,j;
- u8 erro_flag;
- i=0;
- j=0;
- /* Moto_Ctrol_Right();
- do
- {
- if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)==0)
- {
- i++ ;
- }
- j++;
- LCD_disp_char(13,1,digit[(i%1000/100)]);
- LCD_disp_char(14,1,digit[(i%100/10)]);
- LCD_disp_char(15,1,digit[(i%10)]);
- LCD_disp_char(13,2,digit[(j%1000/100)]);
- LCD_disp_char(14,2,digit[(j%100/10)]);
- LCD_disp_char(15,2,digit[(j%10)]);
- delay_nms(500);
- }
- while(1) ; */
- LCD_clr();
- LCD_disp_str(0,1," Hello ");
- LCD_disp_str(0,2,"H20_DS 20150420");
- OLED_Clear();
- oled_disp_china(0,0,"欢迎光临");
- // delay_nms(2000);
- oled_disp_china(0,1,"版本号");
- // delay_nms(2000);
- oled_disp_string(0,2,"9G_v03 20180224");
- delay_nms(2000);
- // while(1);
-
- if(Set_self_test!=0)
- {
- LCD_clr();
- LCD_disp_str(0,1,"Power is testing ");
- OLED_Clear();
- oled_disp_china(1,0,"电源电压自检");
- erro_flag=power_detect();
- if(erro_flag==1)
- {
- LCD_disp_str(0,2,"Power is erro ");
- oled_disp_china(0,2,"电源电压自检异常");
- }
- else
- {
- LCD_disp_str(0,1,"Power is OK ");
- LCD_disp_str(0,2,"level: ");
-
- LCD_disp_char(11,2,digit[(power_lever%1000/100)]);
- LCD_disp_char(12,2,digit[(power_lever%100/10)]);
- LCD_disp_str(13,2,".");
- LCD_disp_char(14,2,digit[(power_lever%10)]);
- LCD_disp_str(15,2,"V");
- oled_disp_china(0,2,"电源电压自检正常");
- oled_disp_china(0,3,"电源电压");
- oled_disp_num(8,3,power_lever/10,2);
- oled_disp_string(10,3,".");
- oled_disp_num(11,3,power_lever%10,1);
- oled_disp_string(12,3,"V");
- }
- delay_nms(2000);
- IWDG_Feed();
- LCD_clr();
-
- LCD_disp_str(0,1,"pump is testing ");
- OLED_Clear();
- oled_disp_china(1,0,"水泵加湿自检");
- // LCD_disp_str(0,2,"wait 20 seconds ");
- erro_flag=0;
- // GPIO_ResetBits(GPIOE,GPIO_Pin_3);
- delay_nms(2000);
- erro_flag=add_water(1);
- // GPIO_SetBits(GPIOE,GPIO_Pin_3); //关加湿
- if(erro_flag==1)
- {
- LCD_disp_str(0,2,"pump is bad! ");
- oled_disp_china(0,2,"水泵加湿自检异常");
- wet_erro_flag=1;
- }
- else
- {
- LCD_disp_str(0,2,"pump is ok! ");
- oled_disp_china(0,2,"水泵加湿自检正常");
- }
- delay_nms(3000);
- IWDG_Feed();
- /*
- LCD_clr();
- LCD_disp_str(0,1,"wet is testing ");
- // LCD_disp_str(0,2,"wait 20 seconds ");
- erro_flag=0;
- GPIO_ResetBits(GPIOE,GPIO_Pin_3);
- delay_nms(2000);
- erro_flag=water_check();
- GPIO_SetBits(GPIOE,GPIO_Pin_3); //关加湿
- if(erro_flag==1)
- {
- LCD_disp_str(0,2,"Wet is bad! ");
- wet_erro_flag=1;
- }
- else
- {
- LCD_disp_str(0,2,"Wet is ok! ");
- }
- delay_nms(3000); */
- LCD_clr();
- LCD_disp_str(0,1,"HOT fan is testing ");
- LCD_disp_str(0,2,"wait 3 seconds ");
- OLED_Clear();
- oled_disp_china(1,0,"加热风扇自检");
- // GPIO_ResetBits(GPIOC,GPIO_Pin_7);
- /* TIM8->CCR2 = 15000;
- delay_nms(3000);
- TIM8->CCR2 = 0 ;*/
- erro_flag=fan_test();
- if(erro_flag==1)
- {
- LCD_disp_str(0,2,"HOT Fan is bad! ");
- oled_disp_china(0,2,"加热风扇自检异常");
- }
- else
- {
- LCD_disp_str(0,2,"HOT Fan is OK! ");
- oled_disp_china(0,2,"加热风扇自检正常");
- }
- delay_nms(3000);
- IWDG_Feed();
- /* LCD_clr();
- LCD_disp_str(0,1,"AIR fan is testing ");
- LCD_disp_str(0,2,"wait 3 seconds "); */
- OLED_Clear();
- oled_disp_china(1,0,"辅风扇自检");
- oled_disp_china(0,2,"运转三秒");
- oled_disp_china(0,3,"听是否有辅风声");
- //GPIO_ResetBits(GPIOC,GPIO_Pin_6);
- TIM8->CCR3 = 20000;
- delay_nms(3000);
- TIM8->CCR3 = 0;
-
- IWDG_Feed();
- OLED_Clear();
- oled_disp_china(1,0,"加湿风扇自检");
- oled_disp_china(0,2,"运转三秒");
- oled_disp_china(0,3,"听是否有湿风声");
- //GPIO_ResetBits(GPIOC,GPIO_Pin_6);
- TIM8->CCR4 = 20000;
- delay_nms(3000);
- TIM8->CCR4 = 0;
-
- IWDG_Feed();
- // GPIO_SetBits(GPIOC,GPIO_Pin_7); //关风扇2
- // GPIO_SetBits(GPIOA,GPIO_Pin_2); //关风扇2
- // delay_nms(1000); //
- // GPIO_ResetBits(GPIOA,GPIO_Pin_2);
- LCD_clr();
- LCD_disp_str(0,1,"AIR fan is testing ");
- LCD_disp_str(0,2,"wait 3 seconds ");
- OLED_Clear();
- oled_disp_china(1,0,"排风风扇自检");
- oled_disp_china(0,2,"运转三秒");
- oled_disp_china(0,3,"听是否有排风声");
- //GPIO_ResetBits(GPIOC,GPIO_Pin_6);
- TIM8->CCR1 = 20000;
- delay_nms(3000);
- TIM8->CCR1 = 0;
-
- IWDG_Feed();
- // GPIO_SetBits(GPIOC,GPIO_Pin_6); //关风扇1
- /* LCD_disp_str(0,1," led is testing ");
- LCD_disp_str(0,2,"wait 3 seconds ");
- GPIO_ResetBits(GPIOB,GPIO_Pin_12);
- delay_nms(3000);
- GPIO_SetBits(GPIOB,GPIO_Pin_12); //关高亮LED */
- LCD_clr();
- LCD_disp_str(0,1,"beep is testing ");
- LCD_disp_str(0,2,"wait 3 seconds ");
- OLED_Clear();
- oled_disp_china(1,0,"蜂鸣器自检");
- oled_disp_china(0,2,"运转三秒");
- oled_disp_china(0,3,"听是否鸣叫");
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- delay_nms(3000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- IWDG_Feed();
- LCD_clr();
- LCD_disp_str(0,1,"egg turn is testing");
- OLED_Clear();
- oled_disp_china(1,0,"翻蛋蛋盘自检");
- // LCD_disp_str(0,2,"goto start ");
- erro_flag=0;
- erro_flag= moto_goto_start();
- if( erro_flag==0)
- {
- // LCD_disp_str(0,2,"goto end ");
- erro_flag= moto_goto_end();
- }
- if(erro_flag==0)
- {
- // LCD_disp_str(0,2,"goto start 2 ");
- erro_flag=moto_goto_start();
- }
- if(erro_flag==0)
- {
- LCD_disp_str(0,1,"egg turn is OK! ");
- oled_disp_china(0,2,"翻蛋蛋盘自检正常");
- }
- else
- {
- LCD_disp_str(0,1,"egg turn is bad! ");
- oled_disp_china(0,2,"翻蛋蛋盘自检异常");
- egg_erro_flag=1;
- }
- delay_nms(3000);
- }
- }
- u8 moto_goto_start(void)
- {
- u32 cnt_t1,cnt_t2 ,i,i2 ;
- u8 erro_flag;
- if(Set_bird_mode==19 ||Set_bird_mode==18)
- {
- erro_flag=0;
- }
- else
- {
- LCD_disp_str(0,2,"egg go to start ");
- oled_disp_china(0,1,"蛋盘滑板移到起点");
-
- cnt_t1=cnt;
- Moto_Ctrol_Right();
- Moto_Ctrol_Right_S();
- //delay_nms(5000);
- erro_flag=0;
- do{
- i= GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14);
- if(i==0)
- {
- Moto_Stop();
- }
- if(Set_self_test==3)
- {
- i2= GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11);
- }
- else
- {
- i2=0;
- }
- if(i2==0)
- {
- Moto_Stop_S();
- }
- cnt_t2=cnt;
- if((cnt_t2-cnt_t1)>48)
- {
- erro_flag=1;
- break;
- }
-
- IWDG_Feed();
- /*LCD_disp_char(13,1,digit[(i%1000/100)]);
- LCD_disp_char(14,1,digit[(i%100/10)]);
- LCD_disp_char(15,1,digit[(i%10)]); */
- delay_nms(100);
- }
- while(i==1 || i2==1) ;
- Moto_Stop();
- Moto_Stop_S();
- }
- return(erro_flag);
- }
- u8 moto_goto_end(void)
- {
- int t,i;
- u32 cnt_t1,cnt_t2;
- u8 erro_flag;
- if(Set_bird_mode==19||Set_bird_mode==18)
- {
- erro_flag=0;
- }
- else
- { LCD_disp_str(0,2,"egg go to end ");
- oled_disp_china(0,1,"蛋盘滑板移到终点");
- if(Moto_Runtime>0&&Moto_Runtime<100)
- {
- t=Moto_Runtime;
- }
- else
- {
- t=8;
- }
- Moto_Ctrol_Left();
- Moto_Ctrol_Left_S();
- cnt_t1=cnt;
- do{
-
- cnt_t2=cnt;
- delay_nms(100);
- IWDG_Feed();
- }
- while( cnt_t2-cnt_t1<t) ;
- /* for(i=0;i<t;i++)
- {
- delay_nms(1000);
- IWDG_Feed();
- } */
- // delay_nms(t);
- Moto_Stop();
- Moto_Stop_S();
- if(Set_self_test==3)
- {
- if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)==0 ||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0)
- erro_flag=1;// return(1);
- else
- erro_flag=0;
- }
- else
- {
- if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)==0)
- erro_flag=1;// return(1);
- else
- erro_flag=0;
- }
- }
- return(erro_flag);
- }
- /*u8 moto_goto_start(void)
- {
- u32 cnt_t1,cnt_t2 ;
- u8 erro_flag;
- int t,i;
- cnt_t1=cnt;
- Moto_Ctrol_Right();
- erro_flag=0;
- if(Moto_Runtime>0&&Moto_Runtime<20)
- {
- t=Moto_Runtime;
- }
- else
- {
- t=8;
- }
- Moto_Ctrol_Right();
- for(i=0;i<t;i++)
- {
- delay_nms(1000);
- IWDG_Feed();
- }
- Moto_Stop();
- return(erro_flag);
- }
- u8 moto_goto_end(void)
- {
- int t,i;
- if(Moto_Runtime>0&&Moto_Runtime<20)
- {
- t=Moto_Runtime;
- }
- else
- {
- t=8;
- }
- Moto_Ctrol_Left();
- for(i=0;i<t;i++)
- {
- delay_nms(1000);
- IWDG_Feed();
- }
-
- Moto_Stop();
- // if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)==0)
- // return(1);
- // else
- return(0);
- } */
- u8 power_detect()
- {
- u16 t1,t2;
- float t3;
- // adcx=ADC_Get_aveg(ADC_Channel_1,10);
- //temp=(float)adcx*(3.3/4096);
- // power_lever=(ADC_GetConversionValue(ADC2)*3.3)*110/4096+10;
- t1=ADC_Get_aveg(ADC_Channel_17,10);
- t2=ADC_Get_aveg(ADC_Channel_14,10);
- t3= t2*11*12/t1;
- power_lever=(int)t3;
- if(power_lever>380|| power_lever<100)
- {
- dianchi_flag=0;
- return (1);
- }
- else
- {
- if(power_lever<170)
- {
- dianchi_flag=1;
- /* if(power_lever>=210)
- {
- dianchi_val=100;
- }
- else if(power_lever>=203 && power_lever<210 )
- {
- dianchi_val=90;
- }
- else if(power_lever>=199 && power_lever<203 )
- {
- dianchi_val=80;
- }
- else if(power_lever>=196 && power_lever<199 )
- {
- dianchi_val=70;
- }
- else if(power_lever>=193 && power_lever<196 )
- {
- dianchi_val=60;
- }
- else if(power_lever>=191 && power_lever<193 )
- {
- dianchi_val=50;
- }
- else if(power_lever>=189 && power_lever<191 )*/
- if(power_lever>=179 && power_lever<170)
- {
- dianchi_val=40;
- }
- else if(power_lever>=168 && power_lever<169 )
- {
- dianchi_val=30;
- }
- else if(power_lever>=167 && power_lever<168 )
- {
- dianchi_val=20;
- }
- else if(power_lever>=164 && power_lever<167 )
- {
- dianchi_val=10;
- }
- else if(power_lever>=152 && power_lever<164 )
- {
- dianchi_val=5;
- }
- else
- {
- dianchi_val=0;
- }
- }
- else
- {
- dianchi_flag=0;
- }
- return(0);
- }
- }
- /*u8 water_detect()
- {
- water_lever=(ADC_GetConversionValue(ADC3)*3.3)*10/4096;
- if(water_lever<10)
- {
- return (0);
- }
- else
- {
- return(1);
- }
- } */
- u8 fan_test()
- {
- u32 t1,t2;
- // t1= TIM_GetCounter(TIM1);
- TIM_SetCounter(TIM1, 0);
- TIM8->CCR2 = 20000;
- delay_nms(2000);
- TIM8->CCR2 = 0 ;
- t2= (u32) TIM_GetCounter(TIM1);
- //if(t2==t1&&(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7)==1))
- if(t2<20)
- {
- return(1);
- }
- else
- {
- return(0);
- }
- TIM_SetCounter(TIM1, 0);
- }
- /*u8 egg_turn()
- {
- u8 erro_flag;
- erro_flag=0;
- if(Set_bird_mode==19||Set_bird_mode==18)
- {
- erro_flag=0;
- }
- else
- {
- if(((target_moto!=0)&&(hour % target_moto==0) && (minute==0) && (turn_flag==0))||(hand_egg_turn==1))
- {
- turn_flag =1;
- if(egg_flag==0)
- {
- erro_flag=moto_goto_start();
- egg_flag=1;
- egg_erro_flag= erro_flag;
- }
- else
- {
- erro_flag= moto_goto_end();
- egg_flag=0;
- egg_erro_flag= erro_flag;
- }
- hand_egg_turn=0;
- }
- if(minute!=0) turn_flag=0;
- }
- return(erro_flag);
- } */
- void hand_turn()
- {
- u8 erro_flag;
- erro_flag=0;
- if(Set_bird_mode==19||Set_bird_mode==18)
- {
- egg_erro_flag=0;
- }
- else
- {
- if(hand_egg_turn==1&& egg_erro_flag==0)
- {
- egg_use_flag=1;
- erro_flag=moto_goto_start();
- egg_erro_flag= erro_flag;
- erro_flag= moto_goto_end();
- egg_erro_flag= erro_flag;
- erro_flag=moto_goto_start();
- egg_erro_flag= erro_flag;
- egg_turn_init();
- egg_use_flag=0;
- }
- hand_egg_turn=0;
- }
- }
- void fan_ctrl(void)
- {
- int ph_t;
- int fan_mode_air,air_fan_speed;
- fan_mode_air=Fan_mode%100/10;
- if(fan_mode_air>=0&&fan_mode_air<=8)
- {
- air_fan_speed=20000-2000*fan_mode_air;
- }
- else //(Fan_mode==9)
- {
- air_fan_speed=4000;
- }
- if(Now_PH_D <target_Shidu+20)
- {
- wet_t_cnt=cnt;
- }
- switch(wetfan_state)
- {case 0x00:
- // if (Now_PH_D>(target_Shidu +wet_time*10)||(avr_ph>target_Shidu+20))
- if (Now_PH_D>(target_Shidu +wet_time*10)||(cnt>wet_t_cnt+120))
- wetfan_state=0x01;
- else
- wetfan_state=0x00;
- break;
- case 0x01:
- if (Now_PH_D<=target_Shidu +10 )
- wetfan_state=0x00;
- else
- wetfan_state=0x01;
- break;
- default:
- wetfan_state=0x00;
- break;
- }
- switch(hotfan_state)
- {case 0x00:
- if (Now_TH_D>(target_temprature+5))
- hotfan_state=0x01;
- else
- hotfan_state=0x00;
- break;
- case 0x01:
- if (Now_TH_D<=target_temprature )
- {hotfan_state=0x02;
- hot_cnt=cnt;
- }
- else
- hotfan_state=0x01;
- break;
- case 0x02:
- if (Now_TH_D>(target_temprature+20))
- {
- hotfan_state=0x01;
- }
- else if (cnt>(hot_cnt+360) )
-
- {
- hotfan_state=0x00;
- }
- else
- hotfan_state=0x02;
- break;
- default:
- hotfan_state=0x00;
- break;
- }
- /*if(avr_ph>target_Shidu+20)
- {
- ph_t=0;
- }
- else
- {
- ph_t=wet_time*10;
- } */
- if(hotfan_state==0x01)
- {
- wet_high_temp=1;
- }
- else
- {
- wet_high_temp=0;
- }
- if(cold_flag==0)
- {
- // if((Now_TH>(target_temprature+5)) || (Now_PH_D>(target_Shidu + ph_t)))
- if((hotfan_state==0x01) || (wetfan_state==0x01))
- {
- TIM8->CCR1 = air_fan_speed;//20000;
- fan_open_flag=1;
- }
- else if((target_fan!=0)&&(hour % target_fan==0))
- { if(minute>=1&& minute<=Set_Fan1_Opentime)
- {
- TIM8->CCR1 =air_fan_speed;// 20000;
- fan_open_flag=1;
- }
- else
- {
- //delay_nms(3000);
- TIM8->CCR1 = 0;
- fan_open_flag=0;
- }
- }
- else
- {
- TIM8->CCR1 = 0;
- fan_open_flag=0;
- }
- }
- else
- {
- TIM8->CCR1 = air_fan_speed;//20000;
- fan_open_flag=1;
- }
- }
- void egg_cold(void)
- {
- int t,t2;
-
- if((target_cold!=0))
- { t=24/target_cold;
-
- if(hour%t==0)
- {
- if(minute>=1&& minute<=Set_Cold_Runtime)
- {
- // target_temprature =t2 ;
- //TIM8->CCR1 = 20000;
- cold_flag=1;
- }
- else
- {
- //TIM8->CCR1 = 0;
- cold_flag=0;
- }
- }
- else
- {
- //TIM8->CCR1 = 0;
- cold_flag=0;
- }
- }
- else
- {
- //TIM8->CCR1 = 0;
- cold_flag=0;
- }
- }
- u8 add_water(u8 init)
- {
- u16 i;
- u8 erro_flag,water_flag,key_t;
- u8 t;
- int delay_t ;
-
- if(Set_self_test==9)
- {
- erro_flag=0;
-
- }
- else
- {
- break_flag=0;
- erro_flag=0;
- if(init==2)
- {
- wet_flag=1;
- GPIO_ResetBits(GPIOE,GPIO_Pin_3); //开加湿
- oled_disp_china(0,2,"加湿自检");
- delay_nms(1000);
- IWDG_Feed();
- water_flag=water_check();
- GPIO_SetBits(GPIOE,GPIO_Pin_3); //关加湿器
- wet_flag=0;
- if(water_flag==0)
- {
- return( erro_flag);
- }
- }
- wet_flag=1;
- GPIO_ResetBits(GPIOE,GPIO_Pin_3); //开加湿
- LCD_disp_str(0,2,"add water step1 ");
- oled_disp_china(0,2,"水泵加水第一步骤");
- GPIO_ResetBits(GPIOC,GPIO_Pin_3);
- // do
- if(init==1)
- {
- delay_t=55;
- }
- else
- {
- delay_t=15;
- }
- for(i=0;i<delay_t;i++)
- {
- // if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)==1) break;
- delay_nms(1000);
- IWDG_Feed();
- water_flag=water_check();
- // key_t=Remote_Process();
- // if(key_t==0xC2) break_flag=1;
- // if( GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==0)
- if(water_flag==0 ||(Now_PH_D>900 && init==0))
- {
- erro_flag=0;
- break;
- }
- erro_flag=1;
- }
- // while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==1) ;
- GPIO_SetBits(GPIOE,GPIO_Pin_3); //关加湿器
- wet_flag=0;
- LCD_disp_str(0,2,"add water step2 ");
- oled_disp_china(0,2,"水泵加水第二步骤");
- /*if(Pump_Runtime>0&&Pump_Runtime<60)
- {
- t=Pump_Runtime;
- }
- else
- {
- t=12;
- } */
- t=Pump_Runtime%10;
- //if(init==1) t=t*2;
- IWDG_Feed();
- if( erro_flag==0)
- {
- for(i=0;i<t;i++)
- {
- if(Now_PH_D>900 && init==0)
- {
- break;
- }
- delay_nms(1000);
- IWDG_Feed();
-
- }
- }
- IWDG_Feed();
- GPIO_SetBits(GPIOC,GPIO_Pin_3); //关水泵
-
- }
- add_water_cnt++;
- return( erro_flag);
-
- }
- /*u8 open_wet(void)
- {
- u8 erro_flag;
- int i,t;
- IWDG_Feed();
- erro_flag=0;
- w_cnt_t2=cnt;
- if(Set_self_test==9)
- {
- wet_erro_flag=0;
- if(w_cnt_t2-w_cnt_t1>1800)
- {
- w_cnt_t1=cnt;
- erro_flag=add_water();
- }
- }
- else
- {
- no_water_flag= water_check() ;
- if(wet_erro_flag ==0)
- {
- if(no_water_flag==1)
- {
-
- erro_flag=add_water();
- wet_erro_flag= erro_flag;
- add_water_cnt++;
- }
-
- }
- }
- return( erro_flag);
- }
- */
- void warning_report(void)
- {
- unsigned char wet_warn_s,egg_warn_s,sen_warn_s,hight_warn_s,power_warn_s,lowt_warn_s,fan_warn_s,low_wet_s;
- int t;
- int delta_tt;
- u8 fan_flag,power_flag;
- wet_warn_s=Warning_Switch&0x01;
- egg_warn_s=(Warning_Switch&0x02)>>1;
- sen_warn_s=(Warning_Switch&0x04)>>2;
- hight_warn_s=(Warning_Switch&0x08)>>3;
- lowt_warn_s=(Warning_Switch&0x10)>>4;
- power_warn_s=(Warning_Switch&0x20)>>5;
- fan_warn_s=(Warning_Switch&0x40)>>6;
- low_wet_s= (Warning_Switch&0x80)>>7;
- if(wet_erro_flag==1&&wet_warn_s==1)
- { LCD_clr();
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- LCD_disp_str(0,1,"Erro No: 000 ");
- LCD_disp_str(0,2,"pump is bad!");
- OLED_Clear();
- oled_disp_china(0,0,"错误编号");
- oled_disp_string(8,0,":000");
- oled_disp_china(0,1,"水泵加湿异常");
- delay_nms(1000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- bump_erro_cnt++;
- }
- IWDG_Feed();
- if(wet_short_flag==1&&wet_warn_s==1)
- { LCD_clr();
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- /*LCD_disp_str(0,1,"Erro No: 000 ");
- LCD_disp_str(0,2,"pump is bad!"); */
- OLED_Clear();
- oled_disp_china(0,0,"错误编号");
- oled_disp_string(8,0,":008");
- oled_disp_china(0,1,"加湿异常");
- delay_nms(1000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- }
- IWDG_Feed();
- if(egg_erro_flag==1&&egg_warn_s==1)
- { LCD_clr();
-
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- LCD_disp_str(0,1,"Erro No: 001 ");
- LCD_disp_str(0,2,"egg turn is bad!");
- OLED_Clear();
- oled_disp_china(0,0,"错误编号");
- oled_disp_string(8,0,":001");
- oled_disp_china(0,1,"翻蛋蛋盘异常");
- delay_nms(1000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- }
- IWDG_Feed();
- if(sen_erro_flag>100&&sen_warn_s==1)
- { //if( sen_erro_flag>100)
-
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- // Run_YN=0;
- }
- LCD_clr();
- LCD_disp_str(0,1,"Erro No: 002 ");
- LCD_disp_str(0,2,"sensor is bad! ");
- OLED_Clear();
- oled_disp_china(0,0,"错误编号");
- oled_disp_string(8,0,":002");
- oled_disp_china(0,1,"主传感器探头异常");
- oled_disp_num(0,2,sen_erro_flag,6);
- /*LCD_disp_char(15,2,digit[(sen_erro_flag%10)]);
- LCD_disp_char(14,2,digit[(sen_erro_flag%100/10)]);
- LCD_disp_char(13,2,digit[(sen_erro_flag%1000/100)]);
- LCD_disp_char(12,2,digit[(sen_erro_flag%10000/1000)]);*/
- delay_nms(1000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- }
- IWDG_Feed();
-
- if(sen_erro_flag_S>100&&sen_warn_s==1)
- { //if( sen_erro_flag>100)
-
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- // Run_YN=0;
- }
- LCD_clr();
- LCD_disp_str(0,1,"Erro No: 002 ");
- LCD_disp_str(0,2,"sensor is bad! ");
- OLED_Clear();
- oled_disp_china(0,0,"错误编号");
- oled_disp_string(8,0,":002");
- oled_disp_china(0,1,"辅传感器探头异常");
- oled_disp_num(0,2,sen_erro_flag_S,6);
- /*LCD_disp_char(15,2,digit[(sen_erro_flag%10)]);
- LCD_disp_char(14,2,digit[(sen_erro_flag%100/10)]);
- LCD_disp_char(13,2,digit[(sen_erro_flag%1000/100)]);
- LCD_disp_char(12,2,digit[(sen_erro_flag%10000/1000)]);*/
- delay_nms(1000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- }
- IWDG_Feed();
- if(date_erro_flag==1&&sen_warn_s==1)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- LCD_clr();
- LCD_disp_str(0,1,"Erro No: 003 ");
- LCD_disp_str(0,2,"sensor is bad! ");
-
- OLED_Clear();
- oled_disp_china(0,0,"错误编号");
- oled_disp_string(8,0,":008");
- oled_disp_china(0,1,"时间错误");
- oled_disp_china(0,2,"设置时间");
- //oled_disp_num(0,2,sen_erro_flag_S,6);
- delay_nms(1000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- }
- IWDG_Feed();
- if(Set_High_Temp>=10&& Set_High_Temp<=50)
- {
- t= Set_High_Temp*10;
- }
- else
- {
- t=400;
- }
-
- IWDG_Feed();
- if(Now_TH_D>t&&hight_warn_s==1)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- if( Now_TH_D>400)
- { LCD_clr();
- // LCD_disp_str(0,1,"the temperature is ");
- LCD_disp_str(0,1,"Warning No: 103 ");
- LCD_disp_str(0,2,"it is too hot!!! ");
- OLED_Clear();
- oled_disp_china(0,0,"报警编号");
- oled_disp_string(8,0,":103");
- oled_disp_china(0,1,"温度太高");
- }
- /*if( wendunum1<350)
- {
- LCD_disp_str(0,1,"the temperature is ");
- LCD_disp_str(0,2,"too low !!! ");
- } */
- delay_nms(200);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- delay_nms(1000);
- //high_t_cnt++;
-
-
- }
- IWDG_Feed();
- if(Set_Low_Temp>=5&& Set_Low_Temp<=40)
- {
- t= Set_Low_Temp*10;
- }
- else
- {
- t=340;
- }
- if(Now_TH_D<t && lowt_warn_s==1)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- if( Now_TH_D<t)
- { LCD_clr();
- LCD_disp_str(0,1,"Warning No: 104 ");
- LCD_disp_str(0,2,"it is too cold!");
- OLED_Clear();
- oled_disp_china(0,0,"报警编号");
- oled_disp_string(8,0,":104");
- oled_disp_china(0,1,"温度太低");
- }
- /*if( wendunum1<350)
- {
- LCD_disp_str(0,1,"the temperature is ");
- LCD_disp_str(0,2,"too low !!! ");
- } */
- delay_nms(200);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- delay_nms(1000);
-
- }
- IWDG_Feed();
- delta_tt=abs(Now_TH-Now_TH_S);
- if(Set_bird_mode ==19||Set_bird_mode==18)
- {
- if(delta_tt>30 && lowt_warn_s==1)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- OLED_Clear();
- oled_disp_china(0,0,"报警编号");
- oled_disp_string(8,0,":120");
- oled_disp_china(0,1,"温差太大");
- delay_nms(200);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- delay_nms(1000);
-
- }
- }
- else
- {
- if(delta_tt>10 && lowt_warn_s==1)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- OLED_Clear();
- oled_disp_china(0,0,"报警编号");
- oled_disp_string(8,0,":120");
- oled_disp_china(0,1,"温差太大");
- delay_nms(200);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- delay_nms(1000);
-
- }
- }
- IWDG_Feed();
- power_flag= power_detect();
- //if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)==1&&power_warn_s==1)
- if(power_flag==1&&power_warn_s==1)
- {
- GPIO_ResetBits(GPIOE,GPIO_Pin_4); //关背光
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
-
- LCD_disp_str(0,1,"Erro No: 005 ");
-
-
- LCD_disp_str(0,2,"Power is off! ");
- OLED_Clear();
- oled_disp_china(0,0,"错误编号");
- oled_disp_string(8,0,":005");
- oled_disp_china(0,1,"电源掉电");
- delay_nms(1000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- power_erro_cnt++;
- }
- else if(dianchi_flag==1&&power_warn_s==1)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- OLED_Clear();
- oled_disp_china(0,0,"报警编号");
- oled_disp_string(8,0,":110");
- oled_disp_china(0,1,"电池");
- delay_nms(200);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- delay_nms(1000);
- }
- else
- {
- GPIO_SetBits(GPIOE,GPIO_Pin_4);
- }
- // fan_flag=fan_detect();
- IWDG_Feed();
- //if((fan_cnt==fan_cnt_pre &&(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7)==1) ) && fan_warn_s==1)
- //if((fan_cnt==fan_cnt_pre ) && fan_warn_s==1)
- if((fan_erro_flag==1 ) && fan_warn_s==1)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- LCD_disp_str(0,1,"Erro No: 006 ");
- LCD_disp_str(0,2,"HOT fan is bad! ");
- OLED_Clear();
- oled_disp_china(0,0,"错误编号");
- oled_disp_string(8,0,":006");
- oled_disp_china(0,1,"加热风扇异常");
- delay_nms(1000);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
-
- fan_erro_cnt++;
- }
- IWDG_Feed();
- if( low_wet_s==1 )
- {
- if( (Now_PH_D<target_Shidu -50) &&( fan_open_flag==0))
- { GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- LCD_disp_str(0,1,"Warning No: 107 ");
- LCD_disp_str(0,2,"wet is too low! ");
- OLED_Clear();
- oled_disp_china(0,0,"报警编号");
- oled_disp_string(8,0,":107");
- oled_disp_china(0,1,"湿度太低");
-
- delay_nms(200);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- delay_nms(1000);
- low_wet_cnt++;
- }
- else if( Now_PH_D>target_Shidu+70)
- { GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- LCD_disp_str(0,1,"Warning No: 108 ");
- LCD_disp_str(0,2,"wet is too high! ");
- OLED_Clear();
- oled_disp_china(0,0,"报警编号");
- oled_disp_string(8,0,":108");
- oled_disp_china(0,1,"湿度太高");
- delay_nms(200);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- delay_nms(1000);
- high_wet_cnt++;
- }
- IWDG_Feed();
- if((wet_many_flag==1) && (fan_open_flag==0))
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- OLED_Clear();
- oled_disp_china(0,0,"报警编号");
- oled_disp_string(8,0,":109");
- oled_disp_china(0,1,"加湿工作时间太长");
- delay_nms(200);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- delay_nms(1000);
- }
- IWDG_Feed();
- if(too_wet_flag==1)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_0); //开蜂鸣器
- OLED_Clear();
- oled_disp_china(0,0,"报警编号");
- oled_disp_string(8,0,":112");
- oled_disp_china(0,1,"排风时间太长");
- delay_nms(200);
- GPIO_ResetBits(GPIOC,GPIO_Pin_0);
- delay_nms(1000);
- }
- IWDG_Feed();
- }
-
- }
- void RCC_Configuration(void)//时钟配置
- {
- ErrorStatus HSEStartUpStatus;
- RCC_DeInit(); //将外设 RCC寄存器重设为缺省值
- RCC_HSEConfig(RCC_HSE_ON); //设置外部高速晶振(HSE)
- HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待 HSE 起振
- if(HSEStartUpStatus == SUCCESS)
- {
- FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //预取指缓存使能
- //设置代码延时值
- //FLASH_Latency_2 2 延时周期
- FLASH_SetLatency(FLASH_Latency_2);
- //设置 AHB 时钟(HCLK)
- //RCC_SYSCLK_Div1 AHB 时钟 = 系统时钟
- RCC_HCLKConfig(RCC_SYSCLK_Div1);
- //设置高速 AHB 时钟(PCLK2)
- //RCC_HCLK_Div2 APB1 时钟 = HCLK / 2
- RCC_PCLK2Config(RCC_HCLK_Div2);
- //设置低速 AHB 时钟(PCLK1)
- RCC_PCLK1Config(RCC_HCLK_Div2);
- //设置ADC时钟频率
- RCC_ADCCLKConfig(RCC_PCLK2_Div6);
- // PLLCLK = 8MHz * 9 = 72 MHz
- //设置 PLL 时钟源及倍频系数
- RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
- //使能或者失能 PLL
- RCC_PLLCmd(ENABLE);
- //等待指定的 RCC 标志位设置成功 等待PLL初始化成功
- while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
- //设置系统时钟(SYSCLK) 设置PLL为系统时钟源
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
- //等待PLL成功用作于系统时钟的时钟源
- // 0x00:HSI 作为系统时钟
- // 0x04:HSE作为系统时钟
- // 0x08:PLL作为系统时钟
- while(RCC_GetSYSCLKSource() != 0x08)
- {
- }
- }
- /* 1602*/
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE );
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
- /* SHT10*/
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, DISABLE); //使能TIM5时钟
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, DISABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, DISABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_SDIO, DISABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, DISABLE);
- //相应的GPIO口即可
-
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2 | RCC_APB2Periph_GPIOC, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3 | RCC_APB2Periph_GPIOC, ENABLE);
- }
- void GPIO_Configuration(void) //GPIO口配置,实际用的是GPIO口的哪些引脚,打开即可
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- //LCD1602(DO~D7)对应STM32的GPIO口(PD8~PD15)
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3
- | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOD, &GPIO_InitStructure);
-
- //LCD1602的(RS、RS、E,Backlight)对应STM32的GPIO口(PE0、PE1、PE2、P44)
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_4);
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOE, &GPIO_InitStructure);
- // //SHT10 SCLK GPIOB_PIN_10
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_10);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- //SHT10 DATA GPIOE_PIN_14
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_14);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
- GPIO_Init(GPIOE, &GPIO_InitStructure);
- //SHT10 SCLK GPIOB_PIN_10 S
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_12);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
- GPIO_Init(GPIOD, &GPIO_InitStructure);
- //SHT10 DATA GPIOE_PIN_14
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_13);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
- GPIO_Init(GPIOD, &GPIO_InitStructure);
- //DS1302 GPIO_Pin_10 SCLK GPIO_Pin_12 RST
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_10|GPIO_Pin_12);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOE, &GPIO_InitStructure);
- //DS1302_DATA
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_11);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
- GPIO_Init(GPIOE, &GPIO_InitStructure);
-
- //0,1,2,3,key GPIOE_5,6,7 输入
- GPIO_InitStructure.GPIO_Pin =(GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);//|GPIO_Pin_6|GPIO_Pin_7);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//GPIO_Mode_IPD ;//GPIO_Mode_IN_FLOATING;//
- GPIO_Init(GPIOE, &GPIO_InitStructure);
- //加热 PA2 输出
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_2);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- //MOTO 翻蛋PA4,5 预留PA6,7
- // GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
- // GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_14);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOD, &GPIO_InitStructure);
- //加湿控制 PE3
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOE, &GPIO_InitStructure);
- // 加湿检测 PB13
- // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
- // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING; //上拉输入
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- //红外输入管脚A0
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //红外引脚上拉输入
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- // 电机限位检测 PB14,15 输入
- // GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_14|GPIO_Pin_15);
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_14|GPIO_Pin_11);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING; //上拉输入
- // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- //水泵控制 PC3 输出
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- //适配器与蓄电池切换 PC4 电源与锂电池切换 PC5 输入
- //GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_4|GPIO_Pin_5);
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_5);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING; //上拉输入
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- //输入电源电压检测
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_4);
-
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//GPIO_Mode_IN_FLOATING; //上拉输入
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- //蜂鸣器 PC0 风扇1 PC6 风扇2 PC7 输出
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- /*GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_7);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOC, &GPIO_InitStructure); */
- //高亮LED控制 PB12 输出
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_12);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- //电池电源切换控制
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_11);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_10);
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE);//重映射管脚
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//GPIO_Mode_IN_FLOATING; //上拉输入
- GPIO_Init(GPIOE, &GPIO_InitStructure);
- //水位开关 输入
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_1);
- // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING; //上拉输入
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PC,D,G端口时钟
-
- // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //PD3,PD6推挽输出
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//速度50MHz
- // GPIO_Init(GPIOD, &GPIO_InitStructure); //初始化GPIOD3,6
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //PD3,PD6推挽输出
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //推挽输出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//速度50MHz
- // GPIO_Init(GPIOD, &GPIO_InitStructure);
- GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOD3,6
- // GPIO_SetBits(GPIOD,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_3|GPIO_Pin_8); //PD3,PD6 输出高
- GPIO_SetBits(GPIOB, GPIO_Pin_6);
- GPIO_SetBits(GPIOB, GPIO_Pin_7);
- // GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);//重映射管脚
- // I2C_Mode_config() ;
- GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_13|GPIO_Pin_15|GPIO_Pin_8|GPIO_Pin_9);
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//速度50MHz
- // GPIO_Init(GPIOD, &GPIO_InitStructure); //初始化GPIOD3,6
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_SetBits(GPIOB, GPIO_Pin_8);
- GPIO_SetBits(GPIOB, GPIO_Pin_9);
- GPIO_SetBits(GPIOB, GPIO_Pin_13);
- GPIO_SetBits(GPIOB, GPIO_Pin_15);
- GPIO_SetBits(GPIOB, GPIO_Pin_10);
- //pa7 ff;pa3 Pf;pc2 sf;pb1 zf;pa6 sb
- /* GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_7);
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_Init(GPIOA, &GPIO_InitStructure); */
- }
- /*void I2C_Mode_config(void) {
- I2C_InitTypeDef I2C_InitStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
-
- I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
-
- I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
- I2C_InitStructure.I2C_OwnAddress1 =0x0A;
- I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
- I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
- I2C_InitStructure.I2C_ClockSpeed = 400000;
- I2C_Cmd(I2C1, ENABLE);
- I2C_Init(I2C1, &I2C_InitStructure);
-
- } */
- void NVIC_Configuraton(void)//flash里调试,还是在RAM里调试
- {
- NVIC_InitTypeDef NVIC_InitStructure;
- #ifdef VECT_TAB_RAM // Set the Vector Table base location at 0x20000000
- NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x4000);
- #else
- //Set the Vector Table base location at 0x08000000
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000);
- #endif
- NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel; //EXTI9_5_IRQChannel; //外部中断线0
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组
- NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQChannel;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- }
- /*****************************************************************
- 状态0的显示内容:
- PH: XX.X DAYS: XX
- TH: XX.X RUN : X
- Display_0()
- ******************************************************************/
- void Display_0()
- {
- u16 temp;
- u16 ff_val;
- blank=(blank+1)%2;
- if(lcd_close_flag==0 && (disp_cnt<36000 ||Set_self_test==1))
- {
- //oledcheck();
- OLED_Display_On();
- if(disp_mode == 0)
- {
- power_detect();
-
- // LCD_clr();
- LCD_disp_char(0,1,Display_digit[Run_days/10]);
- LCD_disp_char(1,1,Display_digit[Run_days%10]);
- LCD_disp_str(2,1," ");
- LCD_disp_char(3,1,digit[(hour/10)]);
- LCD_disp_char(4,1,digit[(hour%10)]);
- LCD_disp_str(5,1,":");
- LCD_disp_char(6,1,digit[(minute/10)]);
- LCD_disp_char(7,1,digit[(minute%10)]);
- LCD_disp_str(8,1," ");
- // OLED_Clear();
- oled_disp_china(0,0,"第");
- oled_disp_num(2,0,Run_days,2);
- oled_disp_china(2,0,"天");
- oled_disp_string(6,0," ");
- oled_disp_num(7,0,hour,2);
- if(blank==0)
- {
- oled_disp_string(9,0,":");
- }
- else
- {
- oled_disp_string(9,0," ");
- }
- oled_disp_num(10,0,minute,2);
- /* if(Set_bird_mode==9)
- {oled_disp_china(6,0,"保温");}
- else if(Set_bird_mode==1)
- { oled_disp_china(6,0,"牡丹"); }
- else if(Set_bird_mode==2)
- { oled_disp_china(6,0,"玄凤");}
- else if(Set_bird_mode==3)
- { oled_disp_china(6,0,"虎皮"); }
- else if(Set_bird_mode==4)
- { oled_disp_china(6,0,"和尚");}
- else if(Set_bird_mode==5)
- { oled_disp_china(6,0,"太阳"); }
- else if(Set_bird_mode==6)
- { oled_disp_china(6,0,"灰机"); }
- else if(Set_bird_mode==7)
- { oled_disp_china(6,0,"折中"); }
- else if(Set_bird_mode==0)
- { oled_disp_china(6,0,"手动"); }
- else
- {
- oled_disp_china(6,0,"小鸡");
- } */
- get_bird_name(bird_mode);
- oled_disp_china(6,0,bird_name);
- oled_disp_china(0,2,"主探头");
- if(Now_TH==500)
- {
- oled_disp_china(3,2," 异常 ");
- }
- else
- {
- oled_disp_num(6,2,Now_TH/10,2);
- oled_disp_string(8,2,".");
- oled_disp_num(9,2,Now_TH%10,1);
- oled_disp_china(5,2,"度");
- oled_disp_string(12,2," ");
- oled_disp_num(13,2,Now_PH/10,2);
- oled_disp_string(15,2,"%");
- }
- oled_disp_china(0,3,"辅探头");
-
- if(Now_TH_S==500)
- {
- oled_disp_china(3,3," 异常 ");
- }
- else
- {
- oled_disp_num(6,3,Now_TH_S/10,2);
- oled_disp_string(8,3,".");
- oled_disp_num(9,3,Now_TH_S%10,1);
- oled_disp_china(5,3,"度");
- oled_disp_string(12,3," ");
- oled_disp_num(13,3,Now_PH_S/10,2);
- oled_disp_string(15,3,"%");
- }
- if(Set_self_test==3)
- {
- oled_disp_china(0,4,"主辅蛋盘");
- }
- else
- {
- oled_disp_china(0,4," ");
- }
- if(Set_bird_mode==19 ||Set_bird_mode==18)
- {
- if(dianchi_flag==0)
- {
- oled_disp_china(0,1,"加热功率");
- oled_disp_num(8,1,power_val,3);
- oled_disp_string(11,1,"%");
- }
- else
- {
- oled_disp_china(0,1,"电池电量");
- oled_disp_num(8,1,dianchi_val,3);
- oled_disp_string(11,1,"%");
- }
- }
- else
- {
- oled_disp_china(0,1,"翻蛋");
- oled_disp_num(4,1,target_moto,1);
- oled_disp_string(5,1," ");
- if(egg_direct==1)
- {
- oled_disp_string(6,1,"<-");
- //oled_disp_china(2,1,"起点");
- }
- else
- {
- oled_disp_string(6,1,"->");
- // oled_disp_china(2,1,"终点");
- }
- if( cnt_turn<0)
- {
- oled_disp_string(8,1,"-");
- oled_disp_num(9,1,abs(cnt_turn),2);
- }
- else
- {
- oled_disp_string(8,1," ");
- oled_disp_num(9,1,abs(cnt_turn),2);
- }
- oled_disp_string(11,1," ");
- }
- if(Run_YN == 1)
- {
- //LCD_disp_str(9,1,"RUN ");
- LCD_disp_char(9,1,digit[(power_val%1000/100)]);
- LCD_disp_char(10,1,digit[(power_val%100/10)]);
- LCD_disp_char(11,1,digit[(power_val%10)]);
- LCD_disp_str(12,1," ");
- if(cold_flag==1)
- {
- oled_disp_china(6,1,"凉蛋");
- }
- else
- {
- oled_disp_china(6,1,"运行");
- }
- }
- else
- {
- LCD_disp_str(9,1,"STOP");
- oled_disp_china(6,1,"停止");
- }
- LCD_disp_char(13,1,digit[(Now_PH%1000)/100]); //显示湿度十位
- LCD_disp_char(14,1,digit[(Now_PH%100)/10]); //显示湿度个位
- // LCD_disp_str(9,2,".");
- // LCD_disp_char(10,2,digit[(Now_PH%10)]); //显示湿度小数点后第一位
- LCD_disp_str(15,1,"%");
- LCD_disp_str(0,2,"P:");
- LCD_disp_char(2,2,digit[(Now_TH%1000)/100]); //显示温度十位
- LCD_disp_char(3,2,digit[(Now_TH%100)/10]); //显示温度个位
- LCD_disp_str(4,2,".");
- LCD_disp_char(5,2,digit[(Now_TH%10)]); //显示温度小数点后第一位
- if(cold_flag==1)
- {
- LCD_disp_str(6,2,"!");
- }
- else
- {
- LCD_disp_str(6,2,"C");
- }
- LCD_disp_str(7,2," ");
- // LCD_disp_str(7,2,"R:");
- // LCD_disp_char(10,2,digit[Now_PH/1000]); //显示湿度百位
- LCD_disp_str(8,2," S:");
-
-
-
- dot=ds18b20_temp&0xff;
-
-
- LCD_disp_char(11,2,digit[((ds18b20_temp>>8)%100/10)]);
- LCD_disp_char(12,2,digit[((ds18b20_temp>>8)%10)]);
- LCD_disp_str(13,2,".");
- LCD_disp_char(14,2,digit[(dot%10)]);
- LCD_disp_str(15,2,"C");
- /* LCD_disp_char(11,2,digit[(Now_TH_S%1000)/100]); //显示温度十位
- LCD_disp_char(12,2,digit[(Now_TH_S%100)/10]); //显示温度个位
- LCD_disp_str(13,2,".");
- LCD_disp_char(14,2,digit[(Now_TH_S%10)]); //显示温度小数点后第一位
- LCD_disp_str(15,2,"C"); */
- /*ff_val= ffan_detect();
- oled_disp_num(0,5,ff_val,4); */
- }
- else if (disp_mode==1)
- {
-
- LCD_clr();
- LCD_disp_str(0,1,"Set: ");
- OLED_Clear();
- oled_disp_china(1,0,"当天参数设置");
- oled_disp_china(0,1,"温湿度");
- oled_disp_num(6,1,target_temprature/10,2);
- oled_disp_string(8,1,".");
- oled_disp_num(9,1,target_temprature%10,1);
- oled_disp_china(5,1,"度");
- oled_disp_num(13,1,target_Shidu/10,2);
- oled_disp_string(15,1,"%");
- oled_disp_china(0,2,"翻蛋");
- oled_disp_string(4,2,"/");
- oled_disp_num(5,2,target_moto,1);
- oled_disp_china(3,2,"时");
- oled_disp_china(4,2,"排风");
- oled_disp_string(12,2,"/");
- oled_disp_num(13,2,target_fan,1);
- oled_disp_china(7,2,"时");
- oled_disp_china(0,3,"凉蛋");
- oled_disp_num(5,3,target_cold,1);
- oled_disp_china(3,3,"次每天");
- LCD_disp_str(5,1,"M");
- if(target_moto==0)
- {
- LCD_disp_str(6,1,"N");
- }
- else
- {
- LCD_disp_char(6,1,digit[(target_moto%10)]);
- }
- LCD_disp_str(7,1," F");
- if(target_fan==0)
- {
- LCD_disp_str(9,1,"N");
- }
- else
- {
- LCD_disp_char(9,1,digit[(target_fan%10)]);
- }
- LCD_disp_str(10,1," C");
- if(target_cold==0)
- {
- LCD_disp_str(12,1,"N");
- }
- else
- {
- LCD_disp_char(12,1,digit[(target_cold%10)]);
- }
- LCD_disp_char(0,2,digit[(target_temprature%1000/100)]);
- LCD_disp_char(1,2,digit[(target_temprature%100/10)]);
- LCD_disp_str(2,2,".");
- LCD_disp_char(3,2,digit[(target_temprature%10)]);
- LCD_disp_str(4,2,"C ");
- LCD_disp_char(6,2,digit[(target_Shidu%1000/100)]);
- LCD_disp_char(7,2,digit[(target_Shidu%100/10)]);
- LCD_disp_str(8,2,".");
- LCD_disp_char(9,2,digit[(target_Shidu%10)]);
- LCD_disp_str(10,2,"%");
- }
- else if(disp_mode == 2)
- {
- power_detect();
- // LCD_clr();
- LCD_disp_char(0,1,Display_digit[Run_days/10]);
- LCD_disp_char(1,1,Display_digit[Run_days%10]);
- LCD_disp_str(2,1," ");
- LCD_disp_char(3,1,digit[(hour/10)]);
- LCD_disp_char(4,1,digit[(hour%10)]);
- LCD_disp_str(5,1,":");
- LCD_disp_char(6,1,digit[(minute/10)]);
- LCD_disp_char(7,1,digit[(minute%10)]);
- LCD_disp_str(8,1," ");
- // OLED_Clear();
- oled_disp_china(0,0,"第");
- oled_disp_num(2,0,Run_days,2);
- oled_disp_china(2,0,"天");
- oled_disp_string(6,0," ");
- oled_disp_num(7,0,hour,2);
- if(blank==0)
- {
- oled_disp_string(9,0,":");
- }
- else
- {
- oled_disp_string(9,0," ");
- }
- oled_disp_num(10,0,minute,2);
- /* if(Set_bird_mode==9)
- {oled_disp_china(6,0,"保温");}
- else if(Set_bird_mode==1)
- { oled_disp_china(6,0,"牡丹"); }
- else if(Set_bird_mode==2)
- { oled_disp_china(6,0,"玄凤");}
- else if(Set_bird_mode==3)
- { oled_disp_china(6,0,"虎皮"); }
- else if(Set_bird_mode==4)
- { oled_disp_china(6,0,"和尚");}
- else if(Set_bird_mode==5)
- { oled_disp_china(6,0,"太阳"); }
- else if(Set_bird_mode==6)
- { oled_disp_china(6,0,"灰机"); }
- else if(Set_bird_mode==7)
- { oled_disp_china(6,0,"折中"); }
- else if(Set_bird_mode==0)
- { oled_disp_china(6,0,"手动"); }
- else
- {
- oled_disp_china(6,0,"小鸡");
- } */
- get_bird_name(bird_mode);
- oled_disp_china(6,0,bird_name);
- oled_disp_china(0,2,"主探头");
- if(Now_TH==500)
- {
- oled_disp_china(3,2," 异常 ");
- }
- else
- {
- oled_disp_num(6,2,Now_TH/10,2);
- oled_disp_string(8,2,".");
- oled_disp_num(9,2,Now_TH%10,1);
- oled_disp_china(5,2,"度");
- oled_disp_string(12,2," ");
- oled_disp_num(13,2,Now_PH/10,2);
- oled_disp_string(15,2,"%");
- }
- oled_disp_china(0,3,"辅探头");
-
- if(Now_TH_S==500)
- {
- oled_disp_china(3,3," 异常 ");
- }
- else
- {
- oled_disp_num(6,3,Now_TH_S/10,2);
- oled_disp_string(8,3,".");
- oled_disp_num(9,3,Now_TH_S%10,1);
- oled_disp_china(5,3,"度");
- oled_disp_string(12,3," ");
- oled_disp_num(13,3,Now_PH_S/10,2);
- oled_disp_string(15,3,"%");
- }
- if(dianchi_flag==0)
- {
- oled_disp_china(0,1,"加热功率");
- oled_disp_num(8,1,power_val,3);
- oled_disp_string(11,1,"%");
- }
- else
- {
- oled_disp_china(0,1,"电池电量");
- oled_disp_num(8,1,dianchi_val,3);
- oled_disp_string(11,1,"%");
- }
- if(Run_YN == 1)
- {
- //LCD_disp_str(9,1,"RUN ");
- LCD_disp_char(9,1,digit[(power_val%1000/100)]);
- LCD_disp_char(10,1,digit[(power_val%100/10)]);
- LCD_disp_char(11,1,digit[(power_val%10)]);
- LCD_disp_str(12,1," ");
- if(cold_flag==1)
- {
- oled_disp_china(6,1,"凉蛋");
- }
- else
- {
- oled_disp_china(6,1,"运行");
- }
- }
- else
- {
- LCD_disp_str(9,1,"STOP");
- oled_disp_china(6,1,"停止");
- }
-
- }
- else if (disp_mode==3)
- {
- OLED_Clear();
- if( open_wet_cnt>999999) open_wet_cnt=999999;
- oled_disp_china(0,0,"加湿次数");
- oled_disp_num(8,0,open_wet_cnt,8);
- if( wetfan_cnt>999999) wetfan_cnt=999999;
- oled_disp_china(0,1,"排风次数");
- oled_disp_num(8,1,wetfan_cnt,8);
- oled_disp_china(0,2,"平均湿度");
- oled_disp_num(10,2,Now_PH_D/10,2);
- oled_disp_string(12,2,".");
- oled_disp_num(13,2,Now_PH_D%10,1);
-
- oled_disp_china(0,3,"加湿风速");
- oled_disp_num(8,3,u_wet,8);
- }
-
- else if (disp_mode==4)
- {
- LCD_clr();
- LCD_disp_str(0,1,"low wet:");
- if( low_wet_cnt>999999) low_wet_cnt=999999;
- LCD_disp_char(9,1,digit[(low_wet_cnt%1000000/100000)]);
- LCD_disp_char(10,1,digit[(low_wet_cnt%100000/10000)]);
- LCD_disp_char(11,1,digit[(low_wet_cnt%10000/1000)]);
- LCD_disp_char(12,1,digit[(low_wet_cnt%1000/100)]);
- LCD_disp_char(13,1,digit[(low_wet_cnt%100/10)]);
- LCD_disp_char(14,1,digit[(low_wet_cnt%10)]);
- LCD_disp_str(15,1," ");
- LCD_disp_str(0,2,"high wet:");
- if( high_wet_cnt>999999) high_wet_cnt=999999;
- LCD_disp_char(9,2,digit[(high_wet_cnt%1000000/100000)]);
- LCD_disp_char(10,2,digit[(high_wet_cnt%100000/10000)]);
- LCD_disp_char(11,2,digit[(high_wet_cnt%10000/1000)]);
- LCD_disp_char(12,2,digit[(high_wet_cnt%1000/100)]);
- LCD_disp_char(13,2,digit[(high_wet_cnt%100/10)]);
- LCD_disp_char(14,2,digit[(high_wet_cnt%10)]);
- LCD_disp_str(15,2," ");
- OLED_Clear();
- oled_disp_china(0,0,"低湿次数");
- oled_disp_num(8,0,low_wet_cnt,6);
- oled_disp_china(0,1,"高湿次数");
- oled_disp_num(8,1,high_wet_cnt,6);
- oled_disp_china(0,2,"平均湿度");
- oled_disp_num(8,2,avr_ph/10,2);
- oled_disp_string(10,2,".");
- oled_disp_num(11,2,avr_ph%10,1);
- oled_disp_string(12,2,"%");
- }
- else if (disp_mode==5)
- {
- LCD_clr();
- LCD_disp_str(0,1,"low tem:");
- if( low_t_cnt>999999) low_t_cnt=999999;
- LCD_disp_char(9,1,digit[(low_t_cnt%1000000/100000)]);
- LCD_disp_char(10,1,digit[(low_t_cnt%100000/10000)]);
- LCD_disp_char(11,1,digit[(low_t_cnt%10000/1000)]);
- LCD_disp_char(12,1,digit[(low_t_cnt%1000/100)]);
- LCD_disp_char(13,1,digit[(low_t_cnt%100/10)]);
- LCD_disp_char(14,1,digit[(low_t_cnt%10)]);
- LCD_disp_str(15,1," ");
- LCD_disp_str(0,2,"high tem:");
- if( high_t_cnt>999999) high_t_cnt=999999;
- LCD_disp_char(9,2,digit[(high_t_cnt%1000000/100000)]);
- LCD_disp_char(10,2,digit[(high_t_cnt%100000/10000)]);
- LCD_disp_char(11,2,digit[(high_t_cnt%10000/1000)]);
- LCD_disp_char(12,2,digit[(high_t_cnt%1000/100)]);
- LCD_disp_char(13,2,digit[(high_t_cnt%100/10)]);
- LCD_disp_char(14,2,digit[(high_t_cnt%10)]);
- LCD_disp_str(15,2," ");
- OLED_Clear();
- oled_disp_china(0,0,"低温次数");
- oled_disp_num(8,0,low_t_cnt,6);
- oled_disp_china(0,1,"高温次数");
- oled_disp_num(8,1,high_t_cnt,6);
- oled_disp_china(0,2,"平均功率");
- oled_disp_num(8,2,ave_hot,5);
- oled_disp_china(0,3,"最大功率");
- oled_disp_num(8,3,max_hot,5);
- }
- else if (disp_mode==6)
- {
- LCD_clr();
- LCD_disp_str(0,1,"max tem1: ");
- LCD_disp_char(10,1,digit[(max_s1_temp%1000/100)]);
- LCD_disp_char(11,1,digit[(max_s1_temp%100/10)]);
- LCD_disp_str(12,1,".");
- LCD_disp_char(13,1,digit[(max_s1_temp%10)]);
- LCD_disp_str(14,1," ");
-
- LCD_disp_str(0,2,"max tem2: ");
- LCD_disp_char(10,2,digit[((max_s2_temp>>8)%100/10)]);
- LCD_disp_char(11,2,digit[((max_s2_temp>>8)%10)]);
- LCD_disp_str(12,2,".");
- LCD_disp_char(13,2,digit[((max_s2_temp&0xff)%10)]);
- LCD_disp_str(14,2," ");
- OLED_Clear();
- oled_disp_china(0,0,"主最高温度");
- oled_disp_num(10,0,max_s1_temp/10,2);
- oled_disp_string(12,0,".");
- oled_disp_num(13,0,max_s1_temp%10,1);
- oled_disp_china(7,0,"度");
- oled_disp_china(0,1,"辅最高温度");
- oled_disp_num(10,1,max_s2_temp/10,2);
- oled_disp_string(12,1,".");
- oled_disp_num(13,1,max_s2_temp%10,1);
- oled_disp_china(7,1,"度");
- oled_disp_china(0,2,"主最低温度");
- oled_disp_num(10,2,min_s1_temp/10,2);
- oled_disp_string(12,2,".");
- oled_disp_num(13,2,min_s1_temp%10,1);
- oled_disp_china(7,2,"度");
- oled_disp_china(0,3,"辅最低温度");
- oled_disp_num(10,3,min_s2_temp/10,2);
- oled_disp_string(12,3,".");
- oled_disp_num(13,3,min_s2_temp%10,1);
- oled_disp_china(7,3,"度");
- }
- else if (disp_mode==7)
- {
- OLED_Clear();
- oled_disp_china(0,0,"主最高湿度");
- oled_disp_num(10,0,max_s1_ph/10,2);
- oled_disp_string(12,0,".");
- oled_disp_num(13,0,max_s1_ph%10,1);
- //oled_disp_china(7,0,"度");
- oled_disp_china(0,1,"辅最高湿度");
- oled_disp_num(10,1,max_s2_ph/10,2);
- oled_disp_string(12,1,".");
- oled_disp_num(13,1,max_s2_ph%10,1);
- //oled_disp_china(7,1,"度");
- oled_disp_china(0,2,"主最低湿度");
- oled_disp_num(10,2,min_s1_ph/10,2);
- oled_disp_string(12,2,".");
- oled_disp_num(13,2,min_s1_ph%10,1);
- //oled_disp_china(7,2,"度");
- oled_disp_china(0,3,"辅最低湿度");
- oled_disp_num(10,3,min_s2_ph/10,2);
- oled_disp_string(12,3,".");
- oled_disp_num(13,3,min_s2_ph%10,1);
- //oled_disp_china(7,3,"度");
- }
- else if (disp_mode==8)
- {
- power_detect();
- LCD_clr();
-
-
- if(power_erro_cnt>999) power_erro_cnt=999;
- OLED_Clear();
- oled_disp_china(0,0,"电源掉电次数");
- oled_disp_num(12,0,power_erro_cnt,4);
- oled_disp_china(0,1,"电源电压");
- oled_disp_num(8,1,power_lever/10,2);
- oled_disp_string(10,1,".");
- oled_disp_num(11,1,power_lever%10,1);
- oled_disp_string(12,1,"V");
- oled_disp_china(0,2,"风扇报警次数");
- oled_disp_num(12,2,fan_erro_cnt,4);
- oled_disp_china(0,3,"风扇速度");
- oled_disp_num(12,3,fan_cnt,4);
- }
- else if (disp_mode==9)
- {
- LCD_clr();
- LCD_disp_str(0,1,"chip temp: ");
- LCD_disp_char(12,1,digit[(chip_temp%100/10)]);
- LCD_disp_char(13,1,digit[(chip_temp%10)]);
- LCD_disp_str(14,1,"CT");
- OLED_Clear();
- oled_disp_china(0,0,"控制板温度");
- oled_disp_num(12,0,chip_temp,2);
- oled_disp_china(7,0,"度");
- water_check();
- oled_disp_num(0,1,wet_power_level,4);
- temp=ADC_Get_aveg(ADC_Channel_17,10)*3.3*1000/4096;
- oled_disp_num(8,1,temp,4);
- //wet_new=ReadADCAverageValue();
- oled_disp_string(0,2,"wet e");
- oled_disp_num(8,2,wet_erro_cnt,8);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
wuxian.rar
(687.34 KB, 下载次数: 43)
|