096111e983
.claude/ 제외(.gitignore 추가). 기존 초기커밋(5a96a69) 위에 신규·수정·이동분 커밋.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
987 lines
18 KiB
C
987 lines
18 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdint.h>
|
|
#include "Nano100Series.h"
|
|
#include "adc.h"
|
|
#include "gpio.h"
|
|
#include "pwm.h"
|
|
#include "timer.h"
|
|
#include "uart.h"
|
|
#include "sys.h"
|
|
#include "clk.h"
|
|
#include "EEPROM_Emulate.h"
|
|
|
|
|
|
#include "My_define.h"
|
|
|
|
|
|
|
|
void Initial_Signal();
|
|
void Disp_Segdata(uint8_t Sel, uint8_t digit4, uint8_t digit3, uint8_t digit2, uint8_t digit1);
|
|
void Led_OnOff(uint8_t kind, uint8_t onoff);
|
|
|
|
|
|
uint8_t Font_Data[18]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x67,\
|
|
0x80, 0x58, 0x79, 0x40, 0x00, 0x50, 0x77, 0x5E };
|
|
// . , c , E , - , ' ' , r , A , d
|
|
uint8_t seg_data[4][14];
|
|
|
|
|
|
|
|
#define A_DATA PA4
|
|
#define A_CLK PA3
|
|
#define A_STB PA2
|
|
|
|
#define B_DATA PA13
|
|
#define B_CLK PA14
|
|
#define B_STB PA15
|
|
|
|
#define C_DATA PC9
|
|
#define C_CLK PC10
|
|
#define C_STB PC11
|
|
|
|
#define D_DATA PD15
|
|
#define D_CLK PD14
|
|
#define D_STB PD7
|
|
|
|
|
|
|
|
|
|
void Initial_Signal()
|
|
{
|
|
uint8_t i;
|
|
|
|
A_CLK = 1;B_CLK = 1;C_CLK = 1;D_CLK = 1;
|
|
A_STB = 1;B_STB = 1;C_STB = 1;D_STB = 1;
|
|
|
|
|
|
for(i=0; i<8; i++) //command 1 (#0000_0001B) -> 5grid 8seg
|
|
{
|
|
A_STB = 0;B_STB = 0;C_STB = 0;D_STB = 0;
|
|
A_CLK = 0;B_CLK = 0;C_CLK = 0;D_CLK = 0;
|
|
if(i==0)
|
|
{
|
|
A_DATA = 1;B_DATA = 1;C_DATA = 1;D_DATA = 1;
|
|
}
|
|
else
|
|
{
|
|
A_DATA = 0;B_DATA = 0;C_DATA = 0;D_DATA = 0;
|
|
}
|
|
A_CLK = 1;B_CLK = 1;C_CLK = 1;D_CLK = 1;
|
|
}
|
|
A_STB = 1;B_STB = 1;C_STB = 1;D_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 2 (#0100_0000B)
|
|
{
|
|
A_STB = 0;B_STB = 0;C_STB = 0;D_STB = 0;
|
|
A_CLK = 0;B_CLK = 0;C_CLK = 0;D_CLK = 0;
|
|
if(i==6)
|
|
{
|
|
A_DATA = 1;B_DATA = 1;C_DATA = 1;D_DATA = 1;
|
|
}
|
|
else
|
|
{
|
|
A_DATA = 0;B_DATA = 0;C_DATA = 0;D_DATA = 0;
|
|
}
|
|
A_CLK = 1;B_CLK = 1;C_CLK = 1;D_CLK = 1;
|
|
}
|
|
A_STB = 1;B_STB = 1;C_STB = 1;D_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 3 (#1100_0000B)
|
|
{
|
|
A_STB = 0;B_STB = 0;C_STB = 0;D_STB = 0;
|
|
A_CLK = 0;B_CLK = 0;C_CLK = 0;D_CLK = 0;
|
|
if(i==6 || i==7)
|
|
{
|
|
A_DATA = 1;B_DATA = 1;C_DATA = 1;D_DATA = 1;
|
|
}
|
|
else
|
|
{
|
|
A_DATA = 0;B_DATA = 0;C_DATA = 0;D_DATA = 0;
|
|
}
|
|
A_CLK = 1;B_CLK = 1;C_CLK = 1;D_CLK = 1;
|
|
}
|
|
// A_STB = 1;B_STB = 1;C_STB = 1;D_STB = 1;
|
|
|
|
for(i=0; i<112; i++) //data
|
|
{
|
|
A_STB = 0;B_STB = 0;C_STB = 0;D_STB = 0;
|
|
A_CLK = 0;B_CLK = 0;C_CLK = 0;D_CLK = 0;
|
|
A_DATA = 0;B_DATA = 0;C_DATA = 0;D_DATA = 0;
|
|
A_CLK = 1;B_CLK = 1;C_CLK = 1;D_CLK = 1;
|
|
}
|
|
A_STB = 1;B_STB = 1;C_STB = 1;D_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 4 (#1000_0100B)
|
|
{
|
|
A_STB = 0;B_STB = 0;C_STB = 0;D_STB = 0;
|
|
A_CLK = 0;B_CLK = 0;C_CLK = 0;D_CLK = 0;
|
|
if(i==3 || i==7)
|
|
{
|
|
A_DATA = 1;B_DATA = 1;C_DATA = 1;D_DATA = 1;
|
|
}
|
|
else
|
|
{
|
|
A_DATA = 0;B_DATA = 0;C_DATA = 0;D_DATA = 0;
|
|
}
|
|
A_CLK = 1;B_CLK = 1;C_CLK = 1;D_CLK = 1;
|
|
}
|
|
A_STB = 1;B_STB = 1;C_STB = 1;D_STB = 1;
|
|
}
|
|
|
|
uint16_t one_sec = 0;
|
|
extern uint8_t Tmperature_Error;
|
|
|
|
void Disp_Segdata(uint8_t Sel, uint8_t digit4, uint8_t digit3, uint8_t digit2, uint8_t digit1)
|
|
{
|
|
|
|
seg_data[Sel][0] = Font_Data[digit4];
|
|
seg_data[Sel][1] = Font_Data[digit4]>>3;
|
|
|
|
seg_data[Sel][2] = Font_Data[digit3];
|
|
seg_data[Sel][3] = Font_Data[digit3]>>3;
|
|
|
|
seg_data[Sel][4] = Font_Data[digit2];
|
|
seg_data[Sel][5] = Font_Data[digit2]>>3;
|
|
|
|
seg_data[Sel][6] = Font_Data[digit1];
|
|
seg_data[Sel][7] = Font_Data[digit1]>>3;
|
|
|
|
}
|
|
|
|
enum{
|
|
K_VENT,
|
|
K_AUTO,
|
|
K_AIR,
|
|
K_WIND1,
|
|
K_WIND2,
|
|
K_WIND3,
|
|
K_WIND4,
|
|
K_WIND5,
|
|
K_PM25_1,
|
|
K_PM25_2,
|
|
K_PM25_4,
|
|
K_PM25_3,
|
|
|
|
K_PM10_1,
|
|
K_PM10_2,
|
|
K_PM10_4,
|
|
K_PM10_3,
|
|
|
|
K_TIME_1,
|
|
K_TIME_4,
|
|
K_TIME_8,
|
|
K_LOCK,
|
|
|
|
K_JUMKEOM,
|
|
K_FILTER_CLEAN,
|
|
K_FILTER_CHANGE,
|
|
K_EXTRA1,
|
|
|
|
K_CO2_1,
|
|
K_CO2_2,
|
|
K_CO2_4,
|
|
K_CO2_3,
|
|
|
|
K_SOJA_CLEAN,
|
|
K_SOJA_CHANGE,
|
|
K_IOT,
|
|
K_EXTRA2,
|
|
|
|
};
|
|
|
|
|
|
|
|
void Led_OnOff(uint8_t kind, uint8_t onoff)
|
|
{
|
|
if(onoff == 1)
|
|
{
|
|
if(kind < 6)
|
|
{
|
|
seg_data[3][0] |= 0x01<<kind;
|
|
}
|
|
else if(kind < 8)
|
|
{
|
|
seg_data[3][1] |= 0x01<<(kind-3);
|
|
}
|
|
else if(kind < 14)
|
|
{
|
|
seg_data[3][2] |= 0x01<<(kind-8);
|
|
}
|
|
else if(kind < 16)
|
|
{
|
|
seg_data[3][3] |=0x01<<(kind-8-3);
|
|
}
|
|
else if(kind < 22)
|
|
{
|
|
seg_data[3][4] |= 0x01<<(kind-16);
|
|
}
|
|
else if(kind < 24)
|
|
{
|
|
seg_data[3][5] |=0x01<<(kind-16-3);
|
|
}
|
|
else if(kind < 30)
|
|
{
|
|
seg_data[3][6] |= 0x01<<(kind-24);
|
|
}
|
|
else if(kind < 32)
|
|
{
|
|
seg_data[3][7] |=0x01<<(kind-24-3);
|
|
}
|
|
else // all on
|
|
{
|
|
seg_data[3][0] = 0xFF;
|
|
seg_data[3][1] = 0xFF;
|
|
seg_data[3][2] = 0xFF;
|
|
seg_data[3][3] = 0xFF;
|
|
seg_data[3][4] = 0xFF;
|
|
seg_data[3][5] = 0xFF;
|
|
seg_data[3][6] = 0xFF;
|
|
seg_data[3][7] = 0xFF;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(kind < 6)
|
|
{
|
|
seg_data[3][0] &= ~(0x01<<kind);
|
|
}
|
|
else if(kind < 8)
|
|
{
|
|
seg_data[3][1] &= ~(0x01<<(kind-3));
|
|
}
|
|
else if(kind < 14)
|
|
{
|
|
seg_data[3][2] &= ~(0x01<<(kind-8));
|
|
}
|
|
else if(kind < 16)
|
|
{
|
|
seg_data[3][3] &= ~(0x01<<(kind-8-3));
|
|
}
|
|
else if(kind < 22)
|
|
{
|
|
seg_data[3][4] &= ~(0x01<<kind-16);
|
|
}
|
|
else if(kind < 24)
|
|
{
|
|
seg_data[3][5] &= ~(0x01<<(kind-16-3));
|
|
}
|
|
else if(kind < 30)
|
|
{
|
|
seg_data[3][6] &= ~(0x01<<kind-24);
|
|
}
|
|
else if(kind < 32)
|
|
{
|
|
seg_data[3][7] &= ~(0x01<<(kind-24-3));
|
|
}
|
|
else // all off
|
|
{
|
|
seg_data[3][0] = 0;
|
|
seg_data[3][1] = 0;
|
|
seg_data[3][2] = 0;
|
|
seg_data[3][3] = 0;
|
|
seg_data[3][4] = 0;
|
|
seg_data[3][5] = 0;
|
|
seg_data[3][6] = 0;
|
|
seg_data[3][7] = 0;
|
|
} }
|
|
}
|
|
|
|
void Make_A(void)
|
|
{
|
|
uint8_t i,j;
|
|
uint8_t Mask;
|
|
|
|
A_STB = 1;
|
|
A_CLK = 1;
|
|
|
|
for(i=0; i<8; i++) //command 1 (#0000_0011B)
|
|
{
|
|
A_STB = 0;
|
|
A_CLK = 0;
|
|
if( i==0) //5grid, 8segment
|
|
A_DATA = 1;
|
|
else
|
|
A_DATA = 0;
|
|
|
|
A_CLK = 1;
|
|
}
|
|
A_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 2 (#0100_0000B)
|
|
{
|
|
A_STB = 0;
|
|
A_CLK = 0;
|
|
if(i==6) //command2:01
|
|
A_DATA = 1;
|
|
else
|
|
A_DATA = 0;
|
|
|
|
A_CLK = 1;
|
|
}
|
|
A_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 3 (#1100_0000B)
|
|
{
|
|
A_STB = 0;
|
|
A_CLK = 0;
|
|
if(i==6 || i==7)
|
|
A_DATA = 1;
|
|
else
|
|
A_DATA = 0;
|
|
|
|
A_CLK = 1;
|
|
}
|
|
|
|
for(i=0; i<14; i++)
|
|
{
|
|
Mask = 0x01;
|
|
for(j=0; j<8; j++)
|
|
{
|
|
A_STB = 0;
|
|
A_CLK = 0;
|
|
if(seg_data[0][i] & Mask)A_DATA = 1;
|
|
else A_DATA = 0;
|
|
A_CLK = 1;
|
|
Mask <<= 1;
|
|
}
|
|
}
|
|
A_STB = 1;
|
|
|
|
|
|
for(i=0; i<8; i++) //command 4 (#1000_0100B)
|
|
{
|
|
A_STB = 0;
|
|
A_CLK = 0;
|
|
|
|
if(i==0 ||i==1 ||i==2 ||i==3 || i==7) //pulse width=14/16
|
|
A_DATA = 1;
|
|
else
|
|
A_DATA = 0;
|
|
|
|
A_CLK = 1;
|
|
}
|
|
A_STB = 1;
|
|
}
|
|
|
|
|
|
|
|
void Make_B(void)
|
|
{
|
|
uint8_t i,j;
|
|
uint8_t Mask;
|
|
|
|
B_STB = 1;
|
|
B_CLK = 1;
|
|
|
|
for(i=0; i<8; i++) //command 1 (#0000_0011B)
|
|
{
|
|
B_STB = 0;
|
|
B_CLK = 0;
|
|
if( i==0) //5grid, 8segment
|
|
B_DATA = 1;
|
|
else
|
|
B_DATA = 0;
|
|
|
|
B_CLK = 1;
|
|
}
|
|
B_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 2 (#0100_0000B)
|
|
{
|
|
B_STB = 0;
|
|
B_CLK = 0;
|
|
if(i==6) //command2:01
|
|
B_DATA = 1;
|
|
else
|
|
B_DATA = 0;
|
|
|
|
B_CLK = 1;
|
|
}
|
|
B_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 3 (#1100_0000B)
|
|
{
|
|
B_STB = 0;
|
|
B_CLK = 0;
|
|
if(i==6 || i==7)
|
|
B_DATA = 1;
|
|
else
|
|
B_DATA = 0;
|
|
|
|
B_CLK = 1;
|
|
}
|
|
|
|
for(i=0; i<14; i++)
|
|
{
|
|
Mask = 0x01;
|
|
for(j=0; j<8; j++)
|
|
{
|
|
B_STB = 0;
|
|
B_CLK = 0;
|
|
if(seg_data[1][i] & Mask)B_DATA = 1;
|
|
else B_DATA = 0;
|
|
B_CLK = 1;
|
|
Mask <<= 1;
|
|
}
|
|
}
|
|
B_STB = 1;
|
|
|
|
|
|
for(i=0; i<8; i++) //command 4 (#1000_0100B)
|
|
{
|
|
B_STB = 0;
|
|
B_CLK = 0;
|
|
|
|
if(i==0 ||i==1 ||i==2 ||i==3 || i==7) //pulse width=14/16
|
|
B_DATA = 1;
|
|
else
|
|
B_DATA = 0;
|
|
|
|
B_CLK = 1;
|
|
}
|
|
B_STB = 1;
|
|
}
|
|
|
|
|
|
void Make_C(void)
|
|
{
|
|
uint8_t i,j;
|
|
uint8_t Mask;
|
|
|
|
C_STB = 1;
|
|
C_CLK = 1;
|
|
|
|
for(i=0; i<8; i++) //command 1 (#0000_0011B)
|
|
{
|
|
C_STB = 0;
|
|
C_CLK = 0;
|
|
if( i==0) //5grid, 8segment
|
|
C_DATA = 1;
|
|
else
|
|
C_DATA = 0;
|
|
|
|
C_CLK = 1;
|
|
}
|
|
C_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 2 (#0100_0000B)
|
|
{
|
|
C_STB = 0;
|
|
C_CLK = 0;
|
|
if(i==6) //command2:01
|
|
C_DATA = 1;
|
|
else
|
|
C_DATA = 0;
|
|
|
|
C_CLK = 1;
|
|
}
|
|
C_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 3 (#1100_0000B)
|
|
{
|
|
C_STB = 0;
|
|
C_CLK = 0;
|
|
if(i==6 || i==7)
|
|
C_DATA = 1;
|
|
else
|
|
C_DATA = 0;
|
|
|
|
C_CLK = 1;
|
|
}
|
|
|
|
for(i=0; i<14; i++)
|
|
{
|
|
Mask = 0x01;
|
|
for(j=0; j<8; j++)
|
|
{
|
|
C_STB = 0;
|
|
C_CLK = 0;
|
|
if(seg_data[2][i] & Mask)C_DATA = 1;
|
|
else C_DATA = 0;
|
|
C_CLK = 1;
|
|
Mask <<= 1;
|
|
}
|
|
}
|
|
C_STB = 1;
|
|
|
|
|
|
for(i=0; i<8; i++) //command 4 (#1000_0100B)
|
|
{
|
|
C_STB = 0;
|
|
C_CLK = 0;
|
|
|
|
if(i==0 ||i==1 ||i==2 ||i==3 || i==7) //pulse width=14/16
|
|
C_DATA = 1;
|
|
else
|
|
C_DATA = 0;
|
|
|
|
C_CLK = 1;
|
|
}
|
|
C_STB = 1;
|
|
}
|
|
|
|
|
|
void Make_D(void)
|
|
{
|
|
uint8_t i,j;
|
|
uint8_t Mask;
|
|
|
|
D_STB = 1;
|
|
D_CLK = 1;
|
|
|
|
for(i=0; i<8; i++) //command 1 (#0000_0011B)
|
|
{
|
|
D_STB = 0;
|
|
D_CLK = 0;
|
|
if( i==0) //5grid, 8segment
|
|
D_DATA = 1;
|
|
else
|
|
D_DATA = 0;
|
|
|
|
D_CLK = 1;
|
|
}
|
|
D_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 2 (#0100_0000B)
|
|
{
|
|
D_STB = 0;
|
|
D_CLK = 0;
|
|
if(i==6) //command2:01
|
|
D_DATA = 1;
|
|
else
|
|
D_DATA = 0;
|
|
|
|
D_CLK = 1;
|
|
}
|
|
D_STB = 1;
|
|
|
|
for(i=0; i<8; i++) //command 3 (#1100_0000B)
|
|
{
|
|
D_STB = 0;
|
|
D_CLK = 0;
|
|
if(i==6 || i==7)
|
|
D_DATA = 1;
|
|
else
|
|
D_DATA = 0;
|
|
|
|
D_CLK = 1;
|
|
}
|
|
|
|
for(i=0; i<14; i++)
|
|
{
|
|
Mask = 0x01;
|
|
for(j=0; j<8; j++)
|
|
{
|
|
D_STB = 0;
|
|
D_CLK = 0;
|
|
if(seg_data[3][i] & Mask)D_DATA = 1;
|
|
else D_DATA = 0;
|
|
D_CLK = 1;
|
|
Mask <<= 1;
|
|
}
|
|
}
|
|
D_STB = 1;
|
|
|
|
|
|
for(i=0; i<8; i++) //command 4 (#1000_0100B)
|
|
{
|
|
D_STB = 0;
|
|
D_CLK = 0;
|
|
|
|
if(i==0 ||i==1 ||i==2 ||i==3 || i==7) //pulse width=14/16
|
|
D_DATA = 1;
|
|
else
|
|
D_DATA = 0;
|
|
|
|
D_CLK = 1;
|
|
}
|
|
D_STB = 1;
|
|
}
|
|
|
|
extern volatile uint8_t Power_On;
|
|
extern volatile uint8_t Tx_Run_Mode;
|
|
extern volatile uint8_t Tx_Fan_Speed;
|
|
extern volatile uint8_t Tx_Reservation_Hour;
|
|
|
|
extern uint16_t Pm_1_0_value, Pm_2_5_value, Pm_10_value;
|
|
extern uint16_t CO2_Value;
|
|
extern uint8_t CO2_quality;
|
|
extern uint8_t PM2_5_quality;
|
|
extern uint8_t PM10_quality;
|
|
extern uint8_t Kids_Lock;
|
|
extern uint16_t Main_Err_Code;
|
|
extern uint8_t Vsp_Mode;
|
|
extern uint8_t Test_Mode_Step;
|
|
extern uint8_t Test_Mode_Sa_Ea_Sel;
|
|
|
|
extern uint8_t Main_Modbus_ID;
|
|
|
|
extern uint8_t Ventilation_SA[5];
|
|
extern uint8_t Ventilation_EA[5];
|
|
extern uint8_t AirClean_SA[5];
|
|
extern uint8_t AirClean_EA[5];
|
|
extern uint8_t Bypass_SA[5];
|
|
extern uint8_t Bypass_EA[5];
|
|
extern uint16_t SA_rpm, EA_rpm;
|
|
extern uint8_t Wifi_Status;
|
|
|
|
extern uint8_t Blink_Toggle, FastBlink_Toggle;
|
|
|
|
void Display_update(void)
|
|
{
|
|
uint8_t Num_1000, Num_100, Num_10, Num_1;
|
|
uint8_t Tmp_Speed = 0;
|
|
uint16_t Err;
|
|
|
|
if(Vsp_Mode == TX_DATA_MODE_SETTING)
|
|
{
|
|
Led_OnOff(100, 0); // all off
|
|
Disp_Segdata(2, 14, 14, 14, 14); // ALL OFF
|
|
|
|
if((Test_Mode_Step >= 1)&&(Test_Mode_Step <= 5)) // vent
|
|
{
|
|
Led_OnOff(K_VENT, 1);
|
|
|
|
Tmp_Speed = Test_Mode_Step-1;
|
|
|
|
if(Test_Mode_Sa_Ea_Sel == 0)
|
|
{
|
|
Disp_Segdata(0, 14, 5, 16, 14); // " SA "
|
|
Num_10 = Ventilation_SA[Tmp_Speed]%100/10;
|
|
Num_1 = Ventilation_SA[Tmp_Speed]%10;
|
|
Disp_Segdata(1, 14, 14, Num_10, Num_1);
|
|
|
|
Num_1000 = (uint8_t)(SA_rpm%10000/1000);
|
|
Num_100 = (uint8_t)(SA_rpm%1000/100);
|
|
Num_10 = (uint8_t)(SA_rpm%100/10);
|
|
Num_1 = (uint8_t)(SA_rpm%10);
|
|
Disp_Segdata(2, Num_1000, Num_100, Num_10, Num_1);
|
|
}
|
|
else
|
|
{
|
|
Disp_Segdata(0, 14, 12, 16, 14); // " EA "
|
|
Num_10 = Ventilation_EA[Tmp_Speed]%100/10;
|
|
Num_1 = Ventilation_EA[Tmp_Speed]%10;
|
|
Disp_Segdata(1, 14, 14, Num_10, Num_1);
|
|
|
|
Num_1000 = (uint8_t)(EA_rpm%10000/1000);
|
|
Num_100 = (uint8_t)(EA_rpm%1000/100);
|
|
Num_10 = (uint8_t)(EA_rpm%100/10);
|
|
Num_1 = (uint8_t)(EA_rpm%10);
|
|
Disp_Segdata(2, Num_1000, Num_100, Num_10, Num_1);
|
|
}
|
|
}
|
|
else if((Test_Mode_Step >= 6)&&(Test_Mode_Step <= 10)) // air
|
|
{
|
|
Led_OnOff(K_AIR, 1);
|
|
|
|
Tmp_Speed = Test_Mode_Step-6;
|
|
|
|
if(Test_Mode_Sa_Ea_Sel == 0)
|
|
{
|
|
Disp_Segdata(0, 14, 5, 16, 14); // " SA "
|
|
Num_10 = AirClean_SA[Tmp_Speed]%100/10;
|
|
Num_1 = AirClean_SA[Tmp_Speed]%10;
|
|
Disp_Segdata(1, 14, 14, Num_10, Num_1);
|
|
|
|
Num_1000 = (uint8_t)(SA_rpm%10000/1000);
|
|
Num_100 = (uint8_t)(SA_rpm%1000/100);
|
|
Num_10 = (uint8_t)(SA_rpm%100/10);
|
|
Num_1 = (uint8_t)(SA_rpm%10);
|
|
Disp_Segdata(2, Num_1000, Num_100, Num_10, Num_1);
|
|
}
|
|
else
|
|
{
|
|
Disp_Segdata(0, 14, 12, 16, 14); // " EA "
|
|
Num_10 = AirClean_EA[Tmp_Speed]%100/10;
|
|
Num_1 = AirClean_EA[Tmp_Speed]%10;
|
|
Disp_Segdata(1, 14, 14, Num_10, Num_1);
|
|
|
|
Num_1000 = (uint8_t)(EA_rpm%10000/1000);
|
|
Num_100 = (uint8_t)(EA_rpm%1000/100);
|
|
Num_10 = (uint8_t)(EA_rpm%100/10);
|
|
Num_1 = (uint8_t)(EA_rpm%10);
|
|
Disp_Segdata(2, Num_1000, Num_100, Num_10, Num_1);
|
|
}
|
|
}
|
|
switch(Test_Mode_Step)
|
|
{
|
|
case 1:
|
|
case 6:
|
|
case 11:
|
|
Led_OnOff(K_WIND1, 1);
|
|
break;
|
|
case 2:
|
|
case 7:
|
|
case 12:
|
|
Led_OnOff(K_WIND2, 1);
|
|
break;
|
|
case 3:
|
|
case 8:
|
|
case 13:
|
|
Led_OnOff(K_WIND3, 1);
|
|
break;
|
|
case 4:
|
|
case 9:
|
|
case 14:
|
|
Led_OnOff(K_WIND4, 1);
|
|
break;
|
|
case 5:
|
|
case 10:
|
|
case 15:
|
|
Led_OnOff(K_WIND5, 1);
|
|
break;
|
|
case 16:
|
|
Disp_Segdata(0, 14, 1, 17, 14); // " Id "
|
|
Num_10 = Main_Modbus_ID%100/10;
|
|
Num_1 = Main_Modbus_ID%10;
|
|
Disp_Segdata(1, 14, 14, Num_10, Num_1);
|
|
break;
|
|
case 0x11:
|
|
if(Main_BxD_FW_Version[1] == 'J')Num_1000 = 18; //J
|
|
else if(Main_BxD_FW_Version[1] == 'I')Num_1000 = 1; //I
|
|
else Num_1000 = 13; //-
|
|
|
|
Num_10 = Main_BxD_FW_Version[2]/10;
|
|
Num_1 = Main_BxD_FW_Version[2]%10;
|
|
Disp_Segdata(0, Num_1000, 13, Num_10, Num_1); // " J- " 메인 버전
|
|
|
|
|
|
Num_10 = ROOMCON_FW_VERSION/10;
|
|
Num_1 = ROOMCON_FW_VERSION%10;
|
|
Disp_Segdata(1, 1, 13, Num_10, Num_1); // " I- " 룸콘 버전
|
|
|
|
|
|
Num_10 = Sensor_BxD_Version/10;
|
|
Num_1 = Sensor_BxD_Version%10;
|
|
Disp_Segdata(2, 5, 13, Num_10, Num_1); // " S- " 센서보드 버전
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////
|
|
Led_OnOff(100, 0); // all off
|
|
|
|
|
|
if(Wifi_Status == 1) // connect
|
|
{
|
|
Led_OnOff(K_IOT, 1);
|
|
}
|
|
else if(Wifi_Status == 2) // wait slow
|
|
{
|
|
Led_OnOff(K_IOT, Blink_Toggle);
|
|
}
|
|
else if(Wifi_Status == 3) // fast
|
|
{
|
|
Led_OnOff(K_IOT, FastBlink_Toggle);
|
|
}
|
|
else // dis connect
|
|
{
|
|
Led_OnOff(K_IOT, 0);
|
|
}
|
|
|
|
|
|
Err = Main_Err_Code&(ERROR_FILTER_CLEAN|ERROR_FILTER_CHANGE|ERROR_SOJA_CHANGE|ERROR_SA|ERROR_EA|ERROR_TEMP|ERROR_CO2|ERROR_DUST|ERROR_IN_COM);
|
|
|
|
if(Err)Led_OnOff(K_JUMKEOM, 1);
|
|
////////////////////////////////////////////////////////////////
|
|
|
|
if(Power_On == 0)
|
|
{
|
|
Disp_Segdata(0, 14, 14, 14, 14); // ALL OFF
|
|
Disp_Segdata(1, 14, 14, 14, 14); // ALL OFF
|
|
Disp_Segdata(2, 14, 14, 14, 14); // ALL OFF
|
|
|
|
|
|
if(Main_Err_Code)Led_OnOff(K_JUMKEOM, 1);
|
|
|
|
if(Main_Err_Code&ERROR_FILTER_CLEAN)
|
|
{
|
|
Led_OnOff(K_FILTER_CLEAN, 1);
|
|
Led_OnOff(K_SOJA_CLEAN, 1);
|
|
}
|
|
else if(Main_Err_Code&ERROR_FILTER_CHANGE)
|
|
{
|
|
Led_OnOff(K_FILTER_CHANGE, 1);
|
|
}
|
|
else if(Main_Err_Code&ERROR_SOJA_CHANGE)
|
|
{
|
|
Led_OnOff(K_SOJA_CHANGE, 1);
|
|
}
|
|
else if(Main_Err_Code&ERROR_SA)
|
|
{
|
|
Disp_Segdata(1, 12, 13, 0, 9); // E-09
|
|
}
|
|
else if(Main_Err_Code&ERROR_EA)
|
|
{
|
|
Disp_Segdata(1, 12, 13, 1, 0); // E-10
|
|
}
|
|
else if(Main_Err_Code&ERROR_TEMP)
|
|
{
|
|
Disp_Segdata(1, 12, 13, 0, 2); // E-02
|
|
}
|
|
else if(Main_Err_Code&ERROR_HUMI)
|
|
{
|
|
;
|
|
}
|
|
else if(Main_Err_Code&ERROR_TVOC)
|
|
{
|
|
;
|
|
}
|
|
else if(Main_Err_Code&ERROR_CO2)
|
|
{
|
|
Disp_Segdata(1, 12, 13, 0, 6); // E-06
|
|
}
|
|
else if(Main_Err_Code&ERROR_DUST)
|
|
{
|
|
Disp_Segdata(1, 12, 13, 1, 8); // E-08
|
|
}
|
|
else if(Main_Err_Code&ERROR_IN_COM)
|
|
{
|
|
Disp_Segdata(1, 12, 13, 0, 7); // E-07
|
|
}
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Num_1000= Num_100= Num_10= Num_1= 14; // blank
|
|
if(CO2_Value>=1000)Num_1000 = CO2_Value%10000/1000;
|
|
if(CO2_Value>=100)Num_100 = CO2_Value%1000/100;
|
|
if(CO2_Value>=10)Num_10 = CO2_Value%100/10;
|
|
Num_1 = CO2_Value%10;
|
|
Disp_Segdata(2, Num_1000, Num_100, Num_10, Num_1);
|
|
|
|
Num_1000= Num_100= Num_10= Num_1= 14; // blank
|
|
if(Pm_10_value>=1000)Num_1000 = Pm_10_value%10000/1000;
|
|
if(Pm_10_value>=100)Num_100 = Pm_10_value%1000/100;
|
|
if(Pm_10_value>=10)Num_10 = Pm_10_value%100/10;
|
|
Num_1 = Pm_10_value%10;
|
|
Disp_Segdata(1, Num_1000, Num_100, Num_10, Num_1);
|
|
|
|
Num_1000= Num_100= Num_10= Num_1= 14; // blank
|
|
if(Pm_2_5_value>=1000)Num_1000 = Pm_2_5_value%10000/1000;
|
|
if(Pm_2_5_value>=100)Num_100 = Pm_2_5_value%1000/100;
|
|
if(Pm_2_5_value>=10)Num_10 = Pm_2_5_value%100/10;
|
|
Num_1 = Pm_2_5_value%10;
|
|
Disp_Segdata(0, Num_1000, Num_100, Num_10, Num_1);
|
|
|
|
|
|
|
|
switch(CO2_quality)
|
|
{
|
|
case 0x00: Led_OnOff(K_CO2_1, 1);break;
|
|
case 0x01: Led_OnOff(K_CO2_2, 1);break;
|
|
case 0x02: Led_OnOff(K_CO2_3, 1);break;
|
|
case 0x04:
|
|
default:
|
|
Led_OnOff(K_CO2_3, 1);
|
|
Led_OnOff(K_CO2_4, 1);
|
|
break;
|
|
}
|
|
|
|
switch(PM2_5_quality)
|
|
{
|
|
case 0x00: Led_OnOff(K_PM25_1, 1);break;
|
|
case 0x01: Led_OnOff(K_PM25_2, 1); break;
|
|
case 0x02: Led_OnOff(K_PM25_3, 1); break;
|
|
case 0x04:
|
|
default:
|
|
Led_OnOff(K_PM25_3, 1);
|
|
Led_OnOff(K_PM25_4, 1);
|
|
break;
|
|
}
|
|
|
|
switch(PM10_quality)
|
|
{
|
|
case 0:
|
|
Led_OnOff(K_PM10_1, 1);
|
|
break;
|
|
case 0x01:
|
|
Led_OnOff(K_PM10_2, 1);
|
|
break;
|
|
case 0x02:
|
|
Led_OnOff(K_PM10_3, 1);
|
|
break;
|
|
case 0x04:
|
|
default:
|
|
Led_OnOff(K_PM10_3, 1);
|
|
Led_OnOff(K_PM10_4, 1);
|
|
break;
|
|
}
|
|
|
|
switch(Tx_Run_Mode)
|
|
{
|
|
case MODE_VENT: Led_OnOff(K_VENT, 1); break;
|
|
case MODE_AUTO: Led_OnOff(K_AUTO, 1);break;
|
|
case MODE_AIR_CLEAN: Led_OnOff(K_AIR, 1); break;
|
|
default: break;
|
|
}
|
|
|
|
switch(Tx_Fan_Speed)
|
|
{
|
|
case 1: Led_OnOff(K_WIND1, 1);break;
|
|
case 2: Led_OnOff(K_WIND2, 1);break;
|
|
case 3: Led_OnOff(K_WIND3, 1);break;
|
|
case 4: Led_OnOff(K_WIND4, 1);break;
|
|
case 5: Led_OnOff(K_WIND5, 1);break;
|
|
default: break;
|
|
}
|
|
|
|
switch(Tx_Reservation_Hour)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
Led_OnOff(K_TIME_1, 1);
|
|
break;
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
Led_OnOff(K_TIME_4, 1);
|
|
break;
|
|
case 8:
|
|
Led_OnOff(K_TIME_8, 1);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
Led_OnOff(K_LOCK, Kids_Lock);
|
|
}
|
|
|
|
|
|
uint8_t Sel_Pos = 0;
|
|
void Display_process(void)
|
|
{
|
|
|
|
switch(Sel_Pos)
|
|
{
|
|
case 0:
|
|
Make_A();
|
|
Sel_Pos++;
|
|
break;
|
|
case 1:
|
|
Make_B();
|
|
Sel_Pos++;
|
|
break;
|
|
case 2:
|
|
Make_C();
|
|
Sel_Pos++;
|
|
break;
|
|
case 3:
|
|
default:
|
|
Make_D();
|
|
Sel_Pos = 0;
|
|
break;
|
|
}
|
|
|
|
}
|
|
|