#include "STM32Lib\\stm32f10x.h" #include "main.h" #include "hal.h" #include "lcd_st7920.h" #include "ADS1220.h" #include "menu.h" #include "FUZZY.h" #include //printf 函数用 #include "temperature_table.h" ///////////////////////////////////////////////////////////////////////// volatile u8 SECOND_FLAG; //1S的计时标志位,0:未到;1:已到 volatile u8 SECOND_NUM; //5ms中断200次到达1秒 volatile u16 BEEP_NUM; //蜂鸣器开启次数 volatile u16 BEEP_HIGH_TIME; volatile u16 BEEP_CYC_TIME; volatile u16 BEEP_CYC_TIME_NUM; volatile u16 RELAY_DELAY_TIMER; volatile u16 RELAY_DELAY_STATUS; volatile u16 RELAY_DELAY_EN; volatile u8 KEY_VALUE; //按键的检测值,为0xff时表示无键按下 volatile u8 KEY_VALUE_BACK; //按键的上次检测值,用来进行比较,用做防抖 volatile u8 KEY_VALUE_FLAG; //按键更新标志位,为1时允许更新,实现按键松开才能检测的功能 volatile u8 KEY_MIX_VALUE; volatile u32 SYSTEM_TEMP; //环境温度 //volatile u32 TEMP_AD_DATA_TEMP[TEMP_AD_DATA_TEMP_NUM_MASK*2]; //AD采样值缓存区 volatile u32 TEMP_AD_DATA_TEMP[20]; //AD采样值缓存区 volatile u8 AD_READ_NUM; volatile u32 ADC_DATA_VALUE_REL; volatile u8 ADC_DATA_VALUE_REL_FLAG; volatile u32 ADC_CALC_VALUE_DEF; u8 MAIN_STATUS; u8 MAIN_STATUS_BACK; u8 STATUS_NEW_FLAG; u8 BTCOM_STATUS; u8 MENU_CHOOSE_VALUE; //菜单选择过程中的按键值 u8 MENU_SET_STATUS; //参数设置时状态,0表示项目选择状态,1表示具体数值输入状态 u8 MENU_SET_POST_X; //参数设置时具体数值偏移量 u8 MENU_SET_POST_Y; //参数设置时项目偏移量 u8 MENU_X, MENU_X1, MENU_X2, MENU_X3; u8 MENU_Y; u16 BOARD_TEMP_PARA; u8 test_second_flag; u32 test_data; MFL_PARA MFL_PARA_A; //单炉变量定义 AI_CONTROL Ai_CTRL; //MFL_UART MFL_UART_1; UART_PARA Uart3_Debug; UART_PARA Uart1_BTcom; u8 RDO_FANJIE_FLAG; u8 RDO_OPEN_FLAG; //////////////////////////////////////////////////////////////////////////////////////////////// //秒,分,时,天,星期,月,年 u8 MENU_TIME_DATA[7]; u8 MENU_TIME_DATA_SET[10]; u8 MENU_TIME_DATA_DIS[12]; const u8 MENU_TIME_DATA_DIS_POST[12] = {0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15, 16}; const u8 MENU_TIME_DATA_SET_POST[7] = {0, 1, 3, 4, 8, 9, 10}; //菜单1反白显示位置 const u8 MENU_DIS_BLACK_FUN[FUNCTION_ITEM_NUM * 3] = {1, 0, 6, 2, 0, 6, 3, 0, 6, 1, 4, 7, 2, 4, 7, 3, 4, 6, 1, 8, 7, 2, 8, 8}; //菜单2反白显示位置 const u8 MENU_DIS_BLACK_PRO[PROGRAM_ITEM_NUM * 3] = {1, 0, 7, 2, 0, 7, 3, 0, 10, 1, 6, 10, 2, 6, 10, 3, 6, 10}; //默认自选温度数据 //温度,时间,速度,提前介入量(相减).速度默认为0,则不起作用,那么全速加热 const u16 MFL_ZIXUAN_PROGRAM_INIT_DATA[] = { 100, 30, 0, 5, 250, 30, 0, 5, 0, 30, 0, 5, 0, 30, 0, 5, 0, 30, 0, 5, 0, 30, 0, 5, 0, 30, 0, 5, 0, 30, 0, 5, 0, 30, 0, 5, 0, 30, 0, 5, }; //默认校准温度数据 const u16 MFL_CALIBRATION_INIT_DATA[] = { 100, 100, 200, 200, 300, 300, 400, 400, 480, 480, 520, 520, 600, 600, 700, 700, 800, 800, 840, 840, 860, 860, 880, 880, 910, 910, 930, 930, 950, 950, }; //默认PID参数Kp=15,Ki=10,Kd=15 (注:Ki使用时应取倒数) const u16 MFL_PID_INIT_DATA[] = { //260,250,130, //01电能监控 HQ230126 240, 240, 100, //01电能监控 DYM 230129 100, 895, 15, //02功率挥回 DYM20220217, ,之前为无用15,10,15 20, 780, 781, //03经典回温 DYM20200424 //20,750,780, 60, 810, 200, //04 40, 835, 200, //05 920, 910, 918, //06 30, 835, 842, //07罗加回温 10, 860, 880, //08 40, 800, 40, 482, 50, 100, }; //10热偶检测短路掉落,以及反接 //(1) 第1组482检测短路掉落:4表示小于400度的时候一直开启检测(因为400度下都是一直往上升的;8表?9分钟内升温小于Z度就报警;2表示Z为2度 //(2) 第2和3个参数检测反接,第2个参数从30秒100度,改5秒后就开始检测大于100度就报警 //默认system参数 //HQ20231230 const u16 MFL_EQUIPMENT_INIT_DATA[] = { 40, 10, 0, //丝杆单位行程,默认40mm,运行速度/100r/s,默认0.1r/S,实际丝杆总行程,自动计算得到 300, 300, 5, //挥发开门速度/100r/s,挥发关门速度/100r/s,限位保护值单位mm 200, 250, 15, //慢灰开门速度/100r/s,慢灰关门到门缝值速度/100r/s,门缝值15mm,门缝后关门最终速度固定0.1r/s, 200, 120, 15, //快灰开门速度/100r/s,快灰关门到门缝值总时长(单位秒最少100秒),门缝值15mm,门缝后关门最终速度固定0.1r/s, 200, 120, 15, //快速快灰开门速度/100r/s,快灰关门到门缝值总时长(单位秒最少100秒),门缝值15mm,门缝后关门最终速度固定0.1r/s, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; //默认system参数是否恢复初始值,1表示可恢复,0表示不可恢复 const u16 MFL_EQUIPMENT_INIT_DATA_ENABLE[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }; //默认系统参数 const u16 MFL_SYSTEM_INIT_DATA[] = {305, 185, 60, 255, 850, 920, 85, 55, 104, 152, 120, 83}; //默认系统参数 const u16 MFL_USER_INIT_DATA[] = {1, 1, 30, 30}; //菜单显示 u8 menu_temp_para_string_init_data[][11] = { "01电网监控", "02功率挥回", "03经典回温", "04慢灰升温", "05经典灰升", "06挥发升温", "07罗加回温", "08挥发回温", "09快速灰升", "10热偶检测", }; //菜单显示 u8 menu_program_para_string_init_data[][11] = { "01保留参数", "02保留参数", "03保留参数", "04保留参数", "05保留参数", "06保留参数", "07保留参数", "08保留参数", "09保留参数", "10热偶设置", }; //菜单显示 u8 menu_zixuan_para_string_init_data[][7] = { "第01段", "第02段", "第03段", "第04段", "第05段", "第06段", "第07段", "第08段", "第09段", "第10段", }; //无线模块变量 u8 BTCOM_STATUS; u8 BTCOM_STATUS_NEW_FLAG; u32 BTCOM_TIMER; u16 BTCOM_NUM; u16 BTCOM_MASTER_ADDRESS; u16 BTCOM_CONFIG_ADDRESS; u8 BTCOM_CONFIG_SPEED; u8 BTCOM_CONFIG_POWER; u8 BTCOM_CONFIG_CHANNEL; u8 BTCOM_CONFIG_MODE; u16 BTCOM_CONFIG_PASSWORD; //电能采集模块变量 u8 DEBUG_STATUS; u8 DEBUG_STATUS_NEW_FLAG; u32 DEBUG_TIMER; u16 DEBUG_NUM; u16 DEBUG_MASTER_ADDRESS; u16 DEBUG_CONFIG_ADDRESS; u8 DEBUG_CONFIG_SPEED; u8 DEBUG_CONFIG_POWER; u8 DEBUG_CONFIG_CHANNEL; u8 DEBUG_CONFIG_MODE; u16 DEBUG_CONFIG_PASSWORD; u16 DEBUG_CURRENT_MIN; u16 DEBUG_CURRENT_MAX; u16 TEST_CURRENT_MIN; u16 TEST_CURRENT_MAX; u16 TEST_VOLTAGE_MIN; u16 TEST_VOLTAGE_MAX; const u8 RS485_READ_COMMAND_STRING[] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x03, 0x05, 0xCB}; volatile u16 RS485_READ_VOLTAGE_VALUE; volatile u16 RS485_READ_CURRENT_VALUE; volatile u16 RS485_READ_UPDATA_FLAG; /////////////////////////////////////////////////////////////////////// void system_init (void); //参数初始化 void data_base_init (void); //温度显示函数 void temp_dis_lcd (u8 x, u8 y, u32 temp); //时间显示函数 void time_dis_lcd (u8 x, u8 y, u32 temp); //炉门控制函数,post目标位置 void MoveStove (u8 post); //炉门控制函数,用时间控制 void MoveStove_Time (u16 time); //电机控制测试 void test_moter (void); //限位测试 void test_post (void); //温度测试 void test_power (void); //串口DMA测试 void test_uart (void); //蜂鸣器控制,响x*0.1秒,熄y*0.1秒,总共响num次 void Beep_Set (u16 x, u16 y, u16 num); //Bresenham's integer line 温度校准 void Bresenham_Temp_Calibrate (void); //恢复出厂设置参数 void system_para_data_reset (void); //显示DEBUG模式下的采集值 void debug_com_data_display (u32 board_temp, u32 adc_data, u32 com_vol_data); //显示DEBUG模式下的固定值 void debug_fix_data_display (u8 board_temp_init, u32 adc_data_init, u32 com_vol_init); //调试模式保存参数 void debug_data_save (u8 board_temp_init, u32 adc_data_init); //温度显示函数 void temp_dis_lcd_3 (u8 x, u8 y, u32 temp); //温度显示函数 void temp_dis_lcd_4 (u8 x, u8 y, u32 temp); //温度美化,待显示的温度值,目标温度值,美化程度 u32 temp_calc_value_MH (u32 temp, u32 target_temp, u32 meihua_range); //温度平滑处理,实际的温度值,当前美化后的温度值 u32 temp_value_filter_MH (void); //时间温度显示函数 void time_temp_dis_lcd (u8 x, u8 y, u8 *p, u16 temp); //时间设置显示函数,秒分时日星月年 void time_set_dis_lcd (u8 x, u8 y, u8 *p); //时间温度设置显示函数 void time_temp_set_lcd (u8 x, u8 y, u8 *p); void Uart3_Debug_Send (u8 send_data_lenth); void Uart3_Debug_Recevie_Init (void); //UART1_SEND void Uart1_BTcom_Send (u8 send_data_lenth); void Uart1_BTcom_Recevie_Init (void); //保存电压极值 void power_detect_data_save (u16 address, u16 voltage, u16 current, u8 *date_temp); //清除电能参数 void power_detect_data_reset (u16 address); //显示电压电流极值 void power_detect_data_display (u8 x, u8 y, u16 address); ////////////////////////////////////////////////////////////////////// int main(void) { u16 temp, n, rdo_protect_voltage; signed long x1 = 0; char y1 = 0; u16 time_back; u16 HF_TEMP; u8 LJ_HUIWEN_STEP, crc_num; u32 sum; u32 adc_data_temp[4]; u32 temp_sum, time_sum, cur_sum, adc_data, com_data; u32 temp_drop_sum, time_drop_sum; u16 cycle_drop_start, cycle_drop_end; s16 temp_drop_min, temp_drop_max; u16 x; u8 eeprom_data_temp[32]; //M24C64为32个字节一个page u8 para_data_temp[64]; u16 temp_n, temp_a, temp_b, temp_c, temp_d; u32 crc_value, x_crc, y_crc; ////////////////////////////////////////////////////////////////////////// system_init (); MFL_PARA_A.FANJIE_DELAY_NUM = FANJIE_DELAY_MAX; MFL_PARA_A.FANJIE_DELAY_NUM *= 20; for (temp = 0; temp < 20; temp++) TEMP_AD_DATA_TEMP[temp] = 0; //初始化掉温数据 MFL_PARA_A.temp_drop_buf_num = 0; MFL_PARA_A.temp_drop_enable = 0; //初始化自选温度调试功能 if (MFL_PARA_A.EQUIPMENT_PARA[9][2] == 999) MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN = 1; else MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN = 0; //初始化查找温度表 MFL_PARA_A.Redianou_Type = MFL_PARA_A.EQUIPMENT_PARA[9][0]; for (temp = 0; temp < 1373; temp++) { if (MFL_PARA_A.Redianou_Type == 1) MFL_PARA_A.Temp_Table[temp] = s_table[temp]; else MFL_PARA_A.Temp_Table[temp] = k_table[temp]; } RELAY_ON; MFL_PARA_A.Redianou_Check_En_Counter = 200 * 5; //5秒后开始判断热电偶状态 //温度表清零 for (temp = 0; temp < 1024; temp++) { MFL_PARA_A.Heat_work_time[temp] = 0; MFL_PARA_A.temp_drop_buf[temp] = 0; } MFL_PARA_A.temp_drop_high_temp = MFL_PARA_A.PID_PARA[9][0] / 100; MFL_PARA_A.temp_drop_cont_time = (MFL_PARA_A.PID_PARA[9][0] - MFL_PARA_A.temp_drop_high_temp * 100) / 10; MFL_PARA_A.temp_drop_draft_temp = MFL_PARA_A.PID_PARA[9][0] - MFL_PARA_A.temp_drop_high_temp * 100 - MFL_PARA_A.temp_drop_cont_time * 10; MFL_PARA_A.temp_drop_high_temp *= 100; MFL_PARA_A.temp_drop_cont_time *= 60; MFL_PARA_A.temp_drop_new_flag = 0; MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; //pcf8563_write_time(2,7,MENU_TIME_DATA); /* DYM 20240203 直接隐藏电流电压显示 if (POWER_CURRENT_DELTA>99) //显示实时电压电流 MFL_PARA_A.temp_dis_more_flag=1; else */ MFL_PARA_A.temp_dis_more_flag = 0; //右键=7f 左键=fb 上键=f7 下键=fe if (KEY_MIX_VALUE == 0xf6) //上键+下键 //恢复出厂值 { Beep_Set (10, 10, 1); MAIN_STATUS = MAIN_STATUS_INITRESET; STATUS_NEW_FLAG = 1; } else if (KEY_MIX_VALUE == 0x7b) //左键+右键 ,调试模式 { Beep_Set (10, 10, 1); MAIN_STATUS = MAIN_STATUS_DEBUG; STATUS_NEW_FLAG = 1; } else if (KEY_MIX_VALUE == 0xF3) //上键+左键 ,保留,只蜂鸣 { Beep_Set (3, 2, 2); MFL_PARA_A.temp_dis_more_flag = 2; } else if (KEY_MIX_VALUE == 0x7E) //下键+右键,显示电网监测的数据(电流电压最大小值) { Beep_Set (3, 2, 3); MAIN_STATUS = MAIN_STATUS_DIS_POWER; STATUS_NEW_FLAG = 1; } //initial wireless module BTCOM_STATUS = BT_STATUS_INITIAL; BTCOM_STATUS_NEW_FLAG = 1; BTCOM_TIMER = 0; BTCOM_NUM = 0; BTCOM_MASTER_ADDRESS = 0xFFFE; BTCOM_CONFIG_ADDRESS = 0; BTCOM_CONFIG_SPEED = 0x04; BTCOM_CONFIG_POWER = 0x00; BTCOM_CONFIG_CHANNEL = 0x19; BTCOM_CONFIG_MODE = 0x40; BTCOM_CONFIG_PASSWORD = 5200; //initial wireless module DEBUG_STATUS = DEBUG_STATUS_INITIAL; DEBUG_STATUS_NEW_FLAG = 1; DEBUG_TIMER = 0; DEBUG_NUM = 0; DEBUG_MASTER_ADDRESS = 0xFFFE; DEBUG_CONFIG_ADDRESS = 0; DEBUG_CONFIG_SPEED = 0x04; DEBUG_CONFIG_POWER = 0x00; DEBUG_CONFIG_CHANNEL = 0x19; DEBUG_CONFIG_MODE = 0x40; DEBUG_CONFIG_PASSWORD = 5200; DEBUG_CURRENT_MIN = POWER_CURRENT_MAX / 2 - (POWER_CURRENT_DELTA % 100); DEBUG_CURRENT_MAX = POWER_CURRENT_MAX / 2 + (POWER_CURRENT_DELTA % 100); while (1) { ///////////////////////////////////电能采集模块配置+通信/////////////////////////////////////////// if (DEBUG_STATUS == DEBUG_STATUS_INITIAL) { if (DEBUG_STATUS_NEW_FLAG) { DEBUG_STATUS_NEW_FLAG = 0; Uart3_Debug_Recevie_Init(); RS485_READ_UPDATA_FLAG = 0; DEBUG_TIMER = 400; } if (DEBUG_TIMER == 0) { DEBUG_STATUS = DEBUG_STATUS_CONFIG; DEBUG_STATUS_NEW_FLAG = 1; DEBUG_TIMER = 100; } else if ((Uart3_Debug.UART_RXD_FINISH == 1)) { Uart3_Debug_Recevie_Init(); DEBUG_STATUS = DEBUG_STATUS_CONFIG; DEBUG_STATUS_NEW_FLAG = 1; DEBUG_TIMER = 100; } } else if (DEBUG_STATUS == DEBUG_STATUS_CONFIG) { if (DEBUG_TIMER == 0) { //01 03 00 00 00 03 05 CB DEBUG_NUM = 0; Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++] = RS485_READ_COMMAND_STRING[0]; Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++] = RS485_READ_COMMAND_STRING[1]; Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++] = RS485_READ_COMMAND_STRING[2]; Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++] = RS485_READ_COMMAND_STRING[3]; Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++] = RS485_READ_COMMAND_STRING[4]; Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++] = RS485_READ_COMMAND_STRING[5]; Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++] = RS485_READ_COMMAND_STRING[6]; Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++] = RS485_READ_COMMAND_STRING[7]; /*crc_value=0xFFFF; for (n=0;n<6;n++) { y_crc = ((crc_value>>8) ^ Uart3_Debug.UART_DMA_TXD_BUF[n]) & 0xff; crc_value = crc_value << 8; x_crc = y_crc ^ (y_crc>>4); crc_value = crc_value ^ (x_crc << 12) ^ (x_crc <<5) ^ x_crc; crc_value &= 0xffff; //enable this line for processors with more than 16 bits } Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++]=(u8)(crc_value>>8); Uart3_Debug.UART_DMA_TXD_BUF[DEBUG_NUM++]=(u8)(crc_value);*/ Uart3_Debug_Send (DEBUG_NUM); DEBUG_TIMER = 400; DEBUG_STATUS = DEBUG_STATUS_WAIT; DEBUG_STATUS_NEW_FLAG = 1; } } else if (DEBUG_STATUS == DEBUG_STATUS_WAIT) { if (DEBUG_TIMER == 0) { DEBUG_STATUS = DEBUG_STATUS_CONFIG; DEBUG_STATUS_NEW_FLAG = 1; } else if ((Uart3_Debug.UART_RXD_FINISH == 1)) { //01 03 06 08 98 00 00 09 2E C5 8B 220V23.5A //01 03 06 0A 8C 00 00 09 2E C5 8B 270V23.5A //01 03 06 08 98 00 00 0A 28 C5 8B 220V26.0A if ((Uart3_Debug.UART_DMA_RXD_BUF[0] == 0x01) && (Uart3_Debug.UART_DMA_RXD_BUF[1] == 0x03) && (Uart3_Debug.UART_DMA_RXD_BUF[2] == 0x06)) { RS485_READ_VOLTAGE_VALUE = Uart3_Debug.UART_DMA_RXD_BUF[3]; RS485_READ_VOLTAGE_VALUE <<= 8; RS485_READ_VOLTAGE_VALUE += Uart3_Debug.UART_DMA_RXD_BUF[4]; RS485_READ_CURRENT_VALUE = Uart3_Debug.UART_DMA_RXD_BUF[7]; RS485_READ_CURRENT_VALUE <<= 8; RS485_READ_CURRENT_VALUE += Uart3_Debug.UART_DMA_RXD_BUF[8]; if (RS485_READ_VOLTAGE_VALUE > TEST_VOLTAGE_MAX) { TEST_VOLTAGE_MAX = RS485_READ_VOLTAGE_VALUE; pcf8563_read_time(2, 7, MENU_TIME_DATA); power_detect_data_save(POWER_VOL_MAX_BASE, RS485_READ_VOLTAGE_VALUE, RS485_READ_CURRENT_VALUE, MENU_TIME_DATA); } if (RS485_READ_VOLTAGE_VALUE < TEST_VOLTAGE_MIN) { TEST_VOLTAGE_MIN = RS485_READ_VOLTAGE_VALUE; pcf8563_read_time(2, 7, MENU_TIME_DATA); power_detect_data_save(POWER_VOL_MIN_BASE, RS485_READ_VOLTAGE_VALUE, RS485_READ_CURRENT_VALUE, MENU_TIME_DATA); } if (RS485_READ_CURRENT_VALUE > TEST_CURRENT_MAX) { TEST_CURRENT_MAX = RS485_READ_CURRENT_VALUE; pcf8563_read_time(2, 7, MENU_TIME_DATA); power_detect_data_save(POWER_CUR_MAX_BASE, RS485_READ_VOLTAGE_VALUE, RS485_READ_CURRENT_VALUE, MENU_TIME_DATA); } if ((RS485_READ_CURRENT_VALUE > (DEBUG_CURRENT_MIN * 10)) && (RS485_READ_CURRENT_VALUE < (DEBUG_CURRENT_MAX * 10))) { if ((TEST_CURRENT_MIN == 0) || (TEST_CURRENT_MIN == 0xFFFF)) //还未检测到此范围电流 { TEST_CURRENT_MIN = RS485_READ_CURRENT_VALUE; pcf8563_read_time(2, 7, MENU_TIME_DATA); power_detect_data_save(POWER_CUR_MIN_BASE, RS485_READ_VOLTAGE_VALUE, RS485_READ_CURRENT_VALUE, MENU_TIME_DATA); } } RS485_READ_UPDATA_FLAG = 1; if ((MAIN_STATUS & 0x0F)) { if (RS485_READ_VOLTAGE_VALUE > (POWER_VOLTAGE_MAX * 10)) { lcd_display_string(0, 0, " "); lcd_display_string(1, 0, " "); lcd_display_string(2, 0, " 供电电压偏高,请检查!"); lcd_display_string(3, 0, " "); Beep_Set (1, 1, 50000); Ai_CTRL.PID_SET_ALL = 1; //强制加热关闭 while (1); } if (RS485_READ_CURRENT_VALUE > (POWER_CURRENT_MAX * 10)) { lcd_display_string(0, 0, " "); lcd_display_string(1, 0, " "); lcd_display_string(2, 0, " 加热电流偏大,请检查!"); lcd_display_string(3, 0, " "); Beep_Set (1, 1, 50000); Ai_CTRL.PID_SET_ALL = 1; //强制加热关闭 while (1); } if ((RS485_READ_CURRENT_VALUE > (DEBUG_CURRENT_MIN * 10)) && (RS485_READ_CURRENT_VALUE < (DEBUG_CURRENT_MAX * 10))) { lcd_display_string(0, 0, " "); lcd_display_string(1, 0, " "); lcd_display_string(2, 0, " 加热电流偏小,请检查!"); lcd_display_string(3, 0, " "); Beep_Set (1, 1, 50000); Ai_CTRL.PID_SET_ALL = 1; //强制加热关闭 while (1); } } } Uart3_Debug_Recevie_Init(); DEBUG_STATUS = DEBUG_STATUS_CONFIG; DEBUG_STATUS_NEW_FLAG = 1; DEBUG_TIMER = 100; } } ///////////////////////////////////无线模块配置+通信/////////////////////////////////////////// if (BTCOM_STATUS == BT_STATUS_INITIAL) { if (BTCOM_STATUS_NEW_FLAG) { BTCOM_STATUS_NEW_FLAG = 0; RFIO_1_H; RFIO_2_H; BTCOM_TIMER = 10; } if (BTCOM_TIMER == 0) { BTCOM_STATUS = BT_STATUS_CONFIG; BTCOM_STATUS_NEW_FLAG = 1; } } else if (BTCOM_STATUS == BT_STATUS_CONFIG) { BTCOM_NUM = 0; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = 0xC2; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = 0x00; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = 0x08; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(BTCOM_CONFIG_ADDRESS >> 8); Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(BTCOM_CONFIG_ADDRESS); Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = 0x60 + BTCOM_CONFIG_SPEED; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = BTCOM_CONFIG_POWER; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = BTCOM_CONFIG_CHANNEL; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = BTCOM_CONFIG_MODE; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(BTCOM_CONFIG_PASSWORD >> 8); Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(BTCOM_CONFIG_PASSWORD); Uart1_BTcom_Send (BTCOM_NUM); Uart1_BTcom_Recevie_Init(); BTCOM_TIMER = 100; BTCOM_STATUS = BT_STATUS_WAIT; BTCOM_STATUS_NEW_FLAG = 1; } else if (BTCOM_STATUS == BT_STATUS_WAIT) { if (BTCOM_TIMER == 0) { BTCOM_STATUS = BT_STATUS_CONFIG; BTCOM_STATUS_NEW_FLAG = 1; } if ((Uart1_BTcom.UART_RXD_FINISH == 1)) { for (BTCOM_NUM = 1; BTCOM_NUM < 11; BTCOM_NUM++) { if (Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM] != Uart1_BTcom.UART_DMA_RXD_BUF[BTCOM_NUM]) BTCOM_NUM = 0xFE; } if (BTCOM_NUM < 0xFE) { RFIO_1_L; RFIO_2_L; BTCOM_STATUS = BT_STATUS_RXD; BTCOM_STATUS_NEW_FLAG = 1; } else { BTCOM_STATUS = BT_STATUS_CONFIG; BTCOM_STATUS_NEW_FLAG = 1; } Uart1_BTcom_Recevie_Init(); } } else if (BTCOM_STATUS == BT_STATUS_RXD) { if ((Uart1_BTcom.UART_RXD_FINISH == 1)) { if (Uart1_BTcom.UART_DMA_RXD_BUF[0] == BTCOMMAND_REPORT_STATUS) { BTCOM_NUM = 0; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(BTCOM_MASTER_ADDRESS >> 8); Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(BTCOM_MASTER_ADDRESS); Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = BTCOM_CONFIG_CHANNEL; //sent data Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = BTCOMMAND_REPORT_STATUS; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = 0; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = MFL_PARA_A.TIME_DATA_UART_NUM++; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = MAIN_STATUS; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = MFL_PARA_A.SLAVE_STATUS; temp = MFL_PARA_A.TEMP_DIS; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(temp >> 8); Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(temp); temp = MFL_PARA_A.TIME; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(temp >> 8); Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(temp); Uart1_BTcom.UART_DMA_TXD_BUF[4] = BTCOM_NUM - 3; //CRC calculate crc_num = 0; for (n = 3; n < BTCOM_NUM; n++) crc_num += Uart1_BTcom.UART_DMA_TXD_BUF[n]; Uart1_BTcom.UART_DMA_TXD_BUF[BTCOM_NUM++] = (u8)(crc_num); Uart1_BTcom_Send (BTCOM_NUM); } Uart1_BTcom_Recevie_Init(); } } //////////////////////////////////////////////////////////////////////////////////////// if ((MFL_PARA_A.Redianou_Check_En_Counter == 0) && (MAIN_STATUS != MAIN_STATUS_DIS_POWER) && (MAIN_STATUS != MAIN_STATUS_DEBUG) && (MAIN_STATUS != MAIN_STATUS_INITRESET)) { if ((MFL_PARA_A.temp_drop_enable) && (MFL_PARA_A.PID_PARA[9][0] >= 111)) { if ((MFL_PARA_A.temp_drop_new_flag) && (MFL_PARA_A.FANJIE_DELAY_NUM == 0)) { MFL_PARA_A.temp_drop_new_flag = 0; if ((MFL_PARA_A.TEMP_DIS < MFL_PARA_A.temp_drop_high_temp) && (MFL_PARA_A.temp_drop_run_cycle > MFL_PARA_A.temp_drop_cont_time)) { temp_drop_sum = 0; time_drop_sum = 0; temp_drop_min = 2000; temp_drop_max = -2000; //不需要切换 if (MFL_PARA_A.temp_drop_buf_num >= MFL_PARA_A.temp_drop_cont_time) { cycle_drop_start = MFL_PARA_A.temp_drop_buf_num - MFL_PARA_A.temp_drop_cont_time; cycle_drop_end = MFL_PARA_A.temp_drop_buf_num; for (temp = cycle_drop_start; temp < cycle_drop_end; temp++) { if (MFL_PARA_A.temp_drop_buf[temp] > temp_drop_max) temp_drop_max = MFL_PARA_A.temp_drop_buf[temp]; else if (MFL_PARA_A.temp_drop_buf[temp] < temp_drop_min) temp_drop_min = MFL_PARA_A.temp_drop_buf[temp]; time_drop_sum += MFL_PARA_A.Heat_work_time[temp]; } } else { cycle_drop_start = MFL_PARA_A.temp_drop_buf_num + 1024; cycle_drop_start -= MFL_PARA_A.temp_drop_cont_time; cycle_drop_end = MFL_PARA_A.temp_drop_buf_num; for (temp = cycle_drop_start; temp < 1024; temp++) { if (MFL_PARA_A.temp_drop_buf[temp] > temp_drop_max) temp_drop_max = MFL_PARA_A.temp_drop_buf[temp]; else if (MFL_PARA_A.temp_drop_buf[temp] < temp_drop_min) temp_drop_min = MFL_PARA_A.temp_drop_buf[temp]; time_drop_sum += MFL_PARA_A.Heat_work_time[temp]; } for (temp = 0; temp < cycle_drop_end; temp++) { if (MFL_PARA_A.temp_drop_buf[temp] > temp_drop_max) temp_drop_max = MFL_PARA_A.temp_drop_buf[temp]; else if (MFL_PARA_A.temp_drop_buf[temp] < temp_drop_min) temp_drop_min = MFL_PARA_A.temp_drop_buf[temp]; time_drop_sum += MFL_PARA_A.Heat_work_time[temp]; } } time_drop_sum *= MFL_PARA_A.temp_drop_draft_temp; time_drop_sum /= MFL_PARA_A.temp_drop_cont_time; time_drop_sum /= 200; temp_drop_max -= temp_drop_min; if (temp_drop_max < time_drop_sum) { lcd_display_string(0, 0, " "); lcd_display_string(1, 0, " "); lcd_display_string(2, 0, "热电偶加热异常,请检查!"); lcd_display_string(3, 0, " "); Beep_Set (1, 1, 50000); Ai_CTRL.PID_SET_ALL = 1; //强制加热关闭 RELAY_DELAY_EN = 0; RELAY_OFF; //强制关闭加热回路继电器 while (1); } } } } if ((FANJIE_VALUE_MAX > 0) && (MFL_PARA_A.FANJIE_DELAY_NUM == 0)) { if ((MFL_PARA_A.temp_bipolar_flag) && (MFL_PARA_A.TEMP_DIS >= FANJIE_VALUE_MAX)) { lcd_display_string(0, 0, " "); lcd_display_string(1, 0, " "); lcd_display_string(2, 0, " 热电偶反接,请检查! "); lcd_display_string(3, 0, " "); Beep_Set (1, 1, 50000); Ai_CTRL.PID_SET_ALL = 1; //强制加热关闭 RELAY_DELAY_EN = 0; RELAY_OFF; //强制关闭加热回路继电器 while (1); } } if ((MFL_PARA_A.temp_bipolar_flag == 0) && (MFL_PARA_A.TEMP_DIS >= 1300)) { lcd_display_string(0, 0, " "); lcd_display_string(1, 0, " "); lcd_display_string(2, 0, " 热电偶断路,请检查! "); lcd_display_string(3, 0, " "); Beep_Set (1, 1, 50000); Ai_CTRL.PID_SET_ALL = 1; //强制加热关闭 RELAY_DELAY_EN = 0; RELAY_OFF; //强制关闭加热回路继电器 while (1); } //异常超温保护点 if ((MFL_PARA_A.temp_bipolar_flag == 0) && (MFL_PARA_A.TEMP_DIS >= (MFL_PARA_A.EQUIPMENT_PARA[9][1] + 1000))) //+1000+ { lcd_display_string(0, 0, " "); lcd_display_string(1, 0, " "); lcd_display_string(2, 0, " 加热回路异常,请检查 "); lcd_display_string(3, 0, " "); Beep_Set (1, 1, 50000); Ai_CTRL.PID_SET_ALL = 1; //强制加热关闭 RELAY_DELAY_EN = 0; RELAY_OFF; //强制关闭加热回路继电器 while (1); } } if (Ai_CTRL.TIME_FLAG) { Ai_CTRL.TIME_FLAG = 0; TaskFuzzy (); //printf("%d\r\n",SYSTEM_TEMP); } //加热信号LCD显示 if ((MAIN_STATUS >= FUNCTION_MANHUI) && (MAIN_STATUS <= FUNCTION_KUAIHUIB)) { if (Ai_CTRL.PWM_STATUS_FLAG) { Ai_CTRL.PWM_STATUS_FLAG = 0; lcd_post (0, 11); if (Ai_CTRL.PWM_STATUS) lcd_display (0xA1F1); else lcd_display (0xA1A1); } } //恢复出厂参数 if (MAIN_STATUS == MAIN_STATUS_INITRESET) { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_reset (); //显示重置界面 KEY_VALUE = KEY_VALUE_NONE; } if ((KEY_VALUE == KEY_VALUE_ENT)) { Beep_Set (10, 10, 1); lcd_display_string(3, 0, " 正在恢复中,请稍后 "); system_para_data_reset (); Beep_Set (10, 10, 1); lcd_display_string(3, 0, " 已恢复出厂设置,请重启"); while (1); } else if ((KEY_VALUE == KEY_VALUE_ESC)) { Beep_Set (10, 10, 1); lcd_display_string(3, 0, " 已取消恢复,请重启"); while (1); } } /////////////////////////////显示历史电压电流数据模式////////////////////////////////////// else if (MAIN_STATUS == MAIN_STATUS_DIS_POWER) { lcd_display_string(0, 0, "VH: "); lcd_display_string(1, 0, "VL: "); lcd_display_string(2, 0, "AH: "); lcd_display_string(3, 0, "AL: "); power_detect_data_display(0, 1, POWER_VOL_MAX_BASE); power_detect_data_display(1, 1, POWER_VOL_MIN_BASE); power_detect_data_display(2, 1, POWER_CUR_MAX_BASE); power_detect_data_display(3, 1, POWER_CUR_MIN_BASE); //Beep_Set (1,1,50000); Ai_CTRL.PID_SET_ALL = 1; //强制加热关闭 while (1) { if ((KEY_VALUE == KEY_VALUE_ENT)) { Beep_Set (10, 1, 1); //清除电能参数 power_detect_data_reset (POWER_VOL_MAX_BASE); power_detect_data_reset (POWER_VOL_MIN_BASE); power_detect_data_reset (POWER_CUR_MAX_BASE); power_detect_data_reset (POWER_CUR_MIN_BASE); lcd_display_string(0, 0, " "); lcd_display_string(1, 0, " "); lcd_display_string(2, 0, " 清除完成,请重启设备 "); lcd_display_string(3, 0, " "); break; } } while (1); } /////////////////////////////DEBUG 模式////////////////////////////////////// else if (MAIN_STATUS == MAIN_STATUS_DEBUG) { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_debug (); //显示调试界面 if (MFL_PARA_A.Redianou_Type == 1) rdo_protect_voltage = 543; //S分度1000°*G(50.4)=542.153mV else rdo_protect_voltage = 2274; //K分度1000°*G(50.4)=2274mV debug_fix_data_display (MFL_PARA_A.board_temp_init_data, MFL_PARA_A.ads1220_ch23_init_data, rdo_protect_voltage); MENU_Y = 0; KEY_VALUE = KEY_VALUE_NONE; } if (GET_ADC_BUSY() == 0) { adc_data = ads1220_read_data (); } if (SECOND_FLAG) { SECOND_FLAG = 0; debug_com_data_display (MFL_PARA_A.adc_BoardTemp_data, adc_data, MFL_PARA_A.adc_Compare_data); } if ((KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.board_temp_init_data < 199) { MFL_PARA_A.board_temp_init_data++; debug_fix_data_display (MFL_PARA_A.board_temp_init_data, MFL_PARA_A.ads1220_ch23_init_data, rdo_protect_voltage); //1100°超限 } } else if ((KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.board_temp_init_data > 1) { MFL_PARA_A.board_temp_init_data--; debug_fix_data_display (MFL_PARA_A.board_temp_init_data, MFL_PARA_A.ads1220_ch23_init_data, rdo_protect_voltage); //1100°超限 } } else if ((KEY_VALUE == KEY_VALUE_JINCHENG)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.ads1220_ch23_init_data = adc_data; debug_fix_data_display (MFL_PARA_A.board_temp_init_data, MFL_PARA_A.ads1220_ch23_init_data, rdo_protect_voltage); } else if ((KEY_VALUE == KEY_VALUE_ENT)) { Beep_Set (10, 10, 1); debug_data_save (MFL_PARA_A.board_temp_init_data, MFL_PARA_A.ads1220_ch23_init_data); lcd_display_string(1, 0, " "); lcd_display_string(2, 0, " "); lcd_display_string(3, 0, " 已保存调试参数,请重启"); while (1); } } else if (MAIN_STATUS == MAIN_STATUS_WELCOME) { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_welcome (); //显示欢迎界面 Bresenham_Temp_Calibrate (); } if (KEY_VALUE != KEY_VALUE_NONE) { MENU_X = 0; MENU_Y = 0; MENU_X1 = 0; MENU_X2 = 0; MENU_X3 = 0; Beep_Set (10, 10, 1); KEY_VALUE = KEY_VALUE_NONE; MAIN_STATUS = MAIN_STATUS_FUNCTION; //显示功能菜单 STATUS_NEW_FLAG = FLAG_VALID; //菜单选择保存值初始化 MENU_X = MFL_PARA_A.menu_select_post; MENU_X1 = MENU_X; } } //功能菜单显示 else if (MAIN_STATUS == MAIN_STATUS_FUNCTION) { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_function (); //显示功能界面 //反显光标 MENU_X = MENU_X1; lcd_display_black (MENU_DIS_BLACK_FUN[MENU_X * 3], MENU_DIS_BLACK_FUN[MENU_X * 3 + 1], MENU_DIS_BLACK_FUN[MENU_X * 3 + 2], 1); } if ((KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_black (MENU_DIS_BLACK_FUN[MENU_X * 3], MENU_DIS_BLACK_FUN[MENU_X * 3 + 1], MENU_DIS_BLACK_FUN[MENU_X * 3 + 2], 0); if (MENU_X > 0) MENU_X--; else MENU_X = FUNCTION_ITEM_NUM - 1; lcd_display_black (MENU_DIS_BLACK_FUN[MENU_X * 3], MENU_DIS_BLACK_FUN[MENU_X * 3 + 1], MENU_DIS_BLACK_FUN[MENU_X * 3 + 2], 1); } else if ((KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_black (MENU_DIS_BLACK_FUN[MENU_X * 3], MENU_DIS_BLACK_FUN[MENU_X * 3 + 1], MENU_DIS_BLACK_FUN[MENU_X * 3 + 2], 0); if (MENU_X < (FUNCTION_ITEM_NUM - 1)) MENU_X++; else MENU_X = 0; lcd_display_black (MENU_DIS_BLACK_FUN[MENU_X * 3], MENU_DIS_BLACK_FUN[MENU_X * 3 + 1], MENU_DIS_BLACK_FUN[MENU_X * 3 + 2], 1); } else if ((KEY_VALUE == KEY_VALUE_RIGHT) && (MENU_Y < (MAIN_ITEM_NUM - 1))) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //反白取消 lcd_display_black (MENU_DIS_BLACK_FUN[MENU_X * 3], MENU_DIS_BLACK_FUN[MENU_X * 3 + 1], MENU_DIS_BLACK_FUN[MENU_X * 3 + 2], 0); MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程菜单状态 STATUS_NEW_FLAG = FLAG_VALID; MENU_X1 = MENU_X; MENU_X = 0; MENU_Y++; } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (5, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MENU_X1 = MENU_X; //save the menu select after enter press eeprom_24c64_write_byte(MENU_SELECT_VALUE_ADD, MENU_X); lcd_display_black (MENU_DIS_BLACK_FUN[MENU_X * 3], MENU_DIS_BLACK_FUN[MENU_X * 3 + 1], MENU_DIS_BLACK_FUN[MENU_X * 3 + 2], 0); MAIN_STATUS = MAIN_STATUS + MENU_X + 1; //进入功能函数执行程序 STATUS_NEW_FLAG = FLAG_VALID; } } //编程菜单显示 else if (MAIN_STATUS == MAIN_STATUS_PROGRAM) { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_program (); //显示编程菜单 //反显光标 MENU_X = MENU_X2; lcd_display_black (MENU_DIS_BLACK_PRO[MENU_X * 3], MENU_DIS_BLACK_PRO[MENU_X * 3 + 1], MENU_DIS_BLACK_PRO[MENU_X * 3 + 2], 1); } if ((KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_black (MENU_DIS_BLACK_PRO[MENU_X * 3], MENU_DIS_BLACK_PRO[MENU_X * 3 + 1], MENU_DIS_BLACK_PRO[MENU_X * 3 + 2], 0); if (MENU_X > 0) MENU_X--; else MENU_X = PROGRAM_ITEM_NUM - 1; lcd_display_black (MENU_DIS_BLACK_PRO[MENU_X * 3], MENU_DIS_BLACK_PRO[MENU_X * 3 + 1], MENU_DIS_BLACK_PRO[MENU_X * 3 + 2], 1); } else if ((KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_black (MENU_DIS_BLACK_PRO[MENU_X * 3], MENU_DIS_BLACK_PRO[MENU_X * 3 + 1], MENU_DIS_BLACK_PRO[MENU_X * 3 + 2], 0); if (MENU_X < (PROGRAM_ITEM_NUM - 1)) MENU_X++; else MENU_X = 0; lcd_display_black (MENU_DIS_BLACK_PRO[MENU_X * 3], MENU_DIS_BLACK_PRO[MENU_X * 3 + 1], MENU_DIS_BLACK_PRO[MENU_X * 3 + 2], 1); } else if ((KEY_VALUE == KEY_VALUE_RIGHT) && (MENU_Y < (MAIN_ITEM_NUM - 1))) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //反白取消 lcd_display_black (MENU_DIS_BLACK_PRO[MENU_X * 3], MENU_DIS_BLACK_PRO[MENU_X * 3 + 1], MENU_DIS_BLACK_PRO[MENU_X * 3 + 2], 0); MAIN_STATUS = MAIN_STATUS_MESSAGE; //进入信息显示状态 STATUS_NEW_FLAG = FLAG_VALID; MENU_X2 = MENU_X; MENU_X = 0; MENU_Y++; } else if ((KEY_VALUE == KEY_VALUE_LEFT) && (MENU_Y > 0)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //反白取消 lcd_display_black (MENU_DIS_BLACK_PRO[MENU_X * 3], MENU_DIS_BLACK_PRO[MENU_X * 3 + 1], MENU_DIS_BLACK_PRO[MENU_X * 3 + 2], 0); MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能菜单状态 STATUS_NEW_FLAG = FLAG_VALID; MENU_X2 = MENU_X; MENU_X = 0; MENU_Y--; } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (5, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MENU_X2 = MENU_X; lcd_display_black (MENU_DIS_BLACK_PRO[MENU_X * 3], MENU_DIS_BLACK_PRO[MENU_X * 3 + 1], MENU_DIS_BLACK_PRO[MENU_X * 3 + 2], 0); //MAIN_STATUS=MAIN_STATUS+MENU_X+1; //进入功能函数执行程序 MAIN_STATUS_BACK = MAIN_STATUS + MENU_X + 1; if (MAIN_STATUS_BACK > 0x33) MAIN_STATUS = PROGRAM_PASSWORD; else MAIN_STATUS = MAIN_STATUS_BACK; STATUS_NEW_FLAG = FLAG_VALID; } } //信息菜单显示 else if (MAIN_STATUS == MAIN_STATUS_MESSAGE) { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_message (); //显示信息菜单 } if ((KEY_VALUE == KEY_VALUE_LEFT) && (MENU_Y > 0)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; MENU_X = 0; MENU_Y--; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == FUNCTION_MANHUI) { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_manhui (); //显示慢灰菜单 MFL_PARA_A.temp_drop_enable = 1; MFL_PARA_A.temp_drop_run_cycle = 0; MFL_PARA_A.SLAVE_STATUS = MF_INIT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; } if (KEY_VALUE == KEY_VALUE_ESC) { //MOTER_OFF; MFL_PARA_A.TIME_NUM = 0; Beep_Set (15, 15, 1); KEY_VALUE = KEY_VALUE_NONE; CtrlStove(0, 0, KU40); //while (MFL_PARA_A.TIME_NUM<150); //MoveStove(posAllClose); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } switch(MFL_PARA_A.SLAVE_STATUS) { case MF_INIT: { if(MFL_PARA_A.TEMP_VALUE <= MF_TEMP_100) { //lcd_display_string(3,0,"提示:等待炉门打开... "); MFL_PARA_A.SLAVE_STATUS = MF_WAIT0; MFL_PARA_A.SLAVE_STATUS_NEW = 1; //MoveStove(posAllOpen); Ai_CTRL.PID_SET_ALL = 0; } else { if (MFL_PARA_A.SLAVE_STATUS_NEW) { Beep_Set (5, 1, 1); lcd_display_string(3, 0, "提示:等待炉温下降... "); MFL_PARA_A.SLAVE_STATUS_NEW = 0; //MoveStove(posAllOpen); } CtrlStove(0, 0, KU40); } if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); //time_dis_lcd (2,5,MFL_PARA_A.TIME);lcd_display_time_space (); //显示当前时间 } } break; case MF_WAIT0: { if(1) //已全部打开 { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); //time_dis_lcd (2,5,MFL_PARA_A.TIME);lcd_display_time_space (); //显示当前时间 } if (MFL_PARA_A.SLAVE_STATUS_NEW) { Beep_Set (1, 1, 1); //lcd_display_string(3,0,"提示:按确认留门缝 "); MFL_PARA_A.SLAVE_STATUS_NEW = 0; } //if (KEY_VALUE==KEY_VALUE_ENT) if (1) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = MF_WARMUP1_WAIT; //20121030 MFL_PARA_A.SLAVE_STATUS_NEW = 1; CtrlStove(1, MF_TEMP_500, KU40); //CtrlStove(1,MF_TEMP_600,KU40); //20121030 //CtrlStove(1,MANHUI_500_CHUWEN,KU40); //20121101 lcd_display_string(0, 0, "慢灰状态:测试中... "); lcd_display_string(3, 0, "提示:请打开烟囱并留门缝"); MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.TEMP_MANHUI_INIT = MFL_PARA_A.TEMP_VALUE; } /*else if (KEY_VALUE==KEY_VALUE_ESC) { Beep_Set (1,1,1); KEY_VALUE=KEY_VALUE_NONE; CtrlStove(0,0,KU40); MAIN_STATUS=MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG=FLAG_VALID; } */ } } break; case MF_WARMUP1_WAIT: //20121030 { /*if(MFL_PARA_A.TEMP_VALUE>=MANHUI_500_QIKONG) { CtrlStove(1,MANHUI_500_MOWEN,KU40); MFL_PARA_A.SLAVE_STATUS=MF_WARMUP1; MFL_PARA_A.SLAVE_STATUS_NEW=1; } else { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG=0; temp_dis_lcd (1,5,MFL_PARA_A.TEMP_DIS);lcd_display_temp_space (); time_dis_lcd (2,5,MFL_PARA_A.TIME);lcd_display_time_space (); //显示当前时间 } }*/ if (MFL_PARA_A.TEMP_VALUE < 500) { if (MFL_PARA_A.TEMP_VALUE > (MFL_PARA_A.TIME * (500 - MFL_PARA_A.TEMP_MANHUI_INIT) / 1800 + MFL_PARA_A.TEMP_MANHUI_INIT)) { Ai_CTRL.PID_SET_ALL = 1; //强行关闭 } else { Ai_CTRL.PID_SET_ALL = 0; //正常控温 } } else { MFL_PARA_A.SLAVE_STATUS = MF_WARMUP1; MFL_PARA_A.SLAVE_STATUS_NEW = 1; Ai_CTRL.PID_SET_ALL = 0; //正常控温 } if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } } break; case MF_WARMUP1: //500度恒温半小时 { if(MFL_PARA_A.TEMP_VALUE >= MF_TEMP_500) { Beep_Set (10, 10, 2); lcd_display_string(0, 0, "慢灰状态:测试中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); MFL_PARA_A.SLAVE_STATUS = MF_HENWEN1; MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } else { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } } } break; case MF_HENWEN1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.TEMP_DIS >= 500) { temp_dis_lcd (1, 5, (MFL_PARA_A.TEMP_DIS - 500) / 4 + 500); lcd_display_temp_space (); } else { temp_dis_lcd (1, 5, 500 - (500 - MFL_PARA_A.TEMP_DIS) / 4); lcd_display_temp_space (); } //temp_dis_lcd (1,5,(MFL_PARA_A.TEMP_DIS+500)/2);lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if(MFL_PARA_A.TIME == 1770) //"29:30" 提示 Beep_Set (10, 10, 1); if(MFL_PARA_A.TIME >= 1800) { lcd_display_string(0, 0, "慢灰状态:测试中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); MFL_PARA_A.SLAVE_STATUS = MF_WARMUP2; MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.TEMP_DIS_START = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.TEMP_DIS_END = MFL_PARA_A.PID_PARA[3][1]; MFL_PARA_A.TIME_MF_SET = MFL_PARA_A.PID_PARA[3][0]; MFL_PARA_A.TIME_MF_SET *= 60; MFL_PARA_A.TIME_MF_SET_BEEP = MFL_PARA_A.TIME_MF_SET - 30; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; //MoveStove(posAllClose); //这里不关闭,继续保持门缝 CtrlStove(1, MF_TEMP_815, KU40); //CtrlStove(1,MANHUI_815_CHUWEN,KU40); //Beep_Set (1,1,1); } } break; // case MF_HENWEN1_WAIT: // { // if(MFL_PARA_A.TEMP_VALUE>=MANHUI_815_QIKONG) // { // CtrlStove(1,MANHUI_815_MOWEN,KU40); // // MFL_PARA_A.SLAVE_STATUS=MF_WARMUP2; // MFL_PARA_A.SLAVE_STATUS_NEW=1; // } // else // { // if (MFL_PARA_A.TIME_SEC_FLAG) // { // MFL_PARA_A.TIME_SEC_FLAG=0; // // temp_dis_lcd (1,5,MFL_PARA_A.TEMP_DIS);lcd_display_temp_space (); // time_dis_lcd (2,5,MFL_PARA_A.TIME);lcd_display_time_space (); //显示当前时间 // } // } // } // break; case MF_WARMUP2: //815度恒温一小时 { if (MFL_PARA_A.TEMP_VALUE >= MF_TEMP_815) { lcd_display_string(0, 0, "慢灰状态:测试中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); MFL_PARA_A.SLAVE_STATUS = MF_HENWEN2; MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; Ai_CTRL.PID_SET_ALL = 0; //正常控温 Beep_Set (10, 10, 2); } else if ((MFL_PARA_A.TEMP_VALUE >= MF_TEMP_KEY) && (KEY_VALUE == KEY_VALUE_ENT)) { KEY_VALUE = KEY_VALUE_NONE; lcd_display_string(0, 0, "慢灰状态:测试中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); MFL_PARA_A.SLAVE_STATUS = MF_HENWEN2; MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; Ai_CTRL.PID_SET_ALL = 0; //正常控温 Beep_Set (10, 10, 3); } else { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (MFL_PARA_A.TEMP_VALUE < MFL_PARA_A.TEMP_DIS_END) { if (MFL_PARA_A.TEMP_VALUE > MFL_PARA_A.TEMP_DIS_START) { sum = MFL_PARA_A.TIME; sum *= MFL_PARA_A.PID_PARA[3][2]; sum /= 60; sum += MFL_PARA_A.TEMP_DIS_START; if (MFL_PARA_A.TEMP_VALUE > (u16)(sum)) Ai_CTRL.PID_SET_ALL = 1; //强行关闭 else Ai_CTRL.PID_SET_ALL = 0xffff; } else { Ai_CTRL.PID_SET_ALL = 0xffff; } } else if (MFL_PARA_A.TEMP_VALUE < (KF_TEMP_815)) { Ai_CTRL.PID_SET_ALL = 0; //正常控温 } } } break; case MF_HENWEN2: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if(MFL_PARA_A.TIME == MFL_PARA_A.TIME_MF_SET_BEEP) //"59:30" //提前半分钟提示时间到 Beep_Set (10, 10, 15); if(MFL_PARA_A.TIME >= MFL_PARA_A.TIME_MF_SET) { //增加退出样品的功能 //MoveStove(posAllOpen); lcd_display_string(0, 0, "慢灰状态:试验完成 "); lcd_display_string(3, 0, "提示:按确认键检查灼烧 "); MFL_PARA_A.SLAVE_STATUS = MF_WAIT1; MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; //Beep_Set (1,1,1); //CtrlStove(0,MF_TEMP_100,KU40); CtrlStove(0, 0, KU40); } } break; case MF_WAIT1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); //time_dis_lcd (2,5,MFL_PARA_A.TIME);lcd_display_time_space (); //显示当前时间 } if(KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //MoveStove(posAllClose); MFL_PARA_A.SLAVE_STATUS = MF_WARMUP3; MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(0, 0, "慢灰状态:灼烧中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请打开烟囱并留门缝"); MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; CtrlStove(1, MF_TEMP_815, KU40); } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; CtrlStove(0, 0, KU40); //MoveStove(posAllClose); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; case MF_WARMUP3: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (MFL_PARA_A.TEMP_VALUE >= MF_TEMP_815 ) { lcd_display_string(0, 0, "慢灰状态:灼烧中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); MFL_PARA_A.SLAVE_STATUS = MF_RETEST; MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } } break; case MF_RETEST: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if(MFL_PARA_A.TIME == 1170) //"19:00" //提前一分钟提示 Beep_Set (10, 10, 15); if(MFL_PARA_A.TIME >= 1200) //检查性灼烧 { //Beep_Set (10,10,1); //MoveStove(posAllOpen); lcd_display_string(0, 0, "慢灰状态:灼烧完成 "); lcd_display_string(3, 0, "提示:按确认键检查灼烧 "); MFL_PARA_A.SLAVE_STATUS = MF_WAIT2; MFL_PARA_A.SLAVE_STATUS_NEW = 1; CtrlStove(0, MF_TEMP_100, KU40); } } break; case MF_WAIT2: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); //time_dis_lcd (2,5,MFL_PARA_A.TIME);lcd_display_time_space (); //显示当前时间 } if(KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //MoveStove(posAllClose); MFL_PARA_A.SLAVE_STATUS = MF_WARMUP3; MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(0, 0, "慢灰状态:灼烧中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请打开烟囱并留门缝"); MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; CtrlStove(1, MF_TEMP_815, KU40); } else if (KEY_VALUE == KEY_VALUE_ESC) { //MOTER_OFF; Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; CtrlStove(0, 0, KU40); //MoveStove(posAllClose); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; SECOND_NUM = 0; while (SECOND_NUM < 190); } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == FUNCTION_KUAIHUI) //快灰 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_kuaihui (); //显示快灰菜单 Ai_CTRL.PID_SET_ALL = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.temp_drop_enable = 1; MFL_PARA_A.temp_drop_run_cycle = 0; MFL_PARA_A.SLAVE_STATUS = KF_INIT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; } switch(MFL_PARA_A.SLAVE_STATUS) { case KF_INIT: { CtrlStove(1, KF_TEMP_850, KU40); //升温到850 lcd_display_string(0, 0, "经典快灰:升温... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请打开烟囱 "); MFL_PARA_A.SLAVE_STATUS = KF_WARMUP1; MFL_PARA_A.TEMP_DIS_START = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.TEMP_DIS_END = MFL_PARA_A.PID_PARA[4][1]; MFL_PARA_A.TIME_KF_SET = MFL_PARA_A.PID_PARA[4][0]; MFL_PARA_A.TIME_KF_SET *= 60; MFL_PARA_A.TIME_KF_SET_BEEP = MFL_PARA_A.TIME_KF_SET - 30; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } break; case KF_WARMUP1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (MFL_PARA_A.TEMP_VALUE < MFL_PARA_A.TEMP_DIS_END) { if (MFL_PARA_A.TEMP_VALUE > MFL_PARA_A.TEMP_DIS_START) { sum = MFL_PARA_A.TIME; sum *= MFL_PARA_A.PID_PARA[4][2]; sum /= 60; sum += MFL_PARA_A.TEMP_DIS_START; if (MFL_PARA_A.TEMP_VALUE > (u16)(sum)) Ai_CTRL.PID_SET_ALL = 1; //强行关闭 else Ai_CTRL.PID_SET_ALL = 0xffff; } else { Ai_CTRL.PID_SET_ALL = 0xffff; } } else if (MFL_PARA_A.TEMP_VALUE < (KF_TEMP_850 - 2)) { Ai_CTRL.PID_SET_ALL = 0; //正常控温 } if (MFL_PARA_A.TEMP_VALUE >= (KF_TEMP_850 - 2)) { lcd_display_string(0, 0, "经典快灰:恒温... "); lcd_display_string(3, 0, "提示:按确认键开始送样 "); Ai_CTRL.PID_SET_ALL = 0; //正常控温 MFL_PARA_A.SLAVE_STATUS = KF_WAIT0; Beep_Set (10, 10, 150); } else if ((MFL_PARA_A.TEMP_VALUE >= KF_TEMP_KEY) && (KEY_VALUE == KEY_VALUE_ENT)) { KEY_VALUE = KEY_VALUE_NONE; lcd_display_string(0, 0, "经典快灰:恒温... "); lcd_display_string(3, 0, "提示:按确认键开始送样 "); Ai_CTRL.PID_SET_ALL = 0; //正常控温 MFL_PARA_A.SLAVE_STATUS = KF_WAIT0; Beep_Set (10, 10, 150); } } break; case KF_WAIT0: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (KEY_VALUE != KEY_VALUE_NONE) Beep_Set (10, 10, 0); if ((KEY_VALUE == KEY_VALUE_ENT)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //MoveStove(posAllOpen); //打开炉门 lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:送样完成后按确认键"); MFL_PARA_A.SLAVE_STATUS = KF_WAIT8; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } } break; case KF_WAIT8: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_string(0, 0, "经典快灰:测试中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请打开烟囱 "); MFL_PARA_A.SLAVE_STATUS = KF_HENGWEN1_WAIT1; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.SLAVE_STATUS = KF_HUIWEN_WAIT1; MFL_PARA_A.TIME_NUM = 0; //时间计数器清零 MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.Temp_Test_Min = 930; CtrlStove(1, KUAIHUI_815, KU40); Ai_CTRL.SumErrLimit = 0; //20130403 HQ Ai_CTRL.PID_SET_FLAG = 1; Ai_CTRL.PID_TEST_STATUS = 0; } } break; case KF_HUIWEN_WAIT1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; //MFL_PARA_A.Temp_Test[MFL_PARA_A.TIME]=MFL_PARA_A.TEMP_VALUE; if (MFL_PARA_A.Temp_Test_Min > MFL_PARA_A.TEMP_VALUE) { MFL_PARA_A.Temp_Test_Min = MFL_PARA_A.TEMP_VALUE; MFL_PARA_A.Temp_Test_Time_Start = MFL_PARA_A.TIME; } //温度显示处理 if (MFL_PARA_A.Temp_Test_Min < MFL_PARA_A.TEMP_VALUE) //20130403 HQ { if (MFL_PARA_A.TEMP_VALUE < (815 - 10 * 2)) { HF_TEMP = (MFL_PARA_A.TEMP_VALUE + (MFL_PARA_A.TEMP_VALUE - MFL_PARA_A.Temp_Test_Min) * 10 / ((815 - 10 * 2) - MFL_PARA_A.Temp_Test_Min)); MFL_PARA_A.TEMP_VALUE_DISPLAY = (MFL_PARA_A.TEMP_VALUE + (MFL_PARA_A.TEMP_VALUE - MFL_PARA_A.Temp_Test_Min) * 10 / ((815 - 10 * 2) - MFL_PARA_A.Temp_Test_Min)); temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_VALUE_DISPLAY); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } else { HF_TEMP = (MFL_PARA_A.TEMP_VALUE + 815) / 2; MFL_PARA_A.TEMP_VALUE_DISPLAY = ((MFL_PARA_A.TEMP_VALUE + 815) / 2); temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_VALUE_DISPLAY); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } } else { MFL_PARA_A.TEMP_VALUE_DISPLAY = MFL_PARA_A.TEMP_DIS; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (Ai_CTRL.PID_SET_FLAG) { //开始等待延时结束 if (MFL_PARA_A.TIME < JDKH_TIME_DELAY) { Ai_CTRL.PID_SET_ALL = 1; //强行关闭 Ai_CTRL.PWM_TIME_NUM = 0; Ai_CTRL.PID_TEST_STATUS = 1; //temp_dis_lcd(0,7,Ai_CTRL.PID_TEST_STATUS); //temp_dis_lcd(0,9,Ai_CTRL.PID_SET_ALL); } //掉温阶段按照PWM1功率加热 else if ((MFL_PARA_A.Temp_Test_Min >= MFL_PARA_A.TEMP_VALUE)) { Ai_CTRL.PID_SET_ALL = HUIFA_HUIWEN_PWM1 + 2; //PWM Control 2-102 Ai_CTRL.PID_TEST_STATUS = 2; //temp_dis_lcd(0,7,Ai_CTRL.PID_TEST_STATUS); //temp_dis_lcd(0,9,Ai_CTRL.PID_SET_ALL); } //((MFL_PARA_A.TEMP_VALUE>=HUIFA_TEMP_STOP)&&(MFL_PARA_A.Temp_Test_MinHUIFA_TIME_DELAY)&&(MFL_PARA_A.TEMP_VALUE>HUIFA_TEMP_STOP)&&(MFL_PARA_A.TIME>HUIFA_TIME_ARM)) { Ai_CTRL.PID_SET_FLAG = 0; Ai_CTRL.PID_SET_ALL = 0; //恢复控温模式 Ai_CTRL.TIME_NUM = 0; CtrlStove(1, 815, KU40); Ai_CTRL.SumErrLimit = 0; Ai_CTRL.PID_TEST_STATUS = 5; //temp_dis_lcd(0,7,Ai_CTRL.PID_TEST_STATUS); //temp_dis_lcd(0,9,Ai_CTRL.PID_SET_ALL); } } if(MFL_PARA_A.TEMP_VALUE >= (KUAIHUI_815 - 2)) //回温3分钟 { CtrlStove(1, 815, KU40); MFL_PARA_A.SLAVE_STATUS = KF_HENGWEN1_WAIT1; Ai_CTRL.PID_SET_ALL = 0; //恢复控温模式 } } /*if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG=0; //temp_dis_lcd (1,5,MFL_PARA_A.TEMP_DIS);lcd_display_temp_space (); //time_dis_lcd (2,5,MFL_PARA_A.TIME);lcd_display_time_space (); //显示当前时间 MFL_PARA_A.Temp_Test[MFL_PARA_A.TIME]=MFL_PARA_A.TEMP_VALUE; if (MFL_PARA_A.Temp_Test_Min>MFL_PARA_A.TEMP_VALUE) { MFL_PARA_A.Temp_Test_Min=MFL_PARA_A.TEMP_VALUE; MFL_PARA_A.Temp_Test_Time_Start=MFL_PARA_A.TIME; } //if ((MFL_PARA_A.TIME>HUIFA_TIME_DELAY)&&(MFL_PARA_A.TEMP_VALUE=(MFL_PARA_A.TEMP_VALUE))) Ai_CTRL.PID_SET_ALL=0xffff; //强行打开 else { if (MFL_PARA_A.TEMP_VALUE>=JDKH_TEMP_STOP) { if (MFL_PARA_A.TIME815)) { MFL_PARA_A.TEMP_DIS_CALC=(MFL_PARA_A.TEMP_DIS-815)/2+815; } else { MFL_PARA_A.TEMP_DIS_CALC=MFL_PARA_A.TEMP_DIS; } temp_dis_lcd (1,5,MFL_PARA_A.TEMP_DIS_CALC);lcd_display_temp_space (); time_dis_lcd (2,5,MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 if(MFL_PARA_A.TEMP_VALUE>=(KUAIHUI_815-2)) //回温3分钟 { CtrlStove(1,815,KU40); MFL_PARA_A.SLAVE_STATUS=KF_HENGWEN1_WAIT1; Ai_CTRL.PID_SET_ALL=0; //恢复控温模式 } }*/ } break; case KF_HENGWEN1_WAIT1: { if(MFL_PARA_A.TEMP_VALUE >= (KUAIHUI_815 - 2)) { MFL_PARA_A.SLAVE_STATUS = KF_HENGWEN1; lcd_display_string(0, 0, "经典快灰:测试中... "); MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.SLAVE_STATUS_NEW = 1; } else { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } } } break; case KF_HENGWEN1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if(MFL_PARA_A.TIME == MFL_PARA_A.TIME_KF_SET_BEEP) { Beep_Set (10, 10, 15); } if(MFL_PARA_A.TIME >= MFL_PARA_A.TIME_KF_SET) { //Beep_Set (10,10,15); //CtrlStove(0,KF_TEMP_815,KU40); //增加退出样品的功能 //MoveStove(posAllOpen); lcd_display_string(2, 0, "提示:按退出键继续试验 "); lcd_display_string(3, 0, "提示:按确认键检查灼烧 "); MFL_PARA_A.SLAVE_STATUS = KF_WAIT9; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } } break; case KF_WAIT9: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); //time_dis_lcd (2,5,MFL_PARA_A.TIME);lcd_display_time_space (); //显示当前时间 } if((KEY_VALUE == KEY_VALUE_ENT)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //CtrlStove(1,KF_TEMP_815,KU40); //升温到815 //MoveStove(posAllClose) ; MFL_PARA_A.SLAVE_STATUS = KF_WARMUP2; MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(0, 0, "经典快灰:测试中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); //lcd_display_string(3,0,"提示:关闭炉门... "); lcd_display_string(3, 0, "提示: "); MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } else if ((KEY_VALUE == KEY_VALUE_ESC)) { Beep_Set (15, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //CtrlStove(0,0,KU40); //MoveStove(posAllClose) ; MAIN_STATUS = FUNCTION_KUAIHUI; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; case KF_WARMUP2: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (MFL_PARA_A.TEMP_VALUE >= KF_TEMP_815) { MFL_PARA_A.SLAVE_STATUS = KF_RETEST; MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(0, 0, "经典快灰:测试中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } } break; case KF_RETEST: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if(MFL_PARA_A.TIME == 1170) //"19:30" //提前一分钟提示 Beep_Set (10, 10, 15); if(MFL_PARA_A.TIME >= 1200) //检查性灼烧 { //CtrlStove(0,MF_TEMP_100,KU40); //MoveStove(posAllOpen) ; lcd_display_string(2, 0, "提示:按退出键继续试验 "); lcd_display_string(3, 0, "提示:按确认键检查灼烧 "); MFL_PARA_A.SLAVE_STATUS = KF_WAIT10; //MFL_PARA_A.SLAVE_STATUS_NEW=1; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; //Beep_Set (10,5,1); } } break; case KF_WAIT10: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); //time_dis_lcd (2,5,MFL_PARA_A.TIME);lcd_display_time_space (); //显示当前时间 } if((KEY_VALUE == KEY_VALUE_ENT)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //MoveStove(posAllClose); //CtrlStove(1,KF_TEMP_815,KU40); MFL_PARA_A.SLAVE_STATUS = KF_WARMUP2; MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(0, 0, "经典快灰:灼烧中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示: "); MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } else if ((KEY_VALUE == KEY_VALUE_ESC)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //MoveStove(posAllClose); //CtrlStove(0,0,KU40); MAIN_STATUS = FUNCTION_KUAIHUI; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; SECOND_NUM = 0; while (SECOND_NUM < 190); } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == FUNCTION_KUAIHUIB) //快灰B { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_kuaihuib (); //显示快灰菜单 Ai_CTRL.PID_SET_ALL = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.temp_drop_enable = 1; MFL_PARA_A.temp_drop_run_cycle = 0; MFL_PARA_A.SLAVE_STATUS = KF_INIT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; } switch(MFL_PARA_A.SLAVE_STATUS) { case KF_INIT: { if (MFL_PARA_A.TEMP_VALUE >= (500)) { CtrlStove(0, 0, KU40); //关闭加热 lcd_display_string(0, 0, "快速快灰:降温中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请打开炉门 "); MFL_PARA_A.SLAVE_STATUS = KF_INIT_WAIT; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } else { CtrlStove(1, KF_TEMP_815, KU40); //升温到815 lcd_display_string(0, 0, "快速快灰:请放样... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:放样后请按确认键 "); MFL_PARA_A.SLAVE_STATUS = KF_WARMUP1_WAIT1; KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } } break; case KF_INIT_WAIT: { if (MFL_PARA_A.TEMP_VALUE < (500)) { Beep_Set (5, 5, 3); lcd_display_string(0, 0, "快速快灰:请放样... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:放样后请按确认键 "); MFL_PARA_A.SLAVE_STATUS = KF_WARMUP1_WAIT1; KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } } break; case KF_REPET_WAIT: { if (MFL_PARA_A.TEMP_VALUE < (500)) { Beep_Set (5, 5, 3); lcd_display_string(0, 0, "快速快灰:请放样... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:放样后请按确认键 "); MFL_PARA_A.SLAVE_STATUS = KF_WARMUP1_WAIT1; KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } } break; case KF_WARMUP1_WAIT1: { if (MFL_PARA_A.TEMP_VALUE >= (500)) { Beep_Set (5, 5, 3); CtrlStove(1, 500, KU40); //升温到500 MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.TIME_DELAY_NUM = 1800; MFL_PARA_A.SLAVE_STATUS = KF_WARMUP1_WAIT2; KEY_VALUE = KEY_VALUE_NONE; } if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; CtrlStove(1, KF_TEMP_815, KU40); //升温到815 lcd_display_string(0, 0, "快速快灰:升温中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请打开烟囱并留门缝"); MFL_PARA_A.SLAVE_STATUS = KF_WAIT0; MFL_PARA_A.TEMP_DIS_START = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.TEMP_DIS_END = MFL_PARA_A.PID_PARA[8][1]; MFL_PARA_A.TIME_KF_SET = MFL_PARA_A.PID_PARA[8][0]; MFL_PARA_A.TIME_KF_SET *= 60; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } } break; case KF_WARMUP1_WAIT2: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (MFL_PARA_A.TIME_DELAY_NUM == 0) { MFL_PARA_A.TIME_DELAY_NUM = 0xffffffff; CtrlStove(0, 500, KU40); //关闭加热 } if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; CtrlStove(1, KF_TEMP_815, KU40); //升温到815 lcd_display_string(0, 0, "快速快灰:升温中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请打开烟囱并留门缝"); MFL_PARA_A.SLAVE_STATUS = KF_WAIT0; MFL_PARA_A.TEMP_DIS_START = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.TEMP_DIS_END = MFL_PARA_A.PID_PARA[8][1]; MFL_PARA_A.TIME_KF_SET = MFL_PARA_A.PID_PARA[8][0]; MFL_PARA_A.TIME_KF_SET *= 60; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } } break; case KF_WAIT0: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (MFL_PARA_A.TEMP_VALUE < MFL_PARA_A.TEMP_DIS_END) { if (MFL_PARA_A.TEMP_VALUE > MFL_PARA_A.TEMP_DIS_START) { sum = MFL_PARA_A.TIME; sum *= MFL_PARA_A.PID_PARA[8][2]; sum /= 60; sum += MFL_PARA_A.TEMP_DIS_START; if (MFL_PARA_A.TEMP_VALUE > (u16)(sum)) Ai_CTRL.PID_SET_ALL = 1; //强行关闭 else Ai_CTRL.PID_SET_ALL = 0xffff; } else { Ai_CTRL.PID_SET_ALL = 0xffff; } } else if (MFL_PARA_A.TEMP_VALUE < 814) { Ai_CTRL.PID_SET_ALL = 0; //正常控温 } if (MFL_PARA_A.TEMP_VALUE > 813) { MFL_PARA_A.SLAVE_STATUS = KF_HENGWEN1; Beep_Set (5, 5, 1); lcd_display_string(0, 0, "快速快灰:恒温中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请打开烟囱并留门缝"); MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; Ai_CTRL.PID_SET_ALL = 0; //正常控温 } } break; case KF_HENGWEN1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if(MFL_PARA_A.TIME >= MFL_PARA_A.TIME_KF_SET) { Beep_Set (5, 5, 6); lcd_display_string(0, 0, "快速快灰:试验完成 "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:试验结束,请取样 "); //lcd_display_string(3,0,"提示:按确认键检查灼烧 "); CtrlStove(0, 0, KU40); //降温 MFL_PARA_A.SLAVE_STATUS = KF_REPET_WAIT; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == FUNCTION_HUIFA) //挥发 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_huifa (); //显示挥发菜单 MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.temp_drop_enable = 1; MFL_PARA_A.temp_drop_run_cycle = 0; MFL_PARA_A.SLAVE_STATUS = HF_INIT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; } /*if (KEY_VALUE==KEY_VALUE_ESC) { Beep_Set (10,10,1); KEY_VALUE=KEY_VALUE_NONE; CtrlStove(0,0,KU40); ////MoveStove(posAllClose); MAIN_STATUS=MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG=FLAG_VALID; }*/ switch(MFL_PARA_A.SLAVE_STATUS) { case HF_INIT: { //MoveStove(posAllClose); //关闭炉门 CtrlStove(1, HUIFA_TEMP_920, KU40); //升温到920 Ai_CTRL.SumErrLimit = 0; //20140825 HQ lcd_display_string(0, 0, "挥发状态:升温 "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请关闭烟囱 "); MFL_PARA_A.SLAVE_STATUS = HF_WARMUP1_WAIT_BACK; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; Ai_CTRL.PID_SET_ALL = 0xffff; } break; case HF_WARMUP1_WAIT_BACK: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if ((MFL_PARA_A.TEMP_VALUE >= HUIFA_TEMP_918)) { Ai_CTRL.PID_SET_ALL = 0; KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = HF_WARMUP1_WAIT; MFL_PARA_A.TIME_NUM = 0; //时间计数器清零 MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; } } break; case HF_WARMUP1_WAIT: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if ((MFL_PARA_A.TEMP_VALUE >= HUIFA_TEMP_DROP)) { Ai_CTRL.PID_SET_ALL = 0; lcd_display_string(0, 0, "挥发状态:恒温 "); Beep_Set (5, 5, 10); KEY_VALUE = KEY_VALUE_NONE; lcd_display_string(3, 0, "提示:放样后按确认键 "); lcd_display_string(2, 0, "进程时间:00-00-00 "); MFL_PARA_A.SLAVE_STATUS = HF_WAIT0; MFL_PARA_A.TIME_NUM = 0; //时间计数器清零 MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; } } break; case HF_WAIT0: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); } if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_string(0, 0, "挥发状态:测试中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请关闭烟囱 "); MFL_PARA_A.SLAVE_STATUS = HF_HUIWEN2_WAIT; MFL_PARA_A.TIME_NUM = 0; //时间计数器清零 MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.Temp_Test_Min = 930; CtrlStove(1, 900, KU40); Ai_CTRL.SumErrLimit = 0; //20130403 HQ Ai_CTRL.PID_SET_FLAG = 1; Ai_CTRL.PID_TEST_STATUS = 0; temp_dis_lcd(0, 8, Ai_CTRL.PID_TEST_STATUS); temp_dis_lcd(0, 10, Ai_CTRL.PID_SET_ALL); } } break; case HF_HUIWEN2_WAIT: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; //MFL_PARA_A.Temp_Test[MFL_PARA_A.TIME]=MFL_PARA_A.TEMP_VALUE; if (MFL_PARA_A.Temp_Test_Min > MFL_PARA_A.TEMP_VALUE) { MFL_PARA_A.Temp_Test_Min = MFL_PARA_A.TEMP_VALUE; MFL_PARA_A.Temp_Test_Time_Start = MFL_PARA_A.TIME; } //温度显示处理 if (MFL_PARA_A.Temp_Test_Min < MFL_PARA_A.TEMP_VALUE) //20130403 HQ { if (MFL_PARA_A.TEMP_VALUE < (900 - 10 * 2)) { HF_TEMP = (MFL_PARA_A.TEMP_VALUE + (MFL_PARA_A.TEMP_VALUE - MFL_PARA_A.Temp_Test_Min) * 10 / ((900 - 10 * 2) - MFL_PARA_A.Temp_Test_Min)); MFL_PARA_A.TEMP_VALUE_DISPLAY = (MFL_PARA_A.TEMP_VALUE + (MFL_PARA_A.TEMP_VALUE - MFL_PARA_A.Temp_Test_Min) * 10 / ((900 - 10 * 2) - MFL_PARA_A.Temp_Test_Min)); temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_VALUE_DISPLAY); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } else { HF_TEMP = (MFL_PARA_A.TEMP_VALUE + 900) / 2; MFL_PARA_A.TEMP_VALUE_DISPLAY = ((MFL_PARA_A.TEMP_VALUE + 900) / 2); temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_VALUE_DISPLAY); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } } else { MFL_PARA_A.TEMP_VALUE_DISPLAY = MFL_PARA_A.TEMP_DIS; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (Ai_CTRL.PID_SET_FLAG) { //开始等待延时结束 if (MFL_PARA_A.TIME < HUIFA_TIME_DELAY) { Ai_CTRL.PID_SET_ALL = 1; //强行关闭 Ai_CTRL.PWM_TIME_NUM = 0; Ai_CTRL.PID_TEST_STATUS = 1; temp_dis_lcd(0, 7, Ai_CTRL.PID_TEST_STATUS); temp_dis_lcd(0, 9, Ai_CTRL.PID_SET_ALL); } //掉温阶段按照PWM1功率加热 else if ((MFL_PARA_A.Temp_Test_Min >= MFL_PARA_A.TEMP_VALUE)) { Ai_CTRL.PID_SET_ALL = HUIFA_HUIWEN_PWM1 + 2; //PWM Control 2-102 Ai_CTRL.PID_TEST_STATUS = 2; temp_dis_lcd(0, 7, Ai_CTRL.PID_TEST_STATUS); temp_dis_lcd(0, 9, Ai_CTRL.PID_SET_ALL); } //((MFL_PARA_A.TEMP_VALUE>=HUIFA_TEMP_STOP)&&(MFL_PARA_A.Temp_Test_MinHUIFA_TIME_DELAY)&&(MFL_PARA_A.TEMP_VALUE>HUIFA_TEMP_STOP)&&(MFL_PARA_A.TIME>HUIFA_TIME_ARM)) { Ai_CTRL.PID_SET_FLAG = 0; Ai_CTRL.PID_SET_ALL = 0; //恢复控温模式 Ai_CTRL.TIME_NUM = 0; CtrlStove(1, HUIFA_HUIWEN_TEMP_PID, KU40); Ai_CTRL.SumErrLimit = 0; Ai_CTRL.PID_TEST_STATUS = 5; temp_dis_lcd(0, 7, Ai_CTRL.PID_TEST_STATUS); temp_dis_lcd(0, 9, Ai_CTRL.PID_SET_ALL); } } //逻辑控制处理 if (MFL_PARA_A.TIME == 180) //回温3分钟 { Beep_Set (1, 1, 1); } else if (MFL_PARA_A.TIME == 390) //提前半分钟提醒 { Beep_Set (10, 10, 15); } else if (MFL_PARA_A.TIME >= 420) //5分钟提醒 { Beep_Set (10, 10, 150); lcd_display_string(0, 0, "挥发状态:试验完成 "); lcd_display_string(3, 0, "提示:按确认键继续挥发分"); Ai_CTRL.PID_SET_ALL = 0; //恢复控温模式 CtrlStove(1, 900, KU40); MFL_PARA_A.SLAVE_STATUS = HF_WAIT3; } } } break; case HF_WAIT3: // { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (20, 10, 1); KEY_VALUE = KEY_VALUE_NONE; //MFL_PARA_A.SLAVE_STATUS=HF_END; MAIN_STATUS = FUNCTION_HUIFA; //继续挥发分 //STATUS_NEW_FLAG=FLAG_VALID; STATUS_NEW_FLAG = FLAG_VALID; // x1=0; // y1=0; // // for (n=0;n<420;n++) // { // printf("%3d\r\n",MFL_PARA_A.Temp_Test[n]); // // if ((n>=180)&&(x1==0)&&(MFL_PARA_A.Temp_Test[n]<890)||(MFL_PARA_A.Temp_Test[n]>910)) // x1=MFL_PARA_A.Temp_Test[n]; // } // if (x1!=0) //回温失败 // { // // //保存实验失败的偏差 如果误差较大,修正偏差值 并保存 // y1 = readHFDownTemp(); // //if((890-IED.dTemp)<10) // if((890-x1)<10) // { // y1-=(900-x1); // } // if((x1-910)>10) // { // y1+=(x1-900); // } // saveHFDownTemp (y1); // } // // printf ("START:%3d\r\n",MFL_PARA_A.Temp_Test_Time_Start); // printf ("END:%3d\r\n",MFL_PARA_A.Temp_Test_Time_End); // //printf ("POINT:%4d\r\n",Ai_CTRL.HFDownTemp); // printf ("POINT:%4d\r\n",y1); } } break; case HF_END: { CtrlStove(0, 0, KU40); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == FUNCTION_ZIXUANA) //自选A { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_zixuan_a (); //显示自选A菜单 Ai_CTRL.PID_SET_ALL = 0; //正常控温 MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.TEMP_DIS_MH = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.SLAVE_STATUS = ZX_INIT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.PROGRAM_NUM = 0; } if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (10, 10, 1); KEY_VALUE = KEY_VALUE_NONE; CtrlStove(0, 0, KU40); Ai_CTRL.PID_SET_ALL = 0; //正常控温 ////MoveStove(posAllClose); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } switch(MFL_PARA_A.SLAVE_STATUS) { case ZX_INIT: { MFL_PARA_A.SLAVE_STATUS = ZX_WARMUP1; //有效数据,开始升温 MFL_PARA_A.SLAVE_STATUS_NEW = 1; CtrlStove(1, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0], KU40); //升温 Ai_CTRL.PID_SET_ALL = 0; //正常控温 //①=A2D9 lcd_post (0, 6); lcd_display (0xa2d9 + MFL_PARA_A.PROGRAM_NUM); if (MFL_PARA_A.TEMP_DIS < MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]) { lcd_display_string(3, 0, "提示:正在升温... "); MFL_PARA_A.TEMP_DIS_START = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.TEMP_DIS_END = MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0] - MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][5]; MFL_PARA_A.TIME_KF_SET = MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][1]; MFL_PARA_A.TIME_KF_SET *= 60; MFL_PARA_A.TIME_KF_SET_BEEP = MFL_PARA_A.TIME_KF_SET - 30; MFL_PARA_A.TEMP_DIRECTION = 0; } else { lcd_display_string(3, 0, "提示:正在降温... "); MFL_PARA_A.TEMP_DIS_START = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.TEMP_DIS_END = MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0] + MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][5]; MFL_PARA_A.TIME_KF_SET = MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][1]; MFL_PARA_A.TIME_KF_SET *= 60; MFL_PARA_A.TIME_KF_SET_BEEP = MFL_PARA_A.TIME_KF_SET - 30; MFL_PARA_A.TEMP_DIRECTION = 1; } temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); MFL_PARA_A.PROGRAM_TIME_SECOND = MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][1] * 60; //显示设定时间,转换为秒 time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); //显示设定时间 MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; if (MFL_PARA_A.TEMP_DIRECTION == 0) { if (MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][2] == 0) MFL_PARA_A.SLAVE_STATUS = ZX_WARMUP; else MFL_PARA_A.SLAVE_STATUS = ZX_WARMUP1; } else { MFL_PARA_A.SLAVE_STATUS = ZX_WARMDOWN1; } } break; case ZX_WARMUP1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TEMP_DIS < MFL_PARA_A.TEMP_DIS_END) { if (MFL_PARA_A.TEMP_DIS > MFL_PARA_A.TEMP_DIS_START) { sum = MFL_PARA_A.TIME; sum *= MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][2]; sum /= 60; sum += MFL_PARA_A.TEMP_DIS_START; if (MFL_PARA_A.TEMP_DIS > (u16)(sum)) Ai_CTRL.PID_SET_ALL = 1; //强行关闭 else Ai_CTRL.PID_SET_ALL = 0xffff; //强行打开 } else { Ai_CTRL.PID_SET_ALL = 0xffff; } } else { Ai_CTRL.PID_SET_ALL = 0; //正常控温 MFL_PARA_A.SLAVE_STATUS = ZX_WARMUP; } } break; case ZX_WARMUP: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TEMP_DIS >= MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]) { MFL_PARA_A.SLAVE_STATUS = ZX_HENGWEN; //恒温 MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(3, 0, "提示:正在恒温... "); time_dis_lcd (2, 3, 0); //显示时间清零 Beep_Set (1, 1, 1); MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; } } break; case ZX_WARMDOWN1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TEMP_DIS > MFL_PARA_A.TEMP_DIS_END) { Ai_CTRL.PID_SET_ALL = 1; //强行关闭 } else { Ai_CTRL.PID_SET_ALL = 0; //正常控温 MFL_PARA_A.SLAVE_STATUS = ZX_WARMDOWN; } } break; case ZX_WARMDOWN: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TEMP_DIS <= MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]) { MFL_PARA_A.SLAVE_STATUS = ZX_HENGWEN; //恒温 MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(3, 0, "提示:正在恒温... "); time_dis_lcd (2, 3, 0); //显示时间清零 Beep_Set (1, 1, 1); MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; } } break; case ZX_HENGWEN: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); MFL_PARA_A.TEMP_DIS_MH = temp_calc_value_MH(MFL_PARA_A.TEMP_DIS, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0], MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][4]); temp_dis_lcd (1, 3, MFL_PARA_A.TEMP_DIS_MH); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TIME >= MFL_PARA_A.PROGRAM_TIME_SECOND) { if (MFL_PARA_A.PROGRAM_NUM < 9) //20200617自选分段恒温结束蜂鸣 { MFL_PARA_A.PROGRAM_NUM++; if ((MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0] != 0) && (MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][1] != 0)) { MFL_PARA_A.SLAVE_STATUS = ZX_INIT; //进入下一段 MFL_PARA_A.SLAVE_STATUS_NEW = 1; } Beep_Set (10, 10, 1); //20200617自选分段恒温结束蜂鸣 } else { MFL_PARA_A.SLAVE_STATUS = ZX_FINISH; //完成 MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(0, 0, "自选A组:全部结束 "); lcd_display_string(3, 0, "提示:按取消键退出 "); CtrlStove(0, 0, KU40); Beep_Set (10, 10, 2); } } } break; case ZX_FINISH: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); //time_dis_lcd (2,3,MFL_PARA_A.TIME); //显示当前时间 //time_dis_lcd (2,8,MFL_PARA_A.PROGRAM_TIME_SECOND); } if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //CtrlStove(0,0,KU40); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == FUNCTION_ZIXUANB) //自选B { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_zixuan_b (); //显示自选A菜单 Ai_CTRL.PID_SET_ALL = 0; //正常控温 MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.TEMP_DIS_MH = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.SLAVE_STATUS = ZX_INIT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.PROGRAM_NUM = 0; } if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (10, 10, 1); KEY_VALUE = KEY_VALUE_NONE; CtrlStove(0, 0, KU40); Ai_CTRL.PID_SET_ALL = 0; //正常控温 ////MoveStove(posAllClose); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } switch(MFL_PARA_A.SLAVE_STATUS) { case ZX_INIT: { MFL_PARA_A.SLAVE_STATUS = ZX_WARMUP1; //有效数据,开始升温 MFL_PARA_A.SLAVE_STATUS_NEW = 1; CtrlStove(1, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0], KU40); //升温 Ai_CTRL.PID_SET_ALL = 0; //正常控温 //①=A2D9 lcd_post (0, 6); lcd_display (0xa2d9 + MFL_PARA_A.PROGRAM_NUM); if (MFL_PARA_A.TEMP_DIS < MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]) { lcd_display_string(3, 0, "提示:正在升温... "); MFL_PARA_A.TEMP_DIS_START = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.TEMP_DIS_END = MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0] - MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][5]; MFL_PARA_A.TIME_KF_SET = MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][1]; MFL_PARA_A.TIME_KF_SET *= 60; MFL_PARA_A.TIME_KF_SET_BEEP = MFL_PARA_A.TIME_KF_SET - 30; MFL_PARA_A.TEMP_DIRECTION = 0; } else { lcd_display_string(3, 0, "提示:正在降温... "); MFL_PARA_A.TEMP_DIS_START = MFL_PARA_A.TEMP_DIS; MFL_PARA_A.TEMP_DIS_END = MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0] + MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][5]; MFL_PARA_A.TIME_KF_SET = MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][1]; MFL_PARA_A.TIME_KF_SET *= 60; MFL_PARA_A.TIME_KF_SET_BEEP = MFL_PARA_A.TIME_KF_SET - 30; MFL_PARA_A.TEMP_DIRECTION = 1; } temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); MFL_PARA_A.PROGRAM_TIME_SECOND = MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][1] * 60; //显示设定时间,转换为秒 time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); //显示设定时间 MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME = 0; if (MFL_PARA_A.TEMP_DIRECTION == 0) { if (MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][2] == 0) MFL_PARA_A.SLAVE_STATUS = ZX_WARMUP; else MFL_PARA_A.SLAVE_STATUS = ZX_WARMUP1; } else { MFL_PARA_A.SLAVE_STATUS = ZX_WARMDOWN1; } } break; case ZX_WARMUP1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TEMP_DIS < MFL_PARA_A.TEMP_DIS_END) { if (MFL_PARA_A.TEMP_DIS > MFL_PARA_A.TEMP_DIS_START) { sum = MFL_PARA_A.TIME; sum *= MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][2]; sum /= 60; sum += MFL_PARA_A.TEMP_DIS_START; if (MFL_PARA_A.TEMP_DIS > (u16)(sum)) Ai_CTRL.PID_SET_ALL = 1; //强行关闭 else Ai_CTRL.PID_SET_ALL = 0xffff; //强行打开 } else { Ai_CTRL.PID_SET_ALL = 0xffff; } } else { Ai_CTRL.PID_SET_ALL = 0; //正常控温 MFL_PARA_A.SLAVE_STATUS = ZX_WARMUP; } } break; case ZX_WARMUP: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TEMP_DIS >= MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]) { MFL_PARA_A.SLAVE_STATUS = ZX_HENGWEN; //恒温 MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(3, 0, "提示:正在恒温... "); time_dis_lcd (2, 3, 0); //显示时间清零 Beep_Set (1, 1, 1); MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; } } break; case ZX_WARMDOWN1: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TEMP_DIS > MFL_PARA_A.TEMP_DIS_END) { Ai_CTRL.PID_SET_ALL = 1; //强行关闭 } else { Ai_CTRL.PID_SET_ALL = 0; //正常控温 MFL_PARA_A.SLAVE_STATUS = ZX_WARMDOWN; } } break; case ZX_WARMDOWN: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TEMP_DIS <= MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]) { MFL_PARA_A.SLAVE_STATUS = ZX_HENGWEN; //恒温 MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(3, 0, "提示:正在恒温... "); time_dis_lcd (2, 3, 0); //显示时间清零 Beep_Set (1, 1, 1); MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; } } break; case ZX_HENGWEN: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); MFL_PARA_A.TEMP_DIS_MH = temp_calc_value_MH(MFL_PARA_A.TEMP_DIS, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0], MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][4]); temp_dis_lcd (1, 3, MFL_PARA_A.TEMP_DIS_MH); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display ('/'); lcd_display (0x20); lcd_display (0x20); temp_dis_lcd (1, 9, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]); //显示设定温度 lcd_display (0x20); lcd_display (0x20); time_dis_lcd (2, 3, MFL_PARA_A.TIME); //显示当前时间 lcd_display ('/'); time_dis_lcd (2, 8, MFL_PARA_A.PROGRAM_TIME_SECOND); } if (MFL_PARA_A.TIME >= MFL_PARA_A.PROGRAM_TIME_SECOND) { if (MFL_PARA_A.PROGRAM_NUM < 9) //20200617自选分段恒温结束蜂鸣 { MFL_PARA_A.PROGRAM_NUM++; if ((MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0] != 0) && (MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][1] != 0)) { MFL_PARA_A.SLAVE_STATUS = ZX_INIT; //进入下一段 MFL_PARA_A.SLAVE_STATUS_NEW = 1; } Beep_Set (10, 10, 1); //20200617自选分段恒温结束蜂鸣 } else { MFL_PARA_A.SLAVE_STATUS = ZX_FINISH; //完成 MFL_PARA_A.SLAVE_STATUS_NEW = 1; lcd_display_string(0, 0, "自选B组:全部结束 "); lcd_display_string(3, 0, "提示:按取消键退出 "); CtrlStove(0, 0, KU40); Beep_Set (10, 10, 2); } } } break; case ZX_FINISH: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; if (MFL_PARA_A.ZIXUAN_DEBUG_TEMP_EN) temp_dis_lcd (0, 8, MFL_PARA_A.TEMP_DIS); temp_dis_lcd (1, 3, temp_value_filter_MH()); //显示当前温度 lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); lcd_display (0x20); //time_dis_lcd (2,3,MFL_PARA_A.TIME); //显示当前时间 //time_dis_lcd (2,8,MFL_PARA_A.PROGRAM_TIME_SECOND); } if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //CtrlStove(0,0,KU40); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == FUNCTION_YUYUEA) //预约A { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_reservation (); //显示 MFL_PARA_A.temp_drop_enable = 1; MFL_PARA_A.temp_drop_run_cycle = 0; pcf8563_read_time(2, 7, MENU_TIME_DATA); MENU_TIME_DATA_SET[0] = (u8)(MFL_PARA_A.YUYUE_TIME_SET >> 12) & 0x0f; MENU_TIME_DATA_SET[1] = (u8)(MFL_PARA_A.YUYUE_TIME_SET >> 8) & 0x0f; MENU_TIME_DATA_SET[2] = (u8)(MFL_PARA_A.YUYUE_TIME_SET >> 4) & 0x0f; MENU_TIME_DATA_SET[3] = (u8)(MFL_PARA_A.YUYUE_TIME_SET >> 0) & 0x0f; MENU_TIME_DATA_SET[4] = MFL_PARA_A.YUYUE_TEMP_SET / 100; MENU_TIME_DATA_SET[5] = (MFL_PARA_A.YUYUE_TEMP_SET - (u16)(MENU_TIME_DATA_SET[4]) * 100) / 10; MENU_TIME_DATA_SET[6] = (MFL_PARA_A.YUYUE_TEMP_SET - (u16)(MENU_TIME_DATA_SET[4]) * 100 - (u16)(MENU_TIME_DATA_SET[5]) * 10); MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.PROGRAM_NUM = 0; time_temp_dis_lcd (1, 5, MENU_TIME_DATA, MFL_PARA_A.TEMP_DIS); time_temp_set_lcd (2, 5, MENU_TIME_DATA_SET); lcd_display_black_one (2, MENU_TIME_DATA_SET_POST[MFL_PARA_A.PROGRAM_NUM] + 10, 1); } switch(MFL_PARA_A.SLAVE_STATUS) { case ZX_SET_SELECT: { if ((KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MENU_TIME_DATA_SET[MFL_PARA_A.PROGRAM_NUM]) MENU_TIME_DATA_SET[MFL_PARA_A.PROGRAM_NUM]--; else MENU_TIME_DATA_SET[MFL_PARA_A.PROGRAM_NUM] = 9; time_temp_set_lcd (2, 5, MENU_TIME_DATA_SET); } else if ((KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MENU_TIME_DATA_SET[MFL_PARA_A.PROGRAM_NUM] < 9) MENU_TIME_DATA_SET[MFL_PARA_A.PROGRAM_NUM]++; else MENU_TIME_DATA_SET[MFL_PARA_A.PROGRAM_NUM] = 0; time_temp_set_lcd (2, 5, MENU_TIME_DATA_SET); } else if ((KEY_VALUE == KEY_VALUE_LEFT)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_black_one (2, MENU_TIME_DATA_SET_POST[MFL_PARA_A.PROGRAM_NUM] + 10, 0); if (MFL_PARA_A.PROGRAM_NUM) MFL_PARA_A.PROGRAM_NUM--; else MFL_PARA_A.PROGRAM_NUM = 6; lcd_display_black_one (2, MENU_TIME_DATA_SET_POST[MFL_PARA_A.PROGRAM_NUM] + 10, 1); } else if ((KEY_VALUE == KEY_VALUE_RIGHT)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_black_one (2, MENU_TIME_DATA_SET_POST[MFL_PARA_A.PROGRAM_NUM] + 10, 0); if (MFL_PARA_A.PROGRAM_NUM < 6) MFL_PARA_A.PROGRAM_NUM++; else MFL_PARA_A.PROGRAM_NUM = 0; lcd_display_black_one (2, MENU_TIME_DATA_SET_POST[MFL_PARA_A.PROGRAM_NUM] + 10, 1); } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_black_one (2, MENU_TIME_DATA_SET_POST[MFL_PARA_A.PROGRAM_NUM] + 10, 0); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入 STATUS_NEW_FLAG = FLAG_VALID; } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (((MENU_TIME_DATA_SET[0] * 10 + MENU_TIME_DATA_SET[1]) < 24) && ((MENU_TIME_DATA_SET[2] * 10 + MENU_TIME_DATA_SET[3]) < 60)) { MFL_PARA_A.YUYUE_TIME_SET = (u16)MENU_TIME_DATA_SET[0]; MFL_PARA_A.YUYUE_TIME_SET <<= 4; MFL_PARA_A.YUYUE_TIME_SET += (u16)MENU_TIME_DATA_SET[1]; MFL_PARA_A.YUYUE_TIME_SET <<= 4; MFL_PARA_A.YUYUE_TIME_SET += (u16)MENU_TIME_DATA_SET[2]; MFL_PARA_A.YUYUE_TIME_SET <<= 4; MFL_PARA_A.YUYUE_TIME_SET += (u16)MENU_TIME_DATA_SET[3]; MFL_PARA_A.YUYUE_TEMP_SET = (u16)MENU_TIME_DATA_SET[4]; MFL_PARA_A.YUYUE_TEMP_SET *= 10; MFL_PARA_A.YUYUE_TEMP_SET += (u16)MENU_TIME_DATA_SET[5]; MFL_PARA_A.YUYUE_TEMP_SET *= 10; MFL_PARA_A.YUYUE_TEMP_SET += (u16)MENU_TIME_DATA_SET[6]; //预约参数保存 x = 0; para_data_temp[x++] = (MFL_PARA_A.YUYUE_TIME_SET >> 8); para_data_temp[x++] = (MFL_PARA_A.YUYUE_TIME_SET & 0xff); para_data_temp[x++] = (MFL_PARA_A.YUYUE_TEMP_SET >> 8); para_data_temp[x++] = (MFL_PARA_A.YUYUE_TEMP_SET & 0xff); para_data_temp[31] = DATA_SET_FLAG; n = YUYUE_PARA_BASE; n <<= 5; eeprom_24c64_write (n, 32, para_data_temp); lcd_display_black_one (2, MENU_TIME_DATA_SET_POST[MFL_PARA_A.PROGRAM_NUM] + 10, 0); lcd_display_string(0, 0, "预约状态:等待时间 "); lcd_display_string(3, 0, "提示: "); MFL_PARA_A.SLAVE_STATUS = ZX_SET_WAIT; } } } break; case ZX_SET_WAIT: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; pcf8563_read_time(2, 7, MENU_TIME_DATA); time_temp_dis_lcd (1, 5, MENU_TIME_DATA, MFL_PARA_A.TEMP_DIS); temp = (u16)(MENU_TIME_DATA[2] & 0x3f); temp <<= 8; temp += (u16)(MENU_TIME_DATA[1] & 0x7f); if (MFL_PARA_A.YUYUE_TIME_SET == temp) { Beep_Set (5, 5, 3); if (MFL_PARA_A.TEMP_DIS >= MFL_PARA_A.YUYUE_TEMP_SET) { lcd_display_string(0, 0, "预约状态:预约结束 "); lcd_display_string(3, 0, "提示:预约结束请按确认键"); MFL_PARA_A.SLAVE_STATUS = ZX_SET_END; } else { lcd_display_string(0, 0, "预约状态:升温中... "); MFL_PARA_A.SLAVE_STATUS = ZX_SET_ENT; Ai_CTRL.PID_SET_ALL = 0xffff; //强制加热 } } } } break; case ZX_SET_ENT: { if (MFL_PARA_A.TEMP_DIS >= MFL_PARA_A.YUYUE_TEMP_SET) { lcd_display_string(0, 0, "预约状态:预约结束 "); lcd_display_string(3, 0, "提示:预约结束请按确认键"); Beep_Set (5, 5, 3); MFL_PARA_A.SLAVE_STATUS = ZX_SET_END; } if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; pcf8563_read_time(2, 7, MENU_TIME_DATA); time_temp_dis_lcd (1, 5, MENU_TIME_DATA, MFL_PARA_A.TEMP_DIS); } } break; case ZX_SET_END: { if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入 STATUS_NEW_FLAG = FLAG_VALID; } if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; pcf8563_read_time(2, 7, MENU_TIME_DATA); time_temp_dis_lcd (1, 5, MENU_TIME_DATA, MFL_PARA_A.TEMP_DIS); } if (MFL_PARA_A.TEMP_DIS >= MFL_PARA_A.YUYUE_TEMP_SET) Ai_CTRL.PID_SET_ALL = 1; //强制关闭 else Ai_CTRL.PID_SET_ALL = 0xffff; //强制加热 } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == FUNCTION_LUOJIA) //罗加 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_calibration (); //显示罗加菜单 MFL_PARA_A.TIME_NUM = 0; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.temp_drop_enable = 1; MFL_PARA_A.temp_drop_run_cycle = 0; MFL_PARA_A.SLAVE_STATUS = LJ_INIT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; } if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (10, 10, 1); KEY_VALUE = KEY_VALUE_NONE; CtrlStove(0, 0, KU40); MFL_PARA_A.temp_drop_enable = 0; MFL_PARA_A.temp_drop_run_cycle = 0; MAIN_STATUS = MAIN_STATUS_FUNCTION; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } switch(MFL_PARA_A.SLAVE_STATUS) { case LJ_INIT: { CtrlStove(1, LUOJIA_850, KU40); //升温到850 Ai_CTRL.SumErrLimit = 0; //20140825 HQ lcd_display_string(0, 0, "罗加状态:升温 "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请关闭烟囱 "); MFL_PARA_A.SLAVE_STATUS = LJ_WARMUP1_WAIT; MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; } break; case LJ_WARMUP1_WAIT: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (MFL_PARA_A.TEMP_VALUE >= LUOJIA_850) { lcd_display_string(0, 0, "罗加状态:恒温 "); Beep_Set (5, 5, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_string(3, 0, "提示:放样后按确认键 "); lcd_display_string(2, 0, "进程时间:00-00-00 "); MFL_PARA_A.SLAVE_STATUS = LJ_WAIT0; MFL_PARA_A.TIME_NUM = 0; //时间计数器清零 MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; } } break; case LJ_WAIT0: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); } if(KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_string(0, 0, "罗加状态:测试中... "); lcd_display_string(2, 0, "进程时间:00-00-00 "); lcd_display_string(3, 0, "提示:请关闭烟囱 "); MFL_PARA_A.SLAVE_STATUS = LJ_HUIWEN_WAIT; MFL_PARA_A.TIME_NUM = 0; //时间计数器清零 MFL_PARA_A.TIME_SEC_FLAG = 0; MFL_PARA_A.TIME = 0; MFL_PARA_A.Temp_Test_Min = 930; LJ_HUIWEN_STEP = 0; CtrlStove(1, LUOJIA_850, KU40); Ai_CTRL.SumErrLimit = 0; //20130403 HQ Ai_CTRL.PID_SET_FLAG = 1; Ai_CTRL.PID_TEST_STATUS = 0; //temp_dis_lcd(0,8,Ai_CTRL.PID_TEST_STATUS); //temp_dis_lcd(0,10,Ai_CTRL.PID_SET_ALL); } } break; case LJ_HUIWEN_WAIT: { if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; //MFL_PARA_A.Temp_Test[MFL_PARA_A.TIME]=MFL_PARA_A.TEMP_VALUE; if (MFL_PARA_A.Temp_Test_Min > MFL_PARA_A.TEMP_VALUE) { MFL_PARA_A.Temp_Test_Min = MFL_PARA_A.TEMP_VALUE; MFL_PARA_A.Temp_Test_Time_Start = MFL_PARA_A.TIME; } //温度显示处理 if (MFL_PARA_A.Temp_Test_Min < MFL_PARA_A.TEMP_VALUE) //20130403 HQ { if (MFL_PARA_A.TEMP_VALUE < (LUOJIA_850 - 10 * 2)) { HF_TEMP = (MFL_PARA_A.TEMP_VALUE + (MFL_PARA_A.TEMP_VALUE - MFL_PARA_A.Temp_Test_Min) * 10 / ((LUOJIA_850 - 10 * 2) - MFL_PARA_A.Temp_Test_Min)); MFL_PARA_A.TEMP_VALUE_DISPLAY = (MFL_PARA_A.TEMP_VALUE + (MFL_PARA_A.TEMP_VALUE - MFL_PARA_A.Temp_Test_Min) * 10 / ((LUOJIA_850 - 10 * 2) - MFL_PARA_A.Temp_Test_Min)); temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_VALUE_DISPLAY); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } else { HF_TEMP = (MFL_PARA_A.TEMP_VALUE + LUOJIA_850) / 2; MFL_PARA_A.TEMP_VALUE_DISPLAY = ((MFL_PARA_A.TEMP_VALUE + LUOJIA_850) / 2); temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_VALUE_DISPLAY); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } } else { MFL_PARA_A.TEMP_VALUE_DISPLAY = MFL_PARA_A.TEMP_DIS; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); time_dis_lcd (2, 5, MFL_PARA_A.TIME); lcd_display_time_space (); //显示当前时间 } if (Ai_CTRL.PID_SET_FLAG) { //开始等待延时结束 if (MFL_PARA_A.TIME < LUOJIA_TIME_DELAY) { Ai_CTRL.PID_SET_ALL = 1; //强行关闭 Ai_CTRL.PWM_TIME_NUM = 0; Ai_CTRL.PID_TEST_STATUS = 1; //temp_dis_lcd(0,7,Ai_CTRL.PID_TEST_STATUS); //temp_dis_lcd(0,9,Ai_CTRL.PID_SET_ALL); } //掉温阶段按照PWM1功率加热 else if ((MFL_PARA_A.Temp_Test_Min >= MFL_PARA_A.TEMP_VALUE)) { Ai_CTRL.PID_SET_ALL = HUIFA_HUIWEN_PWM1 + 2; //PWM Control 2-102 Ai_CTRL.PID_TEST_STATUS = 2; //temp_dis_lcd(0,7,Ai_CTRL.PID_TEST_STATUS); //temp_dis_lcd(0,9,Ai_CTRL.PID_SET_ALL); } //((MFL_PARA_A.TEMP_VALUE>=HUIFA_TEMP_STOP)&&(MFL_PARA_A.Temp_Test_MinHUIFA_TIME_DELAY)&&(MFL_PARA_A.TEMP_VALUE>HUIFA_TEMP_STOP)&&(MFL_PARA_A.TIME>HUIFA_TIME_ARM)) { Ai_CTRL.PID_SET_FLAG = 0; Ai_CTRL.PID_SET_ALL = 0; //恢复控温模式 Ai_CTRL.TIME_NUM = 0; CtrlStove(1, LUOJIA_850, KU40); Ai_CTRL.SumErrLimit = 0; Ai_CTRL.PID_TEST_STATUS = 5; //temp_dis_lcd(0,7,Ai_CTRL.PID_TEST_STATUS); //temp_dis_lcd(0,9,Ai_CTRL.PID_SET_ALL); } } //逻辑控制处理 if (MFL_PARA_A.TIME == 360) //回温3分钟 { Beep_Set (10, 10, 1); } else if (MFL_PARA_A.TIME == 870) //提前半分钟提醒 { Beep_Set (5, 5, 30); } else if (MFL_PARA_A.TIME >= 900) //5分钟提醒 { Beep_Set (10, 10, 1); lcd_display_string(0, 0, "罗加状态:试验完成 "); lcd_display_string(3, 0, "提示:按确认键继续罗加 "); Ai_CTRL.PID_SET_ALL = 0; //恢复控温模式 CtrlStove(1, LUOJIA_850, KU40); MFL_PARA_A.SLAVE_STATUS = LJ_WAIT3; } } } break; case LJ_WAIT3: // { if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (20, 10, 1); KEY_VALUE = KEY_VALUE_NONE; MAIN_STATUS = FUNCTION_LUOJIA; //继续罗加 STATUS_NEW_FLAG = FLAG_VALID; } if (MFL_PARA_A.TIME_SEC_FLAG) { MFL_PARA_A.TIME_SEC_FLAG = 0; temp_dis_lcd (1, 5, MFL_PARA_A.TEMP_DIS); lcd_display_temp_space (); } } break; case LJ_END: { // CtrlStove(0,0,KU40); MAIN_STATUS = FUNCTION_LUOJIA; //进入功能选择状态 STATUS_NEW_FLAG = FLAG_VALID; } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == PROGRAM_ZIXUANA) //自选A参数设置 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_program_a_user (); //显示自选参数设置菜单 MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.PROGRAM_NUM = 0; MFL_PARA_A.MENU_X = 0; temp_dis_lcd_4 (1, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 0][0]); temp_dis_lcd_4 (1, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 0][1]); temp_dis_lcd_4 (1, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 0][2]); temp_dis_lcd_4 (1, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 0][3]); temp_dis_lcd_4 (2, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 1][0]); temp_dis_lcd_4 (2, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 1][1]); temp_dis_lcd_4 (2, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 1][2]); temp_dis_lcd_4 (2, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 1][3]); temp_dis_lcd_4 (3, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 2][0]); temp_dis_lcd_4 (3, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 2][1]); temp_dis_lcd_4 (3, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 2][2]); temp_dis_lcd_4 (3, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM + 2][3]); lcd_display_black (1, 0, 6, 1); } switch(MFL_PARA_A.SLAVE_STATUS) { case ZX_SET_SELECT: { if ((MFL_PARA_A.PROGRAM_NUM < 9) && (KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM++; if (MFL_PARA_A.MENU_X < 2) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 0); MFL_PARA_A.MENU_X++; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 1); } lcd_display_string(1, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X]); temp_dis_lcd_4 (1, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd_4 (1, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); temp_dis_lcd_4 (1, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][2]); temp_dis_lcd_4 (1, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][3]); lcd_display_string(2, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1]); temp_dis_lcd_4 (2, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd_4 (2, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); temp_dis_lcd_4 (2, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][2]); temp_dis_lcd_4 (2, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][3]); lcd_display_string(3, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2]); temp_dis_lcd_4 (3, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd_4 (3, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); temp_dis_lcd_4 (3, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][2]); temp_dis_lcd_4 (3, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][3]); } else if ((MFL_PARA_A.PROGRAM_NUM > 0) && (KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM--; if (MFL_PARA_A.MENU_X > 0) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 0); MFL_PARA_A.MENU_X--; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 1); } lcd_display_string(1, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X]); temp_dis_lcd_4 (1, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd_4 (1, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); temp_dis_lcd_4 (1, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][2]); temp_dis_lcd_4 (1, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][3]); lcd_display_string(2, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1]); temp_dis_lcd_4 (2, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd_4 (2, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); temp_dis_lcd_4 (2, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][2]); temp_dis_lcd_4 (2, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][3]); lcd_display_string(3, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2]); temp_dis_lcd_4 (3, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd_4 (3, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); temp_dis_lcd_4 (3, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][2]); temp_dis_lcd_4 (3, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][3]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_ENT; MFL_PARA_A.MENU_Y = 0; //具体设置输入计数器清零 if (MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0] > 9999) { MFL_PARA_A.MENU_SET_INPUT_DATA[0] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[1] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[2] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[3] = '-'; } else { temp = MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]; MFL_PARA_A.MENU_SET_INPUT_DATA[0] = temp / 1000; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 1000; MFL_PARA_A.MENU_SET_INPUT_DATA[1] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[2] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[2] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[3] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[0] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[1] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[2] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[3] += 0x30; } if (MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][1] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[4] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[5] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[6] = '-'; } else { temp = MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][1]; MFL_PARA_A.MENU_SET_INPUT_DATA[4] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[4] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[5] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[5] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[6] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[4] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[5] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[6] += 0x30; } if (MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][2] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[7] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[8] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[9] = '-'; } else { temp = MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][2]; MFL_PARA_A.MENU_SET_INPUT_DATA[7] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[7] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[8] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[8] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[9] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[7] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[8] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[9] += 0x30; } if (MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][3] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[10] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[11] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[12] = '-'; } else { temp = MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][3]; MFL_PARA_A.MENU_SET_INPUT_DATA[10] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[10] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[11] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[11] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[12] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[10] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[11] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[12] += 0x30; } //取消反显,反显第一个字符 //lcd_display_black (MFL_PARA_A.MENU_X+1,0,6,0); lcd_post (MFL_PARA_A.MENU_X + 1, 4); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[9]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[10]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[11]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[12]); //反显第一个字符 lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 1); } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SAVE; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 0); menu_display_program_save (); } } break; case ZX_SET_ENT: { if (KEY_VALUE == KEY_VALUE_UP) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] < 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]++; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; lcd_post (MFL_PARA_A.MENU_X + 1, 4); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[9]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[10]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[11]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[12]); } else if (KEY_VALUE == KEY_VALUE_DOWN) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] > 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]--; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; lcd_post (MFL_PARA_A.MENU_X + 1, 4); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[9]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[10]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[11]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[12]); } else if (KEY_VALUE == KEY_VALUE_LEFT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y > 0)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 0); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 0); MFL_PARA_A.MENU_Y--; //反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 1); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 1); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 1); } } else if (KEY_VALUE == KEY_VALUE_RIGHT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y < 12)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 0); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 0); MFL_PARA_A.MENU_Y++; //反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 1); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 1); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 1); } } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 0); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 0); //显示原来的数据 temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][1]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][2]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][3]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 0); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 0); for (temp = 0; temp < 13; temp++) MFL_PARA_A.MENU_SET_INPUT_DATA[temp] -= 0x30; MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0] = MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 1000 + MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[2] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[3]; MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][1] = MFL_PARA_A.MENU_SET_INPUT_DATA[4] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[5] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[6]; MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][2] = MFL_PARA_A.MENU_SET_INPUT_DATA[7] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[8] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[9]; MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][3] = MFL_PARA_A.MENU_SET_INPUT_DATA[10] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[11] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[12]; //显示新数据 temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 4, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 6, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][1]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][2]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 10, MFL_PARA_A.ZIXUAN_A_PARA[MFL_PARA_A.PROGRAM_NUM][3]); } } break; case ZX_SET_SAVE: { if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //从存储区更新数据 n = ZIXUAN_PARA_A_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = ZIXUAN_PARA_A_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 10; n++) { MFL_PARA_A.ZIXUAN_A_PARA[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_A_PARA[n][0] <<= 8; MFL_PARA_A.ZIXUAN_A_PARA[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_A_PARA[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_A_PARA[n][1] <<= 8; MFL_PARA_A.ZIXUAN_A_PARA[n][1] += (u16)para_data_temp[x++]; temp = (u16)para_data_temp[x++]; temp <<= 8; temp += (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_A_PARA[n][2] = temp / 1000; MFL_PARA_A.ZIXUAN_A_PARA[n][3] = temp % 1000; MFL_PARA_A.ZIXUAN_A_PARA[n][4] = MFL_PARA_A.ZIXUAN_A_PARA[n][3] / 100; MFL_PARA_A.ZIXUAN_A_PARA[n][5] = MFL_PARA_A.ZIXUAN_A_PARA[n][3] % 100; } } MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //参数保存 x = 0; for (n = 0; n < 10; n++) { para_data_temp[x++] = MFL_PARA_A.ZIXUAN_A_PARA[n][0] >> 8; para_data_temp[x++] = MFL_PARA_A.ZIXUAN_A_PARA[n][0]; para_data_temp[x++] = MFL_PARA_A.ZIXUAN_A_PARA[n][1] >> 8; para_data_temp[x++] = MFL_PARA_A.ZIXUAN_A_PARA[n][1]; temp = MFL_PARA_A.ZIXUAN_A_PARA[n][2] * 1000; temp += MFL_PARA_A.ZIXUAN_A_PARA[n][3]; para_data_temp[x++] = temp >> 8; para_data_temp[x++] = temp; MFL_PARA_A.ZIXUAN_A_PARA[n][4] = MFL_PARA_A.ZIXUAN_A_PARA[n][3] / 100; MFL_PARA_A.ZIXUAN_A_PARA[n][5] = MFL_PARA_A.ZIXUAN_A_PARA[n][3] % 100; } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = ZIXUAN_PARA_A_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = ZIXUAN_PARA_A_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == PROGRAM_ZIXUANB) //自选B参数设置 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_program_b_user (); //显示自选参数设置菜单 MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.PROGRAM_NUM = 0; MFL_PARA_A.MENU_X = 0; temp_dis_lcd_4 (1, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 0][0]); temp_dis_lcd_4 (1, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 0][1]); temp_dis_lcd_4 (1, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 0][2]); temp_dis_lcd_4 (1, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 0][3]); temp_dis_lcd_4 (2, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 1][0]); temp_dis_lcd_4 (2, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 1][1]); temp_dis_lcd_4 (2, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 1][2]); temp_dis_lcd_4 (2, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 1][3]); temp_dis_lcd_4 (3, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 2][0]); temp_dis_lcd_4 (3, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 2][1]); temp_dis_lcd_4 (3, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 2][2]); temp_dis_lcd_4 (3, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM + 2][3]); lcd_display_black (1, 0, 6, 1); } switch(MFL_PARA_A.SLAVE_STATUS) { case ZX_SET_SELECT: { if ((MFL_PARA_A.PROGRAM_NUM < 9) && (KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM++; if (MFL_PARA_A.MENU_X < 2) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 0); MFL_PARA_A.MENU_X++; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 1); } lcd_display_string(1, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X]); temp_dis_lcd_4 (1, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd_4 (1, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); temp_dis_lcd_4 (1, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][2]); temp_dis_lcd_4 (1, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][3]); lcd_display_string(2, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1]); temp_dis_lcd_4 (2, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd_4 (2, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); temp_dis_lcd_4 (2, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][2]); temp_dis_lcd_4 (2, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][3]); lcd_display_string(3, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2]); temp_dis_lcd_4 (3, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd_4 (3, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); temp_dis_lcd_4 (3, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][2]); temp_dis_lcd_4 (3, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][3]); } else if ((MFL_PARA_A.PROGRAM_NUM > 0) && (KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM--; if (MFL_PARA_A.MENU_X > 0) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 0); MFL_PARA_A.MENU_X--; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 1); } lcd_display_string(1, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X]); temp_dis_lcd_4 (1, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd_4 (1, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); temp_dis_lcd_4 (1, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][2]); temp_dis_lcd_4 (1, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][3]); lcd_display_string(2, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1]); temp_dis_lcd_4 (2, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd_4 (2, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); temp_dis_lcd_4 (2, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][2]); temp_dis_lcd_4 (2, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][3]); lcd_display_string(3, 0, menu_zixuan_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2]); temp_dis_lcd_4 (3, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd_4 (3, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); temp_dis_lcd_4 (3, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][2]); temp_dis_lcd_4 (3, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][3]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_ENT; MFL_PARA_A.MENU_Y = 0; //具体设置输入计数器清零 if (MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0] > 9999) { MFL_PARA_A.MENU_SET_INPUT_DATA[0] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[1] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[2] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[3] = '-'; } else { temp = MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]; MFL_PARA_A.MENU_SET_INPUT_DATA[0] = temp / 1000; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 1000; MFL_PARA_A.MENU_SET_INPUT_DATA[1] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[2] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[2] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[3] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[0] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[1] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[2] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[3] += 0x30; } if (MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][1] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[4] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[5] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[6] = '-'; } else { temp = MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][1]; MFL_PARA_A.MENU_SET_INPUT_DATA[4] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[4] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[5] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[5] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[6] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[4] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[5] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[6] += 0x30; } if (MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][2] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[7] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[8] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[9] = '-'; } else { temp = MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][2]; MFL_PARA_A.MENU_SET_INPUT_DATA[7] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[7] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[8] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[8] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[9] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[7] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[8] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[9] += 0x30; } if (MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][3] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[10] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[11] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[12] = '-'; } else { temp = MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][3]; MFL_PARA_A.MENU_SET_INPUT_DATA[10] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[10] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[11] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[11] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[12] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[10] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[11] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[12] += 0x30; } //取消反显,反显第一个字符 //lcd_display_black (MFL_PARA_A.MENU_X+1,0,6,0); lcd_post (MFL_PARA_A.MENU_X + 1, 4); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[9]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[10]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[11]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[12]); //反显第一个字符 lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 1); } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SAVE; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 0); menu_display_program_save (); } } break; case ZX_SET_ENT: { if (KEY_VALUE == KEY_VALUE_UP) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] < 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]++; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; lcd_post (MFL_PARA_A.MENU_X + 1, 4); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[9]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[10]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[11]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[12]); } else if (KEY_VALUE == KEY_VALUE_DOWN) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] > 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]--; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; lcd_post (MFL_PARA_A.MENU_X + 1, 4); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[9]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (0x20); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[10]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[11]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[12]); } else if (KEY_VALUE == KEY_VALUE_LEFT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y > 0)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 0); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 0); MFL_PARA_A.MENU_Y--; //反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 1); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 1); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 1); } } else if (KEY_VALUE == KEY_VALUE_RIGHT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y < 12)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 0); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 0); MFL_PARA_A.MENU_Y++; //反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 1); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 1); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 1); } } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 0); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 0); //显示原来的数据 temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][1]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][2]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][3]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else if (MFL_PARA_A.MENU_Y < 7) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 9, 0); else if (MFL_PARA_A.MENU_Y < 10) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 10, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 11, 0); for (temp = 0; temp < 13; temp++) MFL_PARA_A.MENU_SET_INPUT_DATA[temp] -= 0x30; MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0] = MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 1000 + MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[2] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[3]; MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][1] = MFL_PARA_A.MENU_SET_INPUT_DATA[4] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[5] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[6]; MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][2] = MFL_PARA_A.MENU_SET_INPUT_DATA[7] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[8] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[9]; MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][3] = MFL_PARA_A.MENU_SET_INPUT_DATA[10] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[11] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[12]; //显示新数据 temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 4, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 6, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][1]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][2]); temp_dis_lcd_4 (MFL_PARA_A.MENU_X + 1, 10, MFL_PARA_A.ZIXUAN_B_PARA[MFL_PARA_A.PROGRAM_NUM][3]); } } break; case ZX_SET_SAVE: { if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //从存储区更新数据 n = ZIXUAN_PARA_B_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = ZIXUAN_PARA_B_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 10; n++) { MFL_PARA_A.ZIXUAN_B_PARA[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_B_PARA[n][0] <<= 8; MFL_PARA_A.ZIXUAN_B_PARA[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_B_PARA[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_B_PARA[n][1] <<= 8; MFL_PARA_A.ZIXUAN_B_PARA[n][1] += (u16)para_data_temp[x++]; temp = (u16)para_data_temp[x++]; temp <<= 8; temp += (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_B_PARA[n][2] = temp / 1000; MFL_PARA_A.ZIXUAN_B_PARA[n][3] = temp % 1000; MFL_PARA_A.ZIXUAN_B_PARA[n][4] = MFL_PARA_A.ZIXUAN_B_PARA[n][3] / 100; MFL_PARA_A.ZIXUAN_B_PARA[n][5] = MFL_PARA_A.ZIXUAN_B_PARA[n][3] % 100; } } MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //参数保存 x = 0; for (n = 0; n < 10; n++) { para_data_temp[x++] = MFL_PARA_A.ZIXUAN_B_PARA[n][0] >> 8; para_data_temp[x++] = MFL_PARA_A.ZIXUAN_B_PARA[n][0]; para_data_temp[x++] = MFL_PARA_A.ZIXUAN_B_PARA[n][1] >> 8; para_data_temp[x++] = MFL_PARA_A.ZIXUAN_B_PARA[n][1]; temp = MFL_PARA_A.ZIXUAN_B_PARA[n][2] * 1000; temp += MFL_PARA_A.ZIXUAN_B_PARA[n][3]; para_data_temp[x++] = temp >> 8; para_data_temp[x++] = temp; MFL_PARA_A.ZIXUAN_B_PARA[n][4] = MFL_PARA_A.ZIXUAN_B_PARA[n][3] / 100; MFL_PARA_A.ZIXUAN_B_PARA[n][5] = MFL_PARA_A.ZIXUAN_B_PARA[n][3] % 100; } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = ZIXUAN_PARA_B_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = ZIXUAN_PARA_B_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == PROGRAM_JIAOZHUN) //校准参数设置 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_program_parameter (); //显示校准参数设置菜单 MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.PROGRAM_NUM = 0; MFL_PARA_A.MENU_X = 0; temp_dis_lcd (1, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM + 0][0]); temp_dis_lcd (1, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM + 0][1]); temp_dis_lcd (2, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM + 1][0]); temp_dis_lcd (2, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM + 1][1]); temp_dis_lcd (3, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM + 2][0]); temp_dis_lcd (3, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM + 2][1]); lcd_display_black (1, 0, 6, 1); } switch(MFL_PARA_A.SLAVE_STATUS) { case ZX_SET_SELECT: { if ((MFL_PARA_A.PROGRAM_NUM < 14) && (KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM++; if (MFL_PARA_A.MENU_X < 2) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 0); MFL_PARA_A.MENU_X++; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 1); } lcd_post (1, 1); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1) / 10 + 0x30); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1) % 10 + 0x30); temp_dis_lcd (1, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd (1, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); lcd_post (2, 1); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2) / 10 + 0x30); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2) % 10 + 0x30); temp_dis_lcd (2, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd (2, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); lcd_post (3, 1); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 3) / 10 + 0x30); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 3) % 10 + 0x30); temp_dis_lcd (3, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd (3, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); } else if ((MFL_PARA_A.PROGRAM_NUM > 0) && (KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM--; if (MFL_PARA_A.MENU_X > 0) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 0); MFL_PARA_A.MENU_X--; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 1); } lcd_post (1, 1); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1) / 10 + 0x30); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1) % 10 + 0x30); temp_dis_lcd (1, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd (1, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); lcd_post (2, 1); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2) / 10 + 0x30); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2) % 10 + 0x30); temp_dis_lcd (2, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd (2, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); lcd_post (3, 1); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 3) / 10 + 0x30); lcd_display ((MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 3) % 10 + 0x30); temp_dis_lcd (3, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd (3, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_ENT; MFL_PARA_A.MENU_Y = 0; //具体设置输入计数器清零 temp_n = MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM][0]; temp_a = temp_n / 1000; temp_n -= temp_a * 1000; temp_b = temp_n / 100; temp_n -= temp_b * 100; temp_c = temp_n / 10; temp_n -= temp_c * 10; temp_d = temp_n; MFL_PARA_A.MENU_SET_INPUT_DATA[0] = temp_a + 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[1] = temp_b + 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[2] = temp_c + 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[3] = temp_d + 0x30; temp_n = MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM][1]; temp_a = temp_n / 1000; temp_n -= temp_a * 1000; temp_b = temp_n / 100; temp_n -= temp_b * 100; temp_c = temp_n / 10; temp_n -= temp_c * 10; temp_d = temp_n; MFL_PARA_A.MENU_SET_INPUT_DATA[4] = temp_a + 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[5] = temp_b + 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[6] = temp_c + 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[7] = temp_d + 0x30; //取消反显,反显第一个字符 //lcd_display_black (MFL_PARA_A.MENU_X+1,0,6,0); lcd_post (MFL_PARA_A.MENU_X + 1, 4); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); //反显第一个字符 lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 1); } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SAVE; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 6, 0); menu_display_program_save (); } } break; case ZX_SET_ENT: { if (KEY_VALUE == KEY_VALUE_UP) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] < 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]++; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; lcd_post (MFL_PARA_A.MENU_X + 1, 4); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); } else if (KEY_VALUE == KEY_VALUE_DOWN) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] > 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]--; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; lcd_post (MFL_PARA_A.MENU_X + 1, 4); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); } else if (KEY_VALUE == KEY_VALUE_LEFT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y > 0)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); MFL_PARA_A.MENU_Y--; //反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 1); } } else if (KEY_VALUE == KEY_VALUE_RIGHT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y < 7)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); MFL_PARA_A.MENU_Y++; //反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 1); } } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); //显示原来的数据 temp_dis_lcd (MFL_PARA_A.MENU_X + 1, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM][1]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 8, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); for (temp = 0; temp < 8; temp++) MFL_PARA_A.MENU_SET_INPUT_DATA[temp] -= 0x30; //温度值设定判定,小于1000度 temp = MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 1000 + MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[2] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[3]; if (temp < SET_TEMP_KEY) MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM][0] = temp; temp = MFL_PARA_A.MENU_SET_INPUT_DATA[4] * 1000 + MFL_PARA_A.MENU_SET_INPUT_DATA[5] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[6] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[7]; if (temp < SET_TEMP_KEY) MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM][1] = temp; //显示新数据 temp_dis_lcd (MFL_PARA_A.MENU_X + 1, 4, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.CALIBRATION[MFL_PARA_A.PROGRAM_NUM][1]); } } break; case ZX_SET_SAVE: { if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //从存储区更新数据 n = JIAOZHUN_PARA_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = JIAOZHUN_PARA_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 15; n++) { MFL_PARA_A.CALIBRATION[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.CALIBRATION[n][0] <<= 8; MFL_PARA_A.CALIBRATION[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.CALIBRATION[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.CALIBRATION[n][1] <<= 8; MFL_PARA_A.CALIBRATION[n][1] += (u16)para_data_temp[x++]; } } MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //参数保存 x = 0; for (n = 0; n < 15; n++) { para_data_temp[x++] = MFL_PARA_A.CALIBRATION[n][0] >> 8; para_data_temp[x++] = MFL_PARA_A.CALIBRATION[n][0]; para_data_temp[x++] = MFL_PARA_A.CALIBRATION[n][1] >> 8; para_data_temp[x++] = MFL_PARA_A.CALIBRATION[n][1]; } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = JIAOZHUN_PARA_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = JIAOZHUN_PARA_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == PROGRAM_PID) //PID参数设置 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_program_pid (); //显示PID参数设置菜单 MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.PROGRAM_NUM = 0; MFL_PARA_A.MENU_X = 0; temp_dis_lcd_3 (1, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM + 0][0]); temp_dis_lcd_3 (1, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM + 0][1]); temp_dis_lcd_3 (1, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM + 0][2]); temp_dis_lcd_3 (2, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM + 1][0]); temp_dis_lcd_3 (2, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM + 1][1]); temp_dis_lcd_3 (2, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM + 1][2]); temp_dis_lcd_3 (3, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM + 2][0]); temp_dis_lcd_3 (3, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM + 2][1]); temp_dis_lcd_3 (3, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM + 2][2]); lcd_display_black (1, 0, 10, 1); } switch(MFL_PARA_A.SLAVE_STATUS) { case ZX_SET_SELECT: { if ((MFL_PARA_A.PROGRAM_NUM < 9) && (KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM++; if (MFL_PARA_A.MENU_X < 2) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 0); MFL_PARA_A.MENU_X++; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 1); } //lcd_post (1,1); //lcd_display (0xa2d9+MFL_PARA_A.PROGRAM_NUM-MFL_PARA_A.MENU_X); lcd_display_string(1, 0, menu_temp_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X]); temp_dis_lcd_3 (1, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd_3 (1, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); temp_dis_lcd_3 (1, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][2]); lcd_display_string(2, 0, menu_temp_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1]); temp_dis_lcd_3 (2, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd_3 (2, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); temp_dis_lcd_3 (2, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][2]); lcd_display_string(3, 0, menu_temp_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2]); temp_dis_lcd_3 (3, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd_3 (3, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); temp_dis_lcd_3 (3, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][2]); } else if ((MFL_PARA_A.PROGRAM_NUM > 0) && (KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM--; if (MFL_PARA_A.MENU_X > 0) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 0); MFL_PARA_A.MENU_X--; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 1); } lcd_display_string(1, 0, menu_temp_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X]); temp_dis_lcd_3 (1, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd_3 (1, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); temp_dis_lcd_3 (1, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][2]); lcd_display_string(2, 0, menu_temp_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1]); temp_dis_lcd_3 (2, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd_3 (2, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); temp_dis_lcd_3 (2, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][2]); lcd_display_string(3, 0, menu_temp_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2]); temp_dis_lcd_3 (3, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd_3 (3, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); temp_dis_lcd_3 (3, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][2]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_ENT; MFL_PARA_A.MENU_Y = 0; //具体设置输入计数器清零 if (MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][0] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[0] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[1] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[2] = '-'; } else { temp = MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][0]; MFL_PARA_A.MENU_SET_INPUT_DATA[0] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[1] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[2] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[0] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[1] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[2] += 0x30; } if (MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][1] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[3] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[4] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[5] = '-'; } else { temp = MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][1]; MFL_PARA_A.MENU_SET_INPUT_DATA[3] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[3] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[4] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[4] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[5] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[3] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[4] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[5] += 0x30; } if (MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][2] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[6] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[7] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[8] = '-'; } else { temp = MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][2]; MFL_PARA_A.MENU_SET_INPUT_DATA[6] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[6] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[7] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[7] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[8] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[6] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[7] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[8] += 0x30; } //取消反显,反显第一个字符 //lcd_display_black (MFL_PARA_A.MENU_X+1,0,6,0); lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); //反显第一个字符 lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 1); } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SAVE; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 0); menu_display_program_save (); } } break; case ZX_SET_ENT: { if (KEY_VALUE == KEY_VALUE_UP) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] < 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]++; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); } else if (KEY_VALUE == KEY_VALUE_DOWN) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] > 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]--; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); } else if (KEY_VALUE == KEY_VALUE_LEFT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y > 0)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 0); MFL_PARA_A.MENU_Y--; //反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 1); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 1); } } else if (KEY_VALUE == KEY_VALUE_RIGHT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y < 8)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 0); MFL_PARA_A.MENU_Y++; //反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 1); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 1); } } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 0); //显示原来的数据 temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][1]); temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][2]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 0); for (temp = 0; temp < 9; temp++) MFL_PARA_A.MENU_SET_INPUT_DATA[temp] -= 0x30; MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][0] = MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[2]; MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][1] = MFL_PARA_A.MENU_SET_INPUT_DATA[3] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[4] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[5]; MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][2] = MFL_PARA_A.MENU_SET_INPUT_DATA[6] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[7] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[8]; //显示新数据 temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 6, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][1]); temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 10, MFL_PARA_A.PID_PARA[MFL_PARA_A.PROGRAM_NUM][2]); } } break; case ZX_SET_SAVE: { if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //从存储区更新数据 n = PID_PARA_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = PID_PARA_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 10; n++) { MFL_PARA_A.PID_PARA[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][0] <<= 8; MFL_PARA_A.PID_PARA[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][1] <<= 8; MFL_PARA_A.PID_PARA[n][1] += (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][2] = (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][2] <<= 8; MFL_PARA_A.PID_PARA[n][2] += (u16)para_data_temp[x++]; } } MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //参数保存 x = 0; for (n = 0; n < 10; n++) { para_data_temp[x++] = MFL_PARA_A.PID_PARA[n][0] >> 8; para_data_temp[x++] = MFL_PARA_A.PID_PARA[n][0]; para_data_temp[x++] = MFL_PARA_A.PID_PARA[n][1] >> 8; para_data_temp[x++] = MFL_PARA_A.PID_PARA[n][1]; para_data_temp[x++] = MFL_PARA_A.PID_PARA[n][2] >> 8; para_data_temp[x++] = MFL_PARA_A.PID_PARA[n][2]; } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = PID_PARA_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = PID_PARA_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == PROGRAM_USER) //时间设置 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_program_user (); //显示校准参数设置菜单 MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.PROGRAM_NUM = 0; MFL_PARA_A.MENU_X = 0; pcf8563_read_time(2, 7, MENU_TIME_DATA); MENU_TIME_DATA_DIS[0] = (MENU_TIME_DATA[6] & 0xff) >> 4; MENU_TIME_DATA_DIS[1] = (MENU_TIME_DATA[6] & 0xff) & 0x0f; MENU_TIME_DATA_DIS[2] = (MENU_TIME_DATA[5] & 0x1f) >> 4; MENU_TIME_DATA_DIS[3] = (MENU_TIME_DATA[5] & 0x1f) & 0x0f; MENU_TIME_DATA_DIS[4] = (MENU_TIME_DATA[3] & 0x3f) >> 4; MENU_TIME_DATA_DIS[5] = (MENU_TIME_DATA[3] & 0x3f) & 0x0f; MENU_TIME_DATA_DIS[6] = (MENU_TIME_DATA[2] & 0x3f) >> 4; MENU_TIME_DATA_DIS[7] = (MENU_TIME_DATA[2] & 0x3f) & 0x0f; MENU_TIME_DATA_DIS[8] = (MENU_TIME_DATA[1] & 0x7f) >> 4; MENU_TIME_DATA_DIS[9] = (MENU_TIME_DATA[1] & 0x7f) & 0x0f; MENU_TIME_DATA_DIS[10] = (MENU_TIME_DATA[0] & 0x7f) >> 4; MENU_TIME_DATA_DIS[11] = (MENU_TIME_DATA[0] & 0x7f) & 0x0f; time_set_dis_lcd (1, 2, MENU_TIME_DATA_DIS); lcd_display_black_one (1, MENU_TIME_DATA_DIS_POST[MFL_PARA_A.PROGRAM_NUM] + 4, 1); } switch(MFL_PARA_A.SLAVE_STATUS) { case ZX_SET_SELECT: { if ((KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MENU_TIME_DATA_DIS[MFL_PARA_A.PROGRAM_NUM]) MENU_TIME_DATA_DIS[MFL_PARA_A.PROGRAM_NUM]--; else MENU_TIME_DATA_DIS[MFL_PARA_A.PROGRAM_NUM] = 9; time_set_dis_lcd (1, 2, MENU_TIME_DATA_DIS); } else if ((KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MENU_TIME_DATA_DIS[MFL_PARA_A.PROGRAM_NUM] < 9) MENU_TIME_DATA_DIS[MFL_PARA_A.PROGRAM_NUM]++; else MENU_TIME_DATA_DIS[MFL_PARA_A.PROGRAM_NUM] = 0; time_set_dis_lcd (1, 2, MENU_TIME_DATA_DIS); } else if ((KEY_VALUE == KEY_VALUE_LEFT)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_black_one (1, MENU_TIME_DATA_DIS_POST[MFL_PARA_A.PROGRAM_NUM] + 4, 0); if (MFL_PARA_A.PROGRAM_NUM) MFL_PARA_A.PROGRAM_NUM--; else MFL_PARA_A.PROGRAM_NUM = 11; lcd_display_black_one (1, MENU_TIME_DATA_DIS_POST[MFL_PARA_A.PROGRAM_NUM] + 4, 1); } else if ((KEY_VALUE == KEY_VALUE_RIGHT)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; lcd_display_black_one (1, MENU_TIME_DATA_DIS_POST[MFL_PARA_A.PROGRAM_NUM] + 4, 0); if (MFL_PARA_A.PROGRAM_NUM < 11) MFL_PARA_A.PROGRAM_NUM++; else MFL_PARA_A.PROGRAM_NUM = 0; lcd_display_black_one (1, MENU_TIME_DATA_DIS_POST[MFL_PARA_A.PROGRAM_NUM] + 4, 1); } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SAVE; lcd_display_black_one (1, MENU_TIME_DATA_DIS_POST[MFL_PARA_A.PROGRAM_NUM] + 4, 0); menu_display_program_save (); } } break; case ZX_SET_SAVE: { if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MENU_TIME_DATA[6] = (MENU_TIME_DATA_DIS[0] << 4) + MENU_TIME_DATA_DIS[1]; MENU_TIME_DATA[5] = (MENU_TIME_DATA_DIS[2] << 4) + MENU_TIME_DATA_DIS[3]; MENU_TIME_DATA[3] = (MENU_TIME_DATA_DIS[4] << 4) + MENU_TIME_DATA_DIS[5]; MENU_TIME_DATA[2] = (MENU_TIME_DATA_DIS[6] << 4) + MENU_TIME_DATA_DIS[7]; MENU_TIME_DATA[1] = (MENU_TIME_DATA_DIS[8] << 4) + MENU_TIME_DATA_DIS[9]; MENU_TIME_DATA[0] = (MENU_TIME_DATA_DIS[10] << 4) + MENU_TIME_DATA_DIS[11]; pcf8563_write_time(2, 7, MENU_TIME_DATA); MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == PROGRAM_SYSTEM) //系统参数设置 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_program_system (); //显示设备参数设置菜单 MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.PROGRAM_NUM = 0; MFL_PARA_A.MENU_X = 0; //MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM+0][0]=40; //MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM+0][1]=10; //MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM+0][2]=888; temp_dis_lcd_3 (1, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM + 0][0]); temp_dis_lcd_3 (1, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM + 0][1]); temp_dis_lcd_3 (1, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM + 0][2]); temp_dis_lcd_3 (2, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM + 1][0]); temp_dis_lcd_3 (2, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM + 1][1]); temp_dis_lcd_3 (2, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM + 1][2]); temp_dis_lcd_3 (3, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM + 2][0]); temp_dis_lcd_3 (3, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM + 2][1]); temp_dis_lcd_3 (3, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM + 2][2]); lcd_display_black (1, 0, 10, 1); } switch(MFL_PARA_A.SLAVE_STATUS) { case ZX_SET_SELECT: { if ((MFL_PARA_A.PROGRAM_NUM < 9) && (KEY_VALUE == KEY_VALUE_DOWN)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM++; if (MFL_PARA_A.MENU_X < 2) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 0); MFL_PARA_A.MENU_X++; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 1); } lcd_display_string(1, 0, menu_program_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X]); temp_dis_lcd_3 (1, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd_3 (1, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); temp_dis_lcd_3 (1, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][2]); lcd_display_string(2, 0, menu_program_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1]); temp_dis_lcd_3 (2, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd_3 (2, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); temp_dis_lcd_3 (2, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][2]); lcd_display_string(3, 0, menu_program_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2]); temp_dis_lcd_3 (3, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd_3 (3, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); temp_dis_lcd_3 (3, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][2]); } else if ((MFL_PARA_A.PROGRAM_NUM > 0) && (KEY_VALUE == KEY_VALUE_UP)) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.PROGRAM_NUM--; if (MFL_PARA_A.MENU_X > 0) { lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 0); MFL_PARA_A.MENU_X--; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 1); } lcd_display_string(1, 0, menu_program_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X]); temp_dis_lcd_3 (1, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][0]); temp_dis_lcd_3 (1, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][1]); temp_dis_lcd_3 (1, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 0][2]); lcd_display_string(2, 0, menu_program_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1]); temp_dis_lcd_3 (2, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][0]); temp_dis_lcd_3 (2, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][1]); temp_dis_lcd_3 (2, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 1][2]); lcd_display_string(3, 0, menu_program_para_string_init_data[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2]); temp_dis_lcd_3 (3, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][0]); temp_dis_lcd_3 (3, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][1]); temp_dis_lcd_3 (3, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM - MFL_PARA_A.MENU_X + 2][2]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_ENT; MFL_PARA_A.MENU_Y = 0; //具体设置输入计数器清零 if (MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][0] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[0] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[1] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[2] = '-'; } else { temp = MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][0]; MFL_PARA_A.MENU_SET_INPUT_DATA[0] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[1] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[2] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[0] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[1] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[2] += 0x30; } if (MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][1] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[3] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[4] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[5] = '-'; } else { temp = MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][1]; MFL_PARA_A.MENU_SET_INPUT_DATA[3] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[3] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[4] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[4] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[5] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[3] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[4] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[5] += 0x30; } if (MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][2] > 999) { MFL_PARA_A.MENU_SET_INPUT_DATA[6] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[7] = '-'; MFL_PARA_A.MENU_SET_INPUT_DATA[8] = '-'; } else { temp = MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][2]; MFL_PARA_A.MENU_SET_INPUT_DATA[6] = temp / 100; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[6] * 100; MFL_PARA_A.MENU_SET_INPUT_DATA[7] = temp / 10; temp -= MFL_PARA_A.MENU_SET_INPUT_DATA[7] * 10; MFL_PARA_A.MENU_SET_INPUT_DATA[8] = temp; MFL_PARA_A.MENU_SET_INPUT_DATA[6] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[7] += 0x30; MFL_PARA_A.MENU_SET_INPUT_DATA[8] += 0x30; } //取消反显,反显第一个字符 //lcd_display_black (MFL_PARA_A.MENU_X+1,0,6,0); lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); //反显第一个字符 lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 1); } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SAVE; lcd_display_black (MFL_PARA_A.MENU_X + 1, 0, 10, 0); menu_display_program_save (); } } break; case ZX_SET_ENT: { if (KEY_VALUE == KEY_VALUE_UP) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] < 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]++; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); } else if (KEY_VALUE == KEY_VALUE_DOWN) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] > 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]--; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; lcd_post (MFL_PARA_A.MENU_X + 1, 6); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_post (MFL_PARA_A.MENU_X + 1, 8); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[4]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[5]); lcd_post (MFL_PARA_A.MENU_X + 1, 10); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[6]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[7]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[8]); } else if (KEY_VALUE == KEY_VALUE_LEFT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y > 0)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 0); MFL_PARA_A.MENU_Y--; //反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 1); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 1); } } else if (KEY_VALUE == KEY_VALUE_RIGHT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y < 8)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 0); MFL_PARA_A.MENU_Y++; //反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 1); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 1); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 1); } } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 0); //显示原来的数据 temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][1]); temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][2]); } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //取消反显单字符 if (MFL_PARA_A.MENU_Y < 3) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 12, 0); else if (MFL_PARA_A.MENU_Y < 6) lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 13, 0); else lcd_display_black_one (MFL_PARA_A.MENU_X + 1, MFL_PARA_A.MENU_Y + 14, 0); for (temp = 0; temp < 9; temp++) MFL_PARA_A.MENU_SET_INPUT_DATA[temp] -= 0x30; MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][0] = MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[2]; MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][1] = MFL_PARA_A.MENU_SET_INPUT_DATA[3] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[4] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[5]; MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][2] = MFL_PARA_A.MENU_SET_INPUT_DATA[6] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[7] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[8]; //显示新数据 temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 6, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][0]); temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 8, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][1]); temp_dis_lcd_3 (MFL_PARA_A.MENU_X + 1, 10, MFL_PARA_A.EQUIPMENT_PARA[MFL_PARA_A.PROGRAM_NUM][2]); } } break; case ZX_SET_SAVE: { if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; //从存储区更新数据 n = SYSTEM_PARA_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = SYSTEM_PARA_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 10; n++) { MFL_PARA_A.EQUIPMENT_PARA[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][0] <<= 8; MFL_PARA_A.EQUIPMENT_PARA[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][1] <<= 8; MFL_PARA_A.EQUIPMENT_PARA[n][1] += (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][2] = (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][2] <<= 8; MFL_PARA_A.EQUIPMENT_PARA[n][2] += (u16)para_data_temp[x++]; } } MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } else if (KEY_VALUE == KEY_VALUE_ENT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; x = 0; for (n = 0; n < 10; n++) { para_data_temp[x++] = MFL_PARA_A.EQUIPMENT_PARA[n][0] >> 8; para_data_temp[x++] = MFL_PARA_A.EQUIPMENT_PARA[n][0]; para_data_temp[x++] = MFL_PARA_A.EQUIPMENT_PARA[n][1] >> 8; para_data_temp[x++] = MFL_PARA_A.EQUIPMENT_PARA[n][1]; para_data_temp[x++] = MFL_PARA_A.EQUIPMENT_PARA[n][2] >> 8; para_data_temp[x++] = MFL_PARA_A.EQUIPMENT_PARA[n][2]; } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = SYSTEM_PARA_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = SYSTEM_PARA_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } } break; default: break; } } /////////////////////////////////////////////////////////////////////////////////////////////// else if (MAIN_STATUS == PROGRAM_PASSWORD) //用户密码校验 { if (STATUS_NEW_FLAG) { STATUS_NEW_FLAG = FLAG_INVALID; menu_display_program_password (); //显示用户密码校验 MFL_PARA_A.SLAVE_STATUS = ZX_SET_SELECT; //从状态机复位 MFL_PARA_A.SLAVE_STATUS_NEW = 1; MFL_PARA_A.MENU_Y = 0; //具体设置输入计数器清零 for (temp = 0; temp < 4; temp++) MFL_PARA_A.MENU_SET_INPUT_DATA[temp] = 0x30; //输入缓存区清零 //反显第一个字符 lcd_display_black_one (1, MFL_PARA_A.MENU_Y + 12, 1); } if (KEY_VALUE == KEY_VALUE_UP) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] < 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]++; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x39) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x30; lcd_post (1, 6); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); } else if (KEY_VALUE == KEY_VALUE_DOWN) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x20) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] > 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y]--; else if (MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] == 0x30) MFL_PARA_A.MENU_SET_INPUT_DATA[MFL_PARA_A.MENU_Y] = 0x39; lcd_post (1, 6); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[0]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[1]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[2]); lcd_display (MFL_PARA_A.MENU_SET_INPUT_DATA[3]); } else if (KEY_VALUE == KEY_VALUE_LEFT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y > 0)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (1, MFL_PARA_A.MENU_Y + 12, 0); MFL_PARA_A.MENU_Y--; //反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (1, MFL_PARA_A.MENU_Y + 12, 1); } } else if (KEY_VALUE == KEY_VALUE_RIGHT) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; if ((MFL_PARA_A.MENU_Y < 3)) { //取消反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (1, MFL_PARA_A.MENU_Y + 12, 0); MFL_PARA_A.MENU_Y++; //反显单字符 if (MFL_PARA_A.MENU_Y < 4) lcd_display_black_one (1, MFL_PARA_A.MENU_Y + 12, 1); } } else if (KEY_VALUE == KEY_VALUE_ESC) { Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; lcd_display_black_one (1, MFL_PARA_A.MENU_Y + 12, 0); } else if (KEY_VALUE == KEY_VALUE_ENT) { lcd_display_black_one (1, MFL_PARA_A.MENU_Y + 12, 0); Beep_Set (1, 1, 1); KEY_VALUE = KEY_VALUE_NONE; for (temp = 0; temp < 8; temp++) MFL_PARA_A.MENU_SET_INPUT_DATA[temp] -= 0x30; temp = MFL_PARA_A.MENU_SET_INPUT_DATA[0] * 1000 + MFL_PARA_A.MENU_SET_INPUT_DATA[1] * 100 + MFL_PARA_A.MENU_SET_INPUT_DATA[2] * 10 + MFL_PARA_A.MENU_SET_INPUT_DATA[3]; if (temp == SYSTEM_PASSWORD) { MAIN_STATUS = MAIN_STATUS_BACK; //密码通过 STATUS_NEW_FLAG = FLAG_VALID; } else { MAIN_STATUS = MAIN_STATUS_PROGRAM; //进入编程状态 STATUS_NEW_FLAG = FLAG_VALID; } } } ////////////////////////////////////////////////////////////////////////////////////////////// } } ///////////////////////////////////////////////////////////////////////////// void system_init (void) { //u32 temp; //u32 num; ChipHalInit (); lcd_init (); MFL_PARA_A.TEMP_VALUE_SET = 0; MAIN_STATUS = MAIN_STATUS_WELCOME; STATUS_NEW_FLAG = FLAG_VALID; //Beep_Set (3,7,3); AD_READ_NUM = 0; ads1220_Initialization (); data_base_init (); RELAY_DELAY_EN = 1; LCD_BL_ON; } //参数初始化 void data_base_init (void) { u16 x, n, temp; u8 eeprom_data_temp[32]; //M24C64为32个字节一个page u8 para_data_temp[64]; u32 sum; ///////////////////////////////////////////////////////////////////////////////////////// //自选A n = ZIXUAN_PARA_A_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = ZIXUAN_PARA_A_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 10; n++) { MFL_PARA_A.ZIXUAN_A_PARA[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_A_PARA[n][0] <<= 8; MFL_PARA_A.ZIXUAN_A_PARA[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_A_PARA[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_A_PARA[n][1] <<= 8; MFL_PARA_A.ZIXUAN_A_PARA[n][1] += (u16)para_data_temp[x++]; temp = (u16)para_data_temp[x++]; temp <<= 8; temp += (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_A_PARA[n][2] = temp / 1000; MFL_PARA_A.ZIXUAN_A_PARA[n][3] = temp % 1000; MFL_PARA_A.ZIXUAN_A_PARA[n][4] = MFL_PARA_A.ZIXUAN_A_PARA[n][3] / 100; MFL_PARA_A.ZIXUAN_A_PARA[n][5] = MFL_PARA_A.ZIXUAN_A_PARA[n][3] % 100; } } else { //自选A for (n = 0; n < 10; n++) { MFL_PARA_A.ZIXUAN_A_PARA[n][0] = MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 0]; MFL_PARA_A.ZIXUAN_A_PARA[n][1] = MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 1]; MFL_PARA_A.ZIXUAN_A_PARA[n][2] = MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 2]; MFL_PARA_A.ZIXUAN_A_PARA[n][3] = MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 3]; } } ///////////////////////////////////////////////////////////////////////////////////////// //自选B n = ZIXUAN_PARA_B_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = ZIXUAN_PARA_B_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 10; n++) { MFL_PARA_A.ZIXUAN_B_PARA[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_B_PARA[n][0] <<= 8; MFL_PARA_A.ZIXUAN_B_PARA[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_B_PARA[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_B_PARA[n][1] <<= 8; MFL_PARA_A.ZIXUAN_B_PARA[n][1] += (u16)para_data_temp[x++]; temp = (u16)para_data_temp[x++]; temp <<= 8; temp += (u16)para_data_temp[x++]; MFL_PARA_A.ZIXUAN_B_PARA[n][2] = temp / 1000; MFL_PARA_A.ZIXUAN_B_PARA[n][3] = temp % 1000; MFL_PARA_A.ZIXUAN_B_PARA[n][4] = MFL_PARA_A.ZIXUAN_B_PARA[n][3] / 100; MFL_PARA_A.ZIXUAN_B_PARA[n][5] = MFL_PARA_A.ZIXUAN_B_PARA[n][3] % 100; } } else { //自选B for (n = 0; n < 10; n++) { MFL_PARA_A.ZIXUAN_B_PARA[n][0] = MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 0]; MFL_PARA_A.ZIXUAN_B_PARA[n][1] = MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 1]; MFL_PARA_A.ZIXUAN_B_PARA[n][2] = MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 2]; MFL_PARA_A.ZIXUAN_B_PARA[n][3] = MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 3]; } } ///////////////////////////////////////////////////////////////////////////////////////// //校准参数初始化 n = JIAOZHUN_PARA_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = JIAOZHUN_PARA_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 15; n++) { MFL_PARA_A.CALIBRATION[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.CALIBRATION[n][0] <<= 8; MFL_PARA_A.CALIBRATION[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.CALIBRATION[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.CALIBRATION[n][1] <<= 8; MFL_PARA_A.CALIBRATION[n][1] += (u16)para_data_temp[x++]; } } else { //校准参数初始化 for (n = 0; n < 15; n++) { MFL_PARA_A.CALIBRATION[n][0] = MFL_CALIBRATION_INIT_DATA[n * 2 + 0]; MFL_PARA_A.CALIBRATION[n][1] = MFL_CALIBRATION_INIT_DATA[n * 2 + 1]; } } ///////////////////////////////////////////////////////////////////////////////////////// //PID参数初始化 n = PID_PARA_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = PID_PARA_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 10; n++) { MFL_PARA_A.PID_PARA[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][0] <<= 8; MFL_PARA_A.PID_PARA[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][1] <<= 8; MFL_PARA_A.PID_PARA[n][1] += (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][2] = (u16)para_data_temp[x++]; MFL_PARA_A.PID_PARA[n][2] <<= 8; MFL_PARA_A.PID_PARA[n][2] += (u16)para_data_temp[x++]; } } else { //PID参数初始化 for (n = 0; n < 10; n++) { MFL_PARA_A.PID_PARA[n][0] = MFL_PID_INIT_DATA[n * 3 + 0]; MFL_PARA_A.PID_PARA[n][1] = MFL_PID_INIT_DATA[n * 3 + 1]; MFL_PARA_A.PID_PARA[n][2] = MFL_PID_INIT_DATA[n * 3 + 2]; } } ///////////////////////////////////////////////////////////////////////////////////////// //用户参数初始化 n = USER_PARA_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = USER_PARA_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 4; n++) { MFL_PARA_A.USER_DATA[n] = (u16)para_data_temp[x++]; MFL_PARA_A.USER_DATA[n] <<= 8; MFL_PARA_A.USER_DATA[n] += (u16)para_data_temp[x++]; } } else { //用户参数初始化 for (n = 0; n < 4; n++) { MFL_PARA_A.USER_DATA[n] = MFL_USER_INIT_DATA[n]; } } ///////////////////////////////////////////////////////////////////////////////////////// //系统参数初始化 n = SYSTEM_PARA_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n] = eeprom_data_temp[n]; n = SYSTEM_PARA_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) para_data_temp[n + 32] = eeprom_data_temp[n]; if (para_data_temp[63] == DATA_SET_FLAG) { x = 0; for (n = 0; n < 10; n++) { MFL_PARA_A.EQUIPMENT_PARA[n][0] = (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][0] <<= 8; MFL_PARA_A.EQUIPMENT_PARA[n][0] += (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][1] = (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][1] <<= 8; MFL_PARA_A.EQUIPMENT_PARA[n][1] += (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][2] = (u16)para_data_temp[x++]; MFL_PARA_A.EQUIPMENT_PARA[n][2] <<= 8; MFL_PARA_A.EQUIPMENT_PARA[n][2] += (u16)para_data_temp[x++]; } } else { //系统参数默认值 for (n = 0; n < 10; n++) { MFL_PARA_A.EQUIPMENT_PARA[n][0] = MFL_EQUIPMENT_INIT_DATA[n * 3 + 0]; MFL_PARA_A.EQUIPMENT_PARA[n][1] = MFL_EQUIPMENT_INIT_DATA[n * 3 + 1]; MFL_PARA_A.EQUIPMENT_PARA[n][2] = MFL_EQUIPMENT_INIT_DATA[n * 3 + 2]; } } ///////////////////////////////////////////////////////////////////////////////////////// //ADC调试参数初始化 n = ADC_CALC_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); x = 0; if (eeprom_data_temp[31] == DATA_SET_FLAG) { MFL_PARA_A.ads1220_ch23_init_data = (u32)eeprom_data_temp[x++]; MFL_PARA_A.ads1220_ch23_init_data <<= 8; MFL_PARA_A.ads1220_ch23_init_data += (u32)eeprom_data_temp[x++]; MFL_PARA_A.ads1220_ch23_init_data <<= 8; MFL_PARA_A.ads1220_ch23_init_data += (u32)eeprom_data_temp[x++]; MFL_PARA_A.ads1220_ch23_init_data <<= 8; MFL_PARA_A.ads1220_ch23_init_data += (u32)eeprom_data_temp[x++]; MFL_PARA_A.board_temp_init_data = eeprom_data_temp[x++]; if (MFL_PARA_A.board_temp_init_data > 199) MFL_PARA_A.board_temp_init_data = 199; } else { MFL_PARA_A.ads1220_ch23_init_data = 0x800000; MFL_PARA_A.board_temp_init_data = 100; } ///////////////////////////////////////////////////////////////////////////////////////// //预约参数初始化 n = YUYUE_PARA_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); x = 0; if (eeprom_data_temp[31] == DATA_SET_FLAG) { MFL_PARA_A.YUYUE_TIME_SET = (u16)eeprom_data_temp[x++]; MFL_PARA_A.YUYUE_TIME_SET <<= 8; MFL_PARA_A.YUYUE_TIME_SET += (u16)eeprom_data_temp[x++]; if (MFL_PARA_A.YUYUE_TIME_SET >= 0x2400) MFL_PARA_A.YUYUE_TIME_SET = 0x800; MFL_PARA_A.YUYUE_TEMP_SET = (u16)eeprom_data_temp[x++]; MFL_PARA_A.YUYUE_TEMP_SET <<= 8; MFL_PARA_A.YUYUE_TEMP_SET += (u16)eeprom_data_temp[x++]; if (MFL_PARA_A.YUYUE_TEMP_SET > 999) MFL_PARA_A.YUYUE_TEMP_SET = 920; } else { MFL_PARA_A.YUYUE_TIME_SET = 0x800; MFL_PARA_A.YUYUE_TEMP_SET = 920; } ///////////////////////////////////////////////////////////////////////////////////////// //菜单选择保存值初始化 MFL_PARA_A.menu_select_post = eeprom_24c64_read_byte(MENU_SELECT_VALUE_ADD); ///////////////////////////////////////////////////////////////////////////////////////// //电压检测最大值初始化 n = POWER_VOL_MAX_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); if (eeprom_data_temp[31] == DATA_SET_FLAG) { TEST_VOLTAGE_MAX = (u16)eeprom_data_temp[7]; TEST_VOLTAGE_MAX <<= 8; TEST_VOLTAGE_MAX += (u16)eeprom_data_temp[8]; } else { TEST_VOLTAGE_MAX = 0; } ///////////////////////////////////////////////////////////////////////////////////////// //电压检测最小值初始化 n = POWER_VOL_MIN_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); if (eeprom_data_temp[31] == DATA_SET_FLAG) { TEST_VOLTAGE_MIN = (u16)eeprom_data_temp[7]; TEST_VOLTAGE_MIN <<= 8; TEST_VOLTAGE_MIN += (u16)eeprom_data_temp[8]; } else { TEST_VOLTAGE_MIN = 0xFFFF; } ///////////////////////////////////////////////////////////////////////////////////////// //电流检测最大值初始化 n = POWER_CUR_MAX_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); if (eeprom_data_temp[31] == DATA_SET_FLAG) { TEST_CURRENT_MAX = (u16)eeprom_data_temp[9]; TEST_CURRENT_MAX <<= 8; TEST_CURRENT_MAX += (u16)eeprom_data_temp[10]; } else { TEST_CURRENT_MAX = 0; } ///////////////////////////////////////////////////////////////////////////////////////// //电压检测最小值初始化 n = POWER_CUR_MIN_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); if (eeprom_data_temp[31] == DATA_SET_FLAG) { TEST_CURRENT_MIN = (u16)eeprom_data_temp[9]; TEST_CURRENT_MIN <<= 8; TEST_CURRENT_MIN += (u16)eeprom_data_temp[10]; } else { TEST_VOLTAGE_MIN = 0xFFFF; } } //温度美化,待显示的温度值,目标温度值,美化程度 u32 temp_calc_value_MH (u32 temp, u32 target_temp, u32 meihua_range) { u32 a; a = temp; //计算美化结果 if ((meihua_range > 0) && (meihua_range < 10)) { if (temp > target_temp) { a = (temp - target_temp) / meihua_range; a += target_temp; } else { a = (target_temp - temp) / meihua_range; a = target_temp - a; } } return a; } //温度平滑处理,实际的温度值,当前美化后的温度值 u32 temp_value_filter_MH (void) { if (MFL_PARA_A.TEMP_DIS_MH < MFL_PARA_A.TEMP_DIS) MFL_PARA_A.TEMP_DIS_MH++; else if (MFL_PARA_A.TEMP_DIS_MH > MFL_PARA_A.TEMP_DIS) MFL_PARA_A.TEMP_DIS_MH--; return MFL_PARA_A.TEMP_DIS_MH; } //温度显示函数 void temp_dis_lcd (u8 x, u8 y, u32 temp) { u32 z, a; u8 flag; flag = 0; a = temp; lcd_post (x, y); z = a / 1000; if ((z == 0) && (flag == 0)) { if (MFL_PARA_A.temp_bipolar_flag == 0) lcd_display (' '); else lcd_display ('-'); } else { lcd_display (z + 0x30); flag = 1; } a -= z * 1000; z = a / 100; if ((z == 0) && (flag == 0)) { lcd_display (' '); } else { lcd_display (z + 0x30); flag = 1; } a -= z * 100; z = a / 10; if ((z == 0) && (flag == 0)) { lcd_display (' '); } else { lcd_display (z + 0x30); flag = 1; } a -= z * 10; z = a; lcd_display (z + 0x30); //display board temperature /*lcd_display (' '); a=MFL_PARA_A.adc_BoardTemp_data; z=a/1000; lcd_display (z+0x30); a-=z*1000; z=a/100; lcd_display (z+0x30); a-=z*100; z=a/10; lcd_display (z+0x30); a-=z*10; z=a; lcd_display (z+0x30); //display thermo voltage lcd_display (' '); a=MFL_PARA_A.adc_Thermo_data; z=a/1000; lcd_display (z+0x30); a-=z*1000; z=a/100; lcd_display (z+0x30); a-=z*100; z=a/10; lcd_display (z+0x30); a-=z*10; z=a; lcd_display (z+0x30);*/ } //温度显示函数 void temp_dis_lcd_3 (u8 x, u8 y, u32 temp) { u32 z, a, b, c; u8 flag; flag = 0; z = temp; lcd_post (x, y); if (z > 999) { lcd_display ('-'); lcd_display ('-'); lcd_display ('-'); } else { a = z / 100; z -= a * 100; b = z / 10; z -= b * 10; c = z; if (a == 0) { a = 0x20; if (b == 0) b = 0x20; else b += 0x30; } else { a += 0x30; b += 0x30; } c += 0x30; lcd_display (a); lcd_display (b); lcd_display (c); } } //温度显示函数 void temp_dis_lcd_4 (u8 x, u8 y, u32 temp) { u32 z, a, b, c, d; u8 flag; flag = 0; z = temp; lcd_post (x, y); if (z > 9999) { lcd_display ('-'); lcd_display ('-'); lcd_display ('-'); lcd_display ('-'); } else { a = z / 1000; z -= a * 1000; b = z / 100; z -= b * 100; c = z / 10; z -= c * 10; d = z; if (a == 0) { a = 0x20; if (b == 0) { b = 0x20; if (c == 0) c = 0x20; else c += 0x30; } else { b += 0x30; c += 0x30; } } else { a += 0x30; b += 0x30; c += 0x30; } d += 0x30; lcd_display (a); lcd_display (b); lcd_display (c); lcd_display (d); } } //时间显示函数 void time_dis_lcd (u8 x, u8 y, u32 temp) { u32 z; lcd_post (x, y); z = temp / 36000; lcd_display (z + 0x30); temp -= z * 36000; z = temp / 3600; lcd_display (z + 0x30); temp -= z * 3600; lcd_display ('-'); z = temp / 600; lcd_display (z + 0x30); temp -= z * 600; z = temp / 60; lcd_display (z + 0x30); temp -= z * 60; lcd_display ('-'); z = temp / 10; lcd_display (z + 0x30); temp -= z * 10; z = temp; lcd_display (z + 0x30); } //时间温度显示函数 void time_temp_dis_lcd (u8 x, u8 y, u8 *p, u16 temp) { u32 z; u16 a, b, c, d; lcd_post (x, y); lcd_display ((((*(p + 2)) >> 4) & 0x03) + 0x30); lcd_display (((*(p + 2)) & 0x0f) + 0x30); lcd_display (':'); lcd_display ((((*(p + 1)) >> 4) & 0x07) + 0x30); lcd_display (((*(p + 1)) & 0x0f) + 0x30); lcd_display (' '); lcd_display ('/'); a = temp; if (a > 999) a = 999; b = a / 100; a -= b * 100; c = a / 10; a -= c * 10; d = a; lcd_display (' '); if (b == 0) lcd_display (' '); else lcd_display (b + 0x30); if ((b == 0) && (c == 0)) lcd_display (' '); else lcd_display (c + 0x30); lcd_display (d + 0x30); } //时间温度设置显示函数 void time_temp_set_lcd (u8 x, u8 y, u8 *p) { lcd_post (x, y); lcd_display (*(p + 0) + 0x30); lcd_display (*(p + 1) + 0x30); lcd_display (':'); lcd_display (*(p + 2) + 0x30); lcd_display (*(p + 3) + 0x30); lcd_display (' '); lcd_display ('/'); lcd_display (' '); lcd_display (*(p + 4) + 0x30); lcd_display (*(p + 5) + 0x30); lcd_display (*(p + 6) + 0x30); } //时间设置显示函数,秒分时日星月年 void time_set_dis_lcd (u8 x, u8 y, u8 *p) { lcd_post (x, y); lcd_display (*(p + 0) + 0x30); lcd_display (*(p + 1) + 0x30); lcd_display ('-'); lcd_display (*(p + 2) + 0x30); lcd_display (*(p + 3) + 0x30); lcd_display ('-'); lcd_display (*(p + 4) + 0x30); lcd_display (*(p + 5) + 0x30); lcd_display (' '); lcd_display (*(p + 6) + 0x30); lcd_display (*(p + 7) + 0x30); lcd_display (':'); lcd_display (*(p + 8) + 0x30); lcd_display (*(p + 9) + 0x30); lcd_display (':'); lcd_display (*(p + 10) + 0x30); lcd_display (*(p + 11) + 0x30); } //炉门控制函数,post目标位置 void MoveStove (u8 post) { MFL_PARA_A.MOVE_TIME_SEC_FLAG = 0; //停止时间计数 MFL_PARA_A.MOVE_TIME = 0; MFL_PARA_A.MOVE_TIME_SET = 0xffff; if (post == posAllOpen) { if (MFL_PARA_A.POST_OPEN == 0) { //MOTER_CW; //正转 ////MOTER_ON; MFL_PARA_A.RELAY_DELAY_EN = 1; MFL_PARA_A.RELAY_DELAY = RELAY_DELAY_NUM_DEF; } } else if (post == posAllClose) { if (MFL_PARA_A.POST_CLOSE == 0) { //MOTER_CCW; //反转 ////MOTER_ON; MFL_PARA_A.RELAY_DELAY_EN = 1; MFL_PARA_A.RELAY_DELAY = RELAY_DELAY_NUM_DEF; } } MFL_PARA_A.POST_SET = post; } //炉门控制函数,用时间控制 void MoveStove_Time (u16 time) { //MOTER_CCW; //反转 MFL_PARA_A.RELAY_DELAY_EN = 1; MFL_PARA_A.RELAY_DELAY = RELAY_DELAY_NUM_DEF; MFL_PARA_A.MOVE_TIME_SEC_FLAG = 0; //停止时间计数 MFL_PARA_A.MOVE_TIME = 0; MFL_PARA_A.POST_SET = posNone; MFL_PARA_A.MOVE_TIME_SET = time; } //Bresenham's integer line 温度校准 void Bresenham_Temp_Calibrate (void) { u16 x1, y1, x2, y2, n, z; if (MFL_PARA_A.CALIBRATION[0][0] == 0) //校准数据不存在,默认1:1 { for (n = 0; n < 1373; n++) MFL_PARA_A.CALIBRATION_TEMP[n] = n; } else { x1 = 0; x2 = MFL_PARA_A.CALIBRATION[0][0]; //从0度开始校准 y1 = 0; y2 = MFL_PARA_A.CALIBRATION[0][1]; for (n = x1; n < x2; n++) { if (x2 != x1) MFL_PARA_A.CALIBRATION_TEMP[n] = (y2 - y1) * (n - x1) / (x2 - x1) + y1; } for (z = 0; z < 14; z++) { if ((MFL_PARA_A.CALIBRATION[z][0] == 0) || (MFL_PARA_A.CALIBRATION[z][1] == 0)) //无效数据,结束校正 break; else { x1 = MFL_PARA_A.CALIBRATION[z][0]; x2 = MFL_PARA_A.CALIBRATION[z + 1][0]; y1 = MFL_PARA_A.CALIBRATION[z][1]; y2 = MFL_PARA_A.CALIBRATION[z + 1][1]; for (n = x1; n < x2; n++) { if (x2 != x1) MFL_PARA_A.CALIBRATION_TEMP[n] = (y2 - y1) * (n - x1) / (x2 - x1) + y1; } } } for (; n < 1373; n++) { if (x2 != x1) MFL_PARA_A.CALIBRATION_TEMP[n] = (y2 - y1) * (n - x1) / (x2 - x1) + y1; } } } //电机位置测试 void test_moter (void) { u8 a, b, c, d; u8 status; lcd_display_string(0, 0, "关门:0 "); lcd_display_string(1, 0, "门缝:0 "); lcd_display_string(2, 0, "半开:0 "); lcd_display_string(3, 0, "开门:0 "); a = 0; b = 0; c = 0; d = 0; MFL_PARA_A.POST_SET = posNone; while (1) { if (MFL_PARA_A.POST_CLOSE != a) { a = MFL_PARA_A.POST_CLOSE; lcd_post (0, 3); lcd_display (a + 0x30); } if (MFL_PARA_A.POST_GAP != b) { b = MFL_PARA_A.POST_GAP; lcd_post (1, 3); lcd_display (b + 0x30); } if (MFL_PARA_A.POST_HALF != c) { c = MFL_PARA_A.POST_HALF; lcd_post (2, 3); lcd_display (c + 0x30); } if (MFL_PARA_A.POST_OPEN != d) { d = MFL_PARA_A.POST_OPEN; lcd_post (3, 3); lcd_display (d + 0x30); } if (KEY_VALUE == KEY_VALUE_LEFT) { //MOTER_CCW; //反转 ////MOTER_ON; if (status == 0) { MFL_PARA_A.RELAY_DELAY_EN = 1; MFL_PARA_A.RELAY_DELAY = RELAY_DELAY_NUM_DEF; status = 1; } } else if (KEY_VALUE == KEY_VALUE_RIGHT) { //MOTER_CW; //正转 ////MOTER_ON; if (status == 0) { MFL_PARA_A.RELAY_DELAY_EN = 1; MFL_PARA_A.RELAY_DELAY = RELAY_DELAY_NUM_DEF; status = 1; } } else if (KEY_VALUE == KEY_VALUE_NONE) { //MOTER_OFF; status = 0; } } } //限位测试 void test_post (void) { while (1) { if (KEY_VALUE == KEY_VALUE_LEFT) { KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.POST_CLOSE != 1) { MFL_PARA_A.POST_SET = posAllClose; //MOTER_CCW; //反转 MFL_PARA_A.RELAY_DELAY_EN = 1; MFL_PARA_A.RELAY_DELAY = RELAY_DELAY_NUM_DEF; } } else if (KEY_VALUE == KEY_VALUE_RIGHT) { KEY_VALUE = KEY_VALUE_NONE; if (MFL_PARA_A.POST_GAP != 1) { MFL_PARA_A.POST_SET = posMenFeng; //MOTER_CW; //正转 MFL_PARA_A.RELAY_DELAY_EN = 1; MFL_PARA_A.RELAY_DELAY = RELAY_DELAY_NUM_DEF; } } } } //蜂鸣器控制 void Beep_Set (u16 x, u16 y, u16 num) { BEEP_HIGH_TIME = x * 20; BEEP_NUM = num; BEEP_CYC_TIME = BEEP_HIGH_TIME + y * 20; BEEP_CYC_TIME_NUM = 0; } //显示电压电流极值 void power_detect_data_display (u8 x, u8 y, u16 address) { u16 a, b, c, temp, n; u8 eeprom_data_temp[32]; //M24C64为32个字节一个page n = address; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); lcd_post (x, y); if (eeprom_data_temp[31] == DATA_SET_FLAG) { lcd_display (':'); lcd_display (((eeprom_data_temp[6] & 0xff) >> 4) + 0x30); lcd_display (((eeprom_data_temp[6] & 0xff) & 0x0f) + 0x30); lcd_display (((eeprom_data_temp[5] & 0x1f) >> 4) + 0x30); lcd_display (((eeprom_data_temp[5] & 0x1f) & 0x0f) + 0x30); lcd_display (((eeprom_data_temp[3] & 0x3f) >> 4) + 0x30); lcd_display (((eeprom_data_temp[3] & 0x3f) & 0x0f) + 0x30); lcd_display (((eeprom_data_temp[2] & 0x3f) >> 4) + 0x30); lcd_display (((eeprom_data_temp[2] & 0x3f) & 0x0f) + 0x30); lcd_display (((eeprom_data_temp[1] & 0x7f) >> 4) + 0x30); lcd_display (((eeprom_data_temp[1] & 0x7f) & 0x0f) + 0x30); lcd_display (((eeprom_data_temp[0] & 0x7f) >> 4) + 0x30); lcd_display (((eeprom_data_temp[0] & 0x7f) & 0x0f) + 0x30); lcd_display ('-'); temp = (u16)(eeprom_data_temp[7]); temp <<= 8; temp += (u16)(eeprom_data_temp[8]); temp /= 10; a = temp / 100; temp -= a * 100; b = temp / 10; temp -= b * 10; c = temp; lcd_display (a + 0x30); lcd_display (b + 0x30); lcd_display (c + 0x30); lcd_display ('V'); temp = (u16)(eeprom_data_temp[9]); temp <<= 8; temp += (u16)(eeprom_data_temp[10]); temp /= 10; a = temp / 100; temp -= a * 100; b = temp / 10; temp -= b * 10; c = temp; lcd_display (a + 0x30); lcd_display (b + 0x30); lcd_display (c + 0x30); lcd_display ('A'); } else { lcd_display_string(x, y, ":************-***V***A"); } } //保存电压极值 void power_detect_data_save (u16 address, u16 voltage, u16 current, u8 *date_temp) { u16 n; u8 eeprom_data_temp[32]; //M24C64为32个字节一个page n = 0; //copy date eeprom_data_temp[n] = *(date_temp + n); n++; eeprom_data_temp[n] = *(date_temp + n); n++; eeprom_data_temp[n] = *(date_temp + n); n++; eeprom_data_temp[n] = *(date_temp + n); n++; eeprom_data_temp[n] = *(date_temp + n); n++; eeprom_data_temp[n] = *(date_temp + n); n++; eeprom_data_temp[n] = *(date_temp + n); n++; eeprom_data_temp[n++] = (u8)(voltage >> 8); eeprom_data_temp[n++] = (u8)(voltage); eeprom_data_temp[n++] = (u8)(current >> 8); eeprom_data_temp[n++] = (u8)(current); eeprom_data_temp[31] = DATA_SET_FLAG; n = address; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); } //清除电能参数 void power_detect_data_reset (u16 address) { u16 n; u8 eeprom_data_temp[32]; //M24C64为32个字节一个page for (n = 0; n < 32; n++) eeprom_data_temp[n] = 0; n = address; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); } //恢复出厂设置参数 void system_para_data_reset (void) { u16 x, n; u8 eeprom_data_temp[32]; //M24C64为32个字节一个page u8 para_data_temp[64]; //自选A x = 0; for (n = 0; n < 10; n++) { para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4] >> 8); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4]); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 1] >> 8); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 1]); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 2]); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 3]); } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = ZIXUAN_PARA_A_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = ZIXUAN_PARA_A_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); //自选B x = 0; for (n = 0; n < 10; n++) { para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4] >> 8); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4]); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 1] >> 8); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 1]); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 2]); para_data_temp[x++] = (u8)(MFL_ZIXUAN_PROGRAM_INIT_DATA[n * 4 + 3]); } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = ZIXUAN_PARA_B_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = ZIXUAN_PARA_B_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); //校正系数 x = 0; for (n = 0; n < 30; n++) { para_data_temp[x++] = MFL_CALIBRATION_INIT_DATA[n] >> 8; para_data_temp[x++] = MFL_CALIBRATION_INIT_DATA[n]; } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = JIAOZHUN_PARA_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = JIAOZHUN_PARA_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); //PID控制系数 x = 0; for (n = 0; n < 30; n++) { para_data_temp[x++] = MFL_PID_INIT_DATA[n] >> 8; para_data_temp[x++] = MFL_PID_INIT_DATA[n]; } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = PID_PARA_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = PID_PARA_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); //系统参数////////////////////////////////////////////////////////////////////////// x = 0; for (n = 0; n < 30; n++) { para_data_temp[x++] = MFL_EQUIPMENT_INIT_DATA[n] >> 8; para_data_temp[x++] = MFL_EQUIPMENT_INIT_DATA[n]; } para_data_temp[63] = DATA_SET_FLAG; //先读取参数A块 n = SYSTEM_PARA_BASE; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); //根据MFL_EQUIPMENT_INIT_DATA_ENABLE来决定是否初始化 250503 for (n = 0; n < 16; n++) { if (MFL_EQUIPMENT_INIT_DATA_ENABLE[n]) { eeprom_data_temp[n * 2] = para_data_temp[n * 2]; eeprom_data_temp[n * 2 + 1] = para_data_temp[n * 2 + 1]; } } // //丝杆参数不做初始化 20250327 // for (n=6;n<32;n++) // eeprom_data_temp[n]=para_data_temp[n]; //写入特定参数 n = SYSTEM_PARA_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); //先读取参数B块 n = SYSTEM_PARA_BASE; n++; n <<= 5; eeprom_24c64_read (n, 32, eeprom_data_temp); //根据MFL_EQUIPMENT_INIT_DATA_ENABLE来决定是否初始化 250503 for (n = 0; n < 16; n++) { if (MFL_EQUIPMENT_INIT_DATA_ENABLE[n + 16]) { eeprom_data_temp[n * 2] = para_data_temp[n * 2 + 32]; eeprom_data_temp[n * 2 + 1] = para_data_temp[n * 2 + 33]; } } // //热偶类型参数不做初始化 20250413 // for (n=0;n<24;n++) // eeprom_data_temp[n]=para_data_temp[n+32]; // // for (n=30;n<32;n++) // eeprom_data_temp[n]=para_data_temp[n+32]; n = SYSTEM_PARA_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); //用户参数 x = 0; for (n = 0; n < 4; n++) { para_data_temp[x++] = MFL_USER_INIT_DATA[n] >> 8; para_data_temp[x++] = MFL_USER_INIT_DATA[n]; } para_data_temp[63] = DATA_SET_FLAG; for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n]; n = USER_PARA_BASE; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); for (n = 0; n < 32; n++) eeprom_data_temp[n] = para_data_temp[n + 32]; n = USER_PARA_BASE; n++; n <<= 5; eeprom_24c64_write (n, 32, eeprom_data_temp); eeprom_24c64_write_byte(MENU_SELECT_VALUE_ADD, 0); } //调试模式保存参数 void debug_data_save (u8 board_temp_init, u32 adc_data_init) { u8 para_data_temp[32]; u16 n; u32 temp; temp = adc_data_init; temp &= 0xffffff; n = 0; para_data_temp[n++] = (u8)(temp >> 24); para_data_temp[n++] = (u8)(temp >> 16); para_data_temp[n++] = (u8)(temp >> 8); para_data_temp[n++] = (u8)(temp); para_data_temp[n++] = board_temp_init; para_data_temp[31] = DATA_SET_FLAG; n = ADC_CALC_BASE; n <<= 5; eeprom_24c64_write (n, 32, para_data_temp); } //调试模式下固定参数显示 void debug_fix_data_display (u8 board_temp_init, u32 adc_data_init, u32 com_vol_init) { u32 sum, num; u16 temp; u8 x, a, b; //显示补偿温度,0.1℃ lcd_post (1, 5); x = board_temp_init; if (x >= 100) { x -= 100; lcd_display ('+'); } else { x = 100 - x; lcd_display ('-'); } a = x / 10; b = x - a * 10; lcd_display (a + 0x30); lcd_display ('.'); lcd_display (b + 0x30); //显示ADC初始化值 lcd_post (2, 5); sum = adc_data_init; sum &= 0xffffff; temp = (u16)(sum >> 20); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 16); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 12); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 8); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 4); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 0); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); //显示比较电压设定值 lcd_post (3, 5); sum = com_vol_init; if (sum >= 2500) sum = 2500; num = sum / 1000; sum -= num * 1000; lcd_display ((u16)(num) + 0x30); num = sum / 100; sum -= num * 100; lcd_display ((u16)(num) + 0x30); num = sum / 10; sum -= num * 10; lcd_display ((u16)(num) + 0x30); num = sum; lcd_display ((u16)(num) + 0x30); } //调试模式下变化参数显示 void debug_com_data_display (u32 board_temp, u32 adc_data, u32 com_vol_data) { u32 sum, num; u16 temp, a, b, c; //显示板载温度,0.1℃ lcd_post (1, 9); sum = board_temp; //sum*=3300; //sum>>=12; if (sum >= 500) sum -= 500; else sum = 0; a = sum / 100; sum -= a * 100; b = sum / 10; sum -= b * 10; c = sum; if (a != 0) lcd_display (a + 0x30); else lcd_display (' '); lcd_display (b + 0x30); lcd_display ('.'); lcd_display (c + 0x30); //显示ADC当前值 lcd_post (2, 9); sum = adc_data; sum &= 0xffffff; temp = (u16)(sum >> 20); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 16); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 12); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 8); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 4); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); temp = (u16)(sum >> 0); temp &= 0x0f; if (temp < 10) lcd_display (temp + 0x30); else lcd_display (temp + 0x37); //显示比较电压采集值 lcd_post (3, 9); sum = com_vol_data; if (sum >= 2500) sum = 2500; num = sum / 1000; sum -= num * 1000; lcd_display ((u16)(num) + 0x30); num = sum / 100; sum -= num * 100; lcd_display ((u16)(num) + 0x30); num = sum / 10; sum -= num * 10; lcd_display ((u16)(num) + 0x30); num = sum; lcd_display ((u16)(num) + 0x30); } //UART1_SEND void Uart1_BTcom_Send (u8 send_data_lenth) { DMA_Cmd(DMA1_Channel4, DISABLE); DMA1_Channel4->CNDTR = send_data_lenth; DMA_Cmd(DMA1_Channel4, ENABLE); } //UART_RECEVIE void Uart1_BTcom_Recevie_Init (void) { Uart1_BTcom.UART_RXD_FINISH = 0; Uart1_BTcom.UART_RXD_EN = 0; Uart1_BTcom.UART_RXD_LENTH = 0; } //UART_SEND void Uart3_Debug_Send (u8 send_data_lenth) { DMA_Cmd(DMA1_Channel2, DISABLE); DMA1_Channel2->CNDTR = send_data_lenth; DMA_Cmd(DMA1_Channel2, ENABLE); } //UART_RECEVIE void Uart3_Debug_Recevie_Init (void) { Uart3_Debug.UART_RXD_FINISH = 0; Uart3_Debug.UART_RXD_EN = 0; Uart3_Debug.UART_RXD_LENTH = 0; }