main.c
来自「工厂环境污染控制数据采集器」· C语言 代码 · 共 2,994 行 · 第 1/5 页
C
2,994 行
UARTInit(1,9600);
UARTInit(2,9600);
UARTInit(3,19200);
set_uart0_to_rx_status();
set_uart1_to_rx_status();
set_uart2_to_rx_status();
set_uart3_to_rx_status(); */
///////////////// init some device
L_HC595_SHCP();
L_HC595_STCP();
L_HC595_DS();
H_TLV2556_CS1();
H_TLV2556_CS2();
L_TLV2556_CLK();
H_STC51SS();
L_STC51SCK();
L_STC51MISO();
OFF_BEEP();
OFF_LED18();
OFF_LED23();
SET_OUTPUT_STATUS(1,0);
SET_OUTPUT_STATUS(2,0);
SET_OUTPUT_STATUS(3,0);
SET_OUTPUT_STATUS(4,0);
////////////////// init the variable
SYSTEM_STATUS=SHOW_MAIN_VIEW_1;
KEY_CODE=0X00;
key_debounce_flag=0;
IO_STATUS=0;
JIN_SHUI_SHE_ZHE_FLAG=0;
UART4Count=0;
UART4TxEmpty=1;
udp_wait_ack=0;
/////////////////////
delay(10000); //wait for a monent when power_up then initialize the device
////////////////// LCD init
GUI_Initialize(); //
show_start_screent();
///////////////////file system init
finit();
//////////////////
feed_watchdog();
///////////////////tcp_ip init
init_TcpNet();
//////////////////
feed_watchdog();
//////////////////AD converter init
CONTROL_TLV2556(0,0x0f,0x00);
CONTROL_TLV2556(1,0x0f,0x00);
///////////////// eeprom init
init_eeprom();
var1 = read(SYS_INIT_BYTE_ADDR,TEMP_PASSWORD_BUF, 1);
//if (TEMP_PASSWORD_BUF[0] != 'I')
// initeeprom();
///////////////读取密码
read(PASSWORD_ADDRESS,TEMP_PASSWORD_BUF,6);
///////////////进水流量 使用与不使用
read(JIN_SUI_LIU_LIANG_USED_ADDR,tmp_buf1,6);
JIN_SUI_FLAG1=tmp_buf1[0];
//////////////
//读取配置文件
config();
//////////////////////////////////////
//////////////////// init the UARTs
UARTInit(0, g_site_conf_extend.com_port[0].baud);
UARTInit(1, g_site_conf_extend.com_port[1].baud);
UARTInit(2, g_site_conf_extend.com_port[2].baud);
UARTInit(3, g_site_conf_extend.com_port[3].baud);
set_uart0_to_rx_status();
set_uart1_to_rx_status();
set_uart2_to_rx_status();
set_uart3_to_rx_status();
/////////////set local ip//////////////////////////////
Ldelay(20);
display_main_view_screen_1();
////////////////set center ip/protocol//////////////////////////
// Initialize UDP Socket and start listening
socket_udp = udp_get_socket (0, UDP_OPT_SEND_CS | UDP_OPT_CHK_CS, udp_callback);
if (socket_udp != 0) {
udp_open (socket_udp,1001);
}
// Initialize TCP Socket and start listening
socket_tcp = tcp_get_socket(TCP_TYPE_SERVER, 0, 10, tcp_callback);
if(socket_tcp != 0)
{
tcp_listen (socket_tcp,1000);
}
///////////////
enable_timer(0);
///////////////
///////////////////////////////////////////////////////
SUN_SHI_LIU_LIANG=0;
while(1)
{
///////////////TCP UDP part
main_TcpNet();
if(tcpip_time_base>=20)
{
tcpip_time_base=0;
timer_tick();
}
///////////////read AD converter and DIGITAL input
if(read_ad_timebase>=3) //30ms
{
read_ad_timebase=0;
READ_AD_INPUT();
}
/////////////UART 4 service (use stc12c5410)
DUMMY_READ_UART4();
//////////////KEY SCAN
if(key_scan_time_base_counter>5)
{
key_scan_time_base_counter=0;
KEY_SCAN();
}
/////////////FEED THE WATCH_DOG
feed_watchdog();
if (g_site_conf_extend.devsnap.bHasFlow)
{
//判断是否读流量探头
switch (g_site_conf_extend.flux_param.FLUX_SET)
{
case 1:
readrisendata();
break;
case 2:
break;
case 3:
break;
default:
break;
}
////////流量采集 //////////
if (flow_collection_timebase >= (100 * g_site_conf_extend.flux_param.sleeptime))
{
flow_collection_timebase = 0;
switch (g_site_conf_extend.flux_param.FLUX_SET)
{
case 1:
sendtorisen();
break;
case 2: //AD,在AD的时间片去读取
break;
case 3: //other flow device ,读取串口获得其他流量计数据
break;
default:
break;
}
}
}
else
{
//setinstantflow(0);
}
if (g_site_conf_extend.devsnap.bHasPH)
{
//PH采集
}
else
{
//setinstantflow(0);
}
if (g_site_conf_extend.devsnap.bHasCOD)
{
//COD采集
}
else
{
//setinstantflow(0);
}
if (g_site_conf_extend.devsnap.bHasMotor)
{
//电机状态采集
}
else
{
//setinstantflow(0);
}
//1查看是否到统计时间如果是则统计(统计时间,5 min/1 hour/1 day )
//2查看是否到达数据上报时间,如果是则上报
//3查看是否到DO时间,如是则控制
if(send_request_by_uart4_timebase>100)
{
//该口固定用于远程通信
send_request_by_uart4_timebase=0;
UART4_SEND(0x01);
UART4_SEND(0x03);
UART4_SEND(0x00);
UART4_SEND(0x06);
UART4_SEND(0x00);
UART4_SEND(0x02);
UART4_SEND(0x24);
UART4_SEND(0x0a);
buf1[0]=0x55;
UARTSend(0,buf1,1);
UARTSend(1,buf1,1);
UARTSend(2,buf1,1);
UARTSend(3,buf1,1);
}
/////////////////// send AD status by UDP
if(send_status_by_udp_timebase>100)
{
send_status_by_udp_timebase=0;
////////
udp_sendbuf = udp_get_buf(20);
udp_sendbuf[0]=(TEMP_CHANNEL_1_AD_VALUE>>8)&0x0f;
udp_sendbuf[1]=TEMP_CHANNEL_1_AD_VALUE&0x0f;
flag1=udp_send (socket_udp,remip,1001,udp_sendbuf,2);
}
/////////////////////save to file
if(save_to_sd_card_file_timebase>150)
{
save_to_sd_card_file_timebase=0;
//////////
/*ff_handle=__fopen("aa.txt",FILE_A);
test_long=__get_flen(ff_handle);
__setfpos(ff_handle,test_long);
//__read(ff_handle,tmp_buf1,2);
tmp_buf1[0]=(TEMP_CHANNEL_1_AD_VALUE>>8)&0x0f;
tmp_buf1[1]=TEMP_CHANNEL_1_AD_VALUE&0x0f;
__write(ff_handle,tmp_buf1,2);
__fclose(ff_handle);*/
}
//////////////////SYSTEM STATUS HANDLE
switch(SYSTEM_STATUS)
{
case IDLE:
break;
case SHOW_MAIN_VIEW_1:
if(refresh_input_value_counter>200)
{
refresh_input_value_counter=0;
display_main_view_screen_1();
}
if(KEY_CODE==2)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_2;
display_main_view_screen_2();
}
else if(KEY_CODE==3)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_3;
show_menu_14_screen(1,TEMP_CHANNEL_1_AD_VALUE,2,TEMP_CHANNEL_2_AD_VALUE);
}
else if(KEY_CODE==4)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_4;
show_menu_14_screen(3,TEMP_CHANNEL_3_AD_VALUE,4,TEMP_CHANNEL_4_AD_VALUE);
}
else if(KEY_CODE==5)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_5;
show_menu_14_screen(5,TEMP_CHANNEL_5_AD_VALUE,6,TEMP_CHANNEL_6_AD_VALUE);
}
else if(KEY_CODE==6)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_6;
show_menu_14_screen(7,TEMP_CHANNEL_7_AD_VALUE,8,TEMP_CHANNEL_8_AD_VALUE);
}
else if(KEY_CODE==7)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_7;
show_menu_14_screen(9,TEMP_CHANNEL_9_AD_VALUE,10,TEMP_CHANNEL_10_AD_VALUE);
}
else if(KEY_CODE==8)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_8;
show_menu_14_screen(11,TEMP_CHANNEL_11_AD_VALUE,12,TEMP_CHANNEL_12_AD_VALUE);
}
else if(KEY_CODE==9)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_9;
show_menu_15_screen(IO_STATUS);
}
else if(KEY_CODE==0x10) //进入设置
{
//SYSTEM_STATUS=SETTING_MENU1;
//temp_sel_1=1;
//show_menu_1_screen();
SYSTEM_STATUS=INPUT_PASSWORD_STATUS;
temp_sel_1=1;
input_password_pos_var1=0;
show_password_input_screen(input_password_pos_var1);
}
KEY_CODE==0;
break;
case SHOW_MAIN_VIEW_2:
if(refresh_input_value_counter>200)
{
refresh_input_value_counter=0;
display_main_view_screen_2();
}
if(KEY_CODE==1)
{
KEY_CODE=0;
SYSTEM_STATUS=SHOW_MAIN_VIEW_1;
display_main_view_screen_1();
}
else if(KEY_CODE==3)
{
KEY_CODE=0;
SYSTEM_STATUS=SHOW_MAIN_VIEW_3;
show_menu_14_screen(1,TEMP_CHANNEL_1_AD_VALUE,2,TEMP_CHANNEL_2_AD_VALUE);
}
else if(KEY_CODE==4)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_4;
show_menu_14_screen(3,TEMP_CHANNEL_3_AD_VALUE,4,TEMP_CHANNEL_4_AD_VALUE);
}
else if(KEY_CODE==5)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_5;
show_menu_14_screen(5,TEMP_CHANNEL_5_AD_VALUE,6,TEMP_CHANNEL_6_AD_VALUE);
}
else if(KEY_CODE==6)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_6;
show_menu_14_screen(7,TEMP_CHANNEL_7_AD_VALUE,8,TEMP_CHANNEL_8_AD_VALUE);
}
else if(KEY_CODE==7)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_7;
show_menu_14_screen(9,TEMP_CHANNEL_9_AD_VALUE,10,TEMP_CHANNEL_10_AD_VALUE);
}
else if(KEY_CODE==8)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_8;
show_menu_14_screen(11,TEMP_CHANNEL_11_AD_VALUE,12,TEMP_CHANNEL_12_AD_VALUE);
}
else if(KEY_CODE==9)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_9;
show_menu_15_screen(IO_STATUS);
}
else if(KEY_CODE==0x10) //进入设置
{
//KEY_CODE=0;
//SYSTEM_STATUS=SETTING_MENU1;
//temp_sel_1=2;
//show_menu_1_screen();
SYSTEM_STATUS=INPUT_PASSWORD_STATUS;
temp_sel_1=2;
input_password_pos_var1=0;
show_password_input_screen(input_password_pos_var1);
}
KEY_CODE=0;
break;
case SHOW_MAIN_VIEW_3:
if(refresh_input_value_counter>200)
{
refresh_input_value_counter=0;
show_menu_14_screen(1,TEMP_CHANNEL_1_AD_VALUE,2,TEMP_CHANNEL_2_AD_VALUE);
}
if(KEY_CODE==1)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_1;
display_main_view_screen_1();
}
else if(KEY_CODE==2)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_2;
display_main_view_screen_2();
}
else if(KEY_CODE==4)
{
KEY_CODE=0;
SYSTEM_STATUS=SHOW_MAIN_VIEW_4;
show_menu_14_screen(3,TEMP_CHANNEL_3_AD_VALUE,4,TEMP_CHANNEL_4_AD_VALUE);
}
else if(KEY_CODE==5)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_5;
show_menu_14_screen(5,TEMP_CHANNEL_5_AD_VALUE,6,TEMP_CHANNEL_6_AD_VALUE);
}
else if(KEY_CODE==6)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_6;
show_menu_14_screen(7,TEMP_CHANNEL_7_AD_VALUE,8,TEMP_CHANNEL_8_AD_VALUE);
}
else if(KEY_CODE==7)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_7;
show_menu_14_screen(9,TEMP_CHANNEL_9_AD_VALUE,10,TEMP_CHANNEL_10_AD_VALUE);
}
else if(KEY_CODE==8)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_8;
show_menu_14_screen(11,TEMP_CHANNEL_11_AD_VALUE,12,TEMP_CHANNEL_12_AD_VALUE);
}
else if(KEY_CODE==9)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_9;
show_menu_15_screen(IO_STATUS);
}
else if(KEY_CODE==0x10) //进入设置
{
//SYSTEM_STATUS=SETTING_MENU1;
//temp_sel_1=3;
//show_menu_1_screen();
SYSTEM_STATUS=INPUT_PASSWORD_STATUS;
temp_sel_1=3;
input_password_pos_var1=0;
show_password_input_screen(input_password_pos_var1);
}
KEY_CODE=0;
break;
case SHOW_MAIN_VIEW_4:
if(refresh_input_value_counter>200)
{
refresh_input_value_counter=0;
show_menu_14_screen(3,TEMP_CHANNEL_3_AD_VALUE,4,TEMP_CHANNEL_4_AD_VALUE);
}
if(KEY_CODE==1)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_1;
display_main_view_screen_1();
}
else if(KEY_CODE==2)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_2;
display_main_view_screen_2();
}
else if(KEY_CODE==3)
{
KEY_CODE=0;
SYSTEM_STATUS=SHOW_MAIN_VIEW_3;
show_menu_14_screen(1,TEMP_CHANNEL_1_AD_VALUE,2,TEMP_CHANNEL_2_AD_VALUE);
}
else if(KEY_CODE==5)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_5;
show_menu_14_screen(5,TEMP_CHANNEL_5_AD_VALUE,6,TEMP_CHANNEL_6_AD_VALUE);
}
else if(KEY_CODE==6)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_6;
show_menu_14_screen(7,TEMP_CHANNEL_7_AD_VALUE,8,TEMP_CHANNEL_8_AD_VALUE);
}
else if(KEY_CODE==7)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_7;
show_menu_14_screen(9,TEMP_CHANNEL_9_AD_VALUE,10,TEMP_CHANNEL_10_AD_VALUE);
}
else if(KEY_CODE==8)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_8;
show_menu_14_screen(11,TEMP_CHANNEL_11_AD_VALUE,12,TEMP_CHANNEL_12_AD_VALUE);
}
else if(KEY_CODE==9)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_9;
show_menu_15_screen(IO_STATUS);
}
else if(KEY_CODE==0x10) //进入设置
{
//SYSTEM_STATUS=SETTING_MENU1;
//temp_sel_1=4;
//show_menu_1_screen();
SYSTEM_STATUS=INPUT_PASSWORD_STATUS;
temp_sel_1=4;
input_password_pos_var1=0;
show_password_input_screen(input_password_pos_var1);
}
KEY_CODE=0;
break;
case SHOW_MAIN_VIEW_5:
if(refresh_input_value_counter>200)
{
refresh_input_value_counter=0;
show_menu_14_screen(5,TEMP_CHANNEL_5_AD_VALUE,6,TEMP_CHANNEL_6_AD_VALUE);
}
if(KEY_CODE==1)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_1;
display_main_view_screen_1();
}
else if(KEY_CODE==2)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_2;
display_main_view_screen_2();
}
else if(KEY_CODE==3)
{
KEY_CODE=0;
SYSTEM_STATUS=SHOW_MAIN_VIEW_3;
show_menu_14_screen(1,TEMP_CHANNEL_1_AD_VALUE,2,TEMP_CHANNEL_2_AD_VALUE);
}
else if(KEY_CODE==4)
{
KEY_CODE=0;
SYSTEM_STATUS=SHOW_MAIN_VIEW_4;
show_menu_14_screen(3,TEMP_CHANNEL_3_AD_VALUE,4,TEMP_CHANNEL_4_AD_VALUE);
}
else if(KEY_CODE==6)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_6;
show_menu_14_screen(7,TEMP_CHANNEL_7_AD_VALUE,8,TEMP_CHANNEL_8_AD_VALUE);
}
else if(KEY_CODE==7)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_7;
show_menu_14_screen(9,TEMP_CHANNEL_9_AD_VALUE,10,TEMP_CHANNEL_10_AD_VALUE);
}
else if(KEY_CODE==8)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_8;
show_menu_14_screen(11,TEMP_CHANNEL_11_AD_VALUE,12,TEMP_CHANNEL_12_AD_VALUE);
}
else if(KEY_CODE==9)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_9;
show_menu_15_screen(IO_STATUS);
}
else if(KEY_CODE==0x10) //进入设置
{
//SYSTEM_STATUS=SETTING_MENU1;
//temp_sel_1=5;
//show_menu_1_screen();
SYSTEM_STATUS=INPUT_PASSWORD_STATUS;
temp_sel_1=5;
input_password_pos_var1=0;
show_password_input_screen(input_password_pos_var1);
}
KEY_CODE=0;
break;
case SHOW_MAIN_VIEW_6:
if(refresh_input_value_counter>200)
{
refresh_input_value_counter=0;
show_menu_14_screen(7,TEMP_CHANNEL_7_AD_VALUE,8,TEMP_CHANNEL_8_AD_VALUE);
}
if(KEY_CODE==1)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_1;
display_main_view_screen_1();
}
else if(KEY_CODE==2)
{
SYSTEM_STATUS=SHOW_MAIN_VIEW_2;
display_main_view_screen_2();
}
else if(KEY_CODE==3)
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?