main.c

来自「工厂环境污染控制数据采集器」· C语言 代码 · 共 2,994 行 · 第 1/5 页

C
2,994
字号
#include <rtl.h>
#include <LPC23xx.H>
#include "type.h"
#include "target.h"
#include "irq.h"
#include "timer.h"
#include "uart.h"
#include "file_config.h"
#include <stdio.h>
#include "inioper.h"
#include "main.h"
#include "gui.h"

#define FILE_HANDLE unsigned int




#define LED18  18
#define LED23  23




/////////////////

extern volatile BYTE UART0TxEmpty, UART1TxEmpty,UART2TxEmpty,UART3TxEmpty;
extern volatile BYTE UART0Buffer[BUFSIZE], UART1Buffer[BUFSIZE],UART2Buffer[BUFSIZE],UART3Buffer[BUFSIZE];
extern volatile DWORD UART0Count, UART1Count,UART2Count,UART3Count;

BYTE   UART4TxEmpty;
BYTE   UART4Buffer[BUFSIZE];
DWORD  UART4Count;
///////////外部变量定义/////////////////////////////////
extern _SITE_CONF g_site_conf;		//当前系统配置对象
extern _SITE_CONF_EXTEND g_site_conf_extend;		//当前系统配置对象
extern MEASUREDATA g_cur_measuredata;//瞬时数据
extern MEASUREDATA g_min_data;		//分钟数据 
/////////////////////
float test_double;
long test_long;

unsigned char *tst_pointer1;

unsigned int tst_var1;

unsigned int tcpip_time_base;

unsigned char JIN_SUI_FLAG1;

unsigned char feed_watchdog_flag1;

unsigned char read_ad_channel_selector;
unsigned int read_ad_timebase;

volatile DWORD timer_counter = 0;

unsigned int refresh_input_value_counter=0;

unsigned char TEMP_PASSWORD_BUF[10];

unsigned char flag1;

unsigned int key_scan_time_base_counter;

unsigned int send_request_by_uart4_timebase;

unsigned int send_status_by_udp_timebase;

unsigned int save_to_sd_card_file_timebase;

unsigned int flow_collection_timebase;//指示流量采集时间

unsigned char socket_tcp;
unsigned char socket_udp;
unsigned char udp_wait_ack=0;


unsigned int ff_handle;

void delay(unsigned int dly);
void Ldelay (unsigned int dly);
void BUS_SET_VALUE(unsigned char val);
unsigned char READ_IO_INPUT(void);
void feed_watchdog(void);
unsigned char transfer_data(unsigned int dat,unsigned int *dat2);


unsigned char KEY_CODE;
unsigned char key_debounce_flag;

unsigned char IO_STATUS;
unsigned char JIN_SHUI_SHE_ZHE_FLAG;

unsigned char input_password_pos_var1;
unsigned char input_password_buf[10];

unsigned int SYSTEM_STATUS;
#define IDLE 0

#define INPUT_PASSWORD_STATUS   24

unsigned int temp_sel_1;

unsigned int TEMP_CHANNEL_1_AD_VALUE;
unsigned int TEMP_CHANNEL_2_AD_VALUE;
unsigned int TEMP_CHANNEL_3_AD_VALUE;
unsigned int TEMP_CHANNEL_4_AD_VALUE;
unsigned int TEMP_CHANNEL_5_AD_VALUE;
unsigned int TEMP_CHANNEL_6_AD_VALUE;
unsigned int TEMP_CHANNEL_7_AD_VALUE;
unsigned int TEMP_CHANNEL_8_AD_VALUE;
unsigned int TEMP_CHANNEL_9_AD_VALUE;
unsigned int TEMP_CHANNEL_10_AD_VALUE;
unsigned int TEMP_CHANNEL_11_AD_VALUE;
unsigned int TEMP_CHANNEL_12_AD_VALUE;


float SUN_SHI_LIU_LIANG=0;   //瞬时流量暂存值



double chao_height;


/////////////

#define BUS_DIR  FIO2DIR0
#define BUS_SET  FIO2SET0
#define BUS_CLR  FIO2CLR0
#define BUS_PIN  FIO2PIN0




#define IO_INPUT_1   6  //P0.6
#define IO_INPUT_2   7  //P0.7
#define IO_INPUT_3   8  //P0.8
#define IO_INPUT_4   9  //P0.9

/////////////////////


#define AD7265_OUTA       20 //P1.20

#define AD7265_OUTB       21 //P1.21

#define AD7265_SCLK       22 //P1.22
#define H_AD7265_SCLK()   IOSET1=(uint32)0x01<<AD7265_SCLK
#define L_AD7265_SCLK()   IOCLR1=(uint32)0x01<<AD7265_SCLK

#define AD7265_CS         23 //P1.23
#define H_AD7265_CS()			IOSET1=(uint32)0x01<<AD7265_CS
#define L_AD7265_CS()			IOCLR1=(uint32)0x01<<AD7265_CS

#define AD7265_A0         24 //P1.24
#define H_AD7265_A0()			IOSET1=(uint32)0x01<<AD7265_A0
#define L_AD7265_A0()			IOCLR1=(uint32)0x01<<AD7265_A0

#define AD7265_A1         25 //P1.25
#define H_AD7265_A1()			IOSET1=(uint32)0x01<<AD7265_A1
#define L_AD7265_A1()			IOCLR1=(uint32)0x01<<AD7265_A1

#define AD7265_A2         26 //P1.26
#define H_AD7265_A2()			IOSET1=(uint32)0x01<<AD7265_A2
#define L_AD7265_A2()			IOCLR1=(uint32)0x01<<AD7265_A2

///////////
#define AT24C_SDA    27 //P0.27 //P1.24
#define H_AT24_SDA()   IOSET0=(uint32)0x01<<AT24C_SDA
#define L_AT24_SDA()   IOCLR0=(uint32)0x01<<AT24C_SDA

#define AT24C_SCL    28  //P0.28
#define H_AT24_SCL()   IOSET0=(uint32)0x01<<AT24C_SCL
#define L_AT24_SCL()   IOCLR0=(uint32)0x01<<AT24C_SCL

////////////////////////////////////////////

#define BEEP_CTRL         10  //P2.10
#define H_BEEP_CTRL()  FIO2SET=(uint32)0x01<<BEEP_CTRL
#define L_BEEP_CTRL()  FIO2CLR=(uint32)0x01<<BEEP_CTRL


 




//////////////////////////////////

void enable_beep(void)
{
	H_BEEP_CTRL();
}


void disable_beep(void)
{
	L_BEEP_CTRL();
}


void BUS_SET_VALUE(unsigned char val)
{
	BUS_SET=val;
	BUS_CLR=~(val);
}



void KEY_SCAN(void)
{
	unsigned char var1;
	unsigned char var2;	
	
	BUS_DIR=0X0F;
	BUS_SET=0X01;
	BUS_CLR=0X0E;	

	var2=0;

	delay(1);
	var1=BUS_PIN;
	
	if((var1&0XF0)==0X10)
	{
		var2=0X01;
	}
	else if((var1&0XF0)==0X20)
	{
		var2=0X02;
	}
	else if((var1&0XF0)==0X40)
	{
		var2=0X03;
	}
	else if((var1&0XF0)==0X80)
	{
		var2=0X04;
	}	
	
	BUS_SET=0X02;
	BUS_CLR=0X0D;

	delay(1);
	var1=BUS_PIN;
	
	if((var1&0XF0)==0X10)
	{
		var2=0X05;
	}
	else if((var1&0XF0)==0X20)
	{
		var2=0X06;
	}
	else if((var1&0XF0)==0X40)
	{
		var2=0X07;
	}
	else if((var1&0XF0)==0X80)
	{
		var2=0X08;
	}

	BUS_SET=0X04;
	BUS_CLR=0X0B;

	delay(1);
	var1=BUS_PIN;
	
	if((var1&0XF0)==0X10)
	{
		var2=0X09;
	}
	else if((var1&0XF0)==0X20)
	{
		var2=0X0A;
	}
	else if((var1&0XF0)==0X40)
	{
		var2=0X0B;
	}
	else if((var1&0XF0)==0X80)
	{
		var2=0X0C;
	}	
	
	BUS_SET=0X08;
	BUS_CLR=0X07;

	delay(1);
	var1=BUS_PIN;
	
	if((var1&0XF0)==0X10)
	{
		var2=0X0D;
	}
	else if((var1&0XF0)==0X20)
	{
		var2=0X0E;
	}
	else if((var1&0XF0)==0X40)
	{
		var2=0X0F;
	}
	else if((var1&0XF0)==0X80)
	{
		var2=0X10;
	}	


	if(var2!=0)
	{
		if(key_debounce_flag==0)
		{
			key_debounce_flag=1;
			KEY_CODE=var2;
		}
	}
	else
	{
		key_debounce_flag=0;
	}

}



unsigned char READ_IO_INPUT(void)
{
	unsigned long var1;
	unsigned char var2;
	
	var1=IOPIN0;
	var1>>=6;
	
	var2=var1&0x0f;
	return var2;
}


#define TLV2556_INT2   24    //P1.24
#define TLV2556_INT1   25    //P1.25
#define TLV2556_CLK    26    //P1.26
#define TLV2556_DIN    27    //P1.27
#define TLV2556_DOUT   28    //P1.28
#define TLV2556_CS1    29    //P1.29
#define TLV2556_CS2    19    //P1.19

#define H_TLV2556_CLK()   IOSET1=(uint32)0x01<<TLV2556_CLK
#define L_TLV2556_CLK()   IOCLR1=(uint32)0x01<<TLV2556_CLK

#define H_TLV2556_DIN()   IOSET1=(uint32)0x01<<TLV2556_DIN
#define L_TLV2556_DIN()   IOCLR1=(uint32)0x01<<TLV2556_DIN

#define H_TLV2556_CS1()   IOSET1=(uint32)0x01<<TLV2556_CS1
#define L_TLV2556_CS1()   IOCLR1=(uint32)0x01<<TLV2556_CS1

#define H_TLV2556_CS2()   IOSET1=(uint32)0x01<<TLV2556_CS2
#define L_TLV2556_CS2()   IOCLR1=(uint32)0x01<<TLV2556_CS2


unsigned char read_TLV2556_OUT_PIN(void)
{
	unsigned long lvar1;
	
	lvar1=IOPIN1;
	if((lvar1&((uint32)0x01<<TLV2556_DOUT))==0)
	{
		return 0;
	}
	else
	{
		return 1;
	}
}


unsigned int CONTROL_TLV2556(unsigned char sel_A_or_B,unsigned char cmd_address,unsigned char dat)
{
	unsigned char i;
	unsigned int intvar1;
	unsigned char var1;
	
	intvar1=0;
	
	if(sel_A_or_B==0)
	{
		L_TLV2556_CS1();
		H_TLV2556_CS2();
	}
	else
	{
		L_TLV2556_CS2();
		H_TLV2556_CS1();
	}
	
	var1=cmd_address;
	for(i=0;i<4;i++)
	{	
		delay(10);
		if((var1&0x08)!=0)
		{
			H_TLV2556_DIN();
		}
		else
		{
			L_TLV2556_DIN();
		}
		///////
		intvar1<<=1;
		if(read_TLV2556_OUT_PIN()!=0)
		{
			intvar1|=0x01;
		}
		//////
		var1<<=1;
		delay(10);
		H_TLV2556_CLK();
		delay(10);
		L_TLV2556_CLK();
	}
	
	var1=dat;
	for(i=0;i<4;i++)
	{
		delay(10);
		if((var1&0x08)!=0)
		{
			H_TLV2556_DIN();
		}
		else
		{
			L_TLV2556_DIN();
		}
		///////
		intvar1<<=1;
		if(read_TLV2556_OUT_PIN()!=0)
		{
			intvar1|=0x01;
		}
		//////
		var1<<=1;
		delay(10);
		H_TLV2556_CLK();
		delay(10);
		L_TLV2556_CLK();
	}
	
	var1=0;
	for(i=0;i<4;i++)
	{
		delay(10);
		if((var1&0x08)!=0)
		{
			H_TLV2556_DIN();
		}
		else
		{
			L_TLV2556_DIN();
		}
		///////
		intvar1<<=1;
		if(read_TLV2556_OUT_PIN()!=0)
		{
			intvar1|=0x01;
		}
		//////
		var1<<=1;
		delay(10);
		H_TLV2556_CLK();
		delay(10);
		L_TLV2556_CLK();
	}
	
	H_TLV2556_CS1();
	H_TLV2556_CS2();
	
	return intvar1;			

}


void READ_AD_INPUT(void)
{
	unsigned int intvar1;
	
	read_ad_channel_selector++;
	if(read_ad_channel_selector>31)
	{
		read_ad_channel_selector=0;
	}
	
	switch(read_ad_channel_selector)
	{
		case 0:   //ad 1
				CONTROL_TLV2556(0,0,0x00);
				break;
		case 1:
				TEMP_CHANNEL_1_AD_VALUE=CONTROL_TLV2556(0,0,0x00);
				break;
		case 2:   //ad 2
				CONTROL_TLV2556(0,1,0x00);
				break;			
		case 3:
				TEMP_CHANNEL_2_AD_VALUE=CONTROL_TLV2556(0,1,0x00);
				break;
		case 4:   //ad 3
				CONTROL_TLV2556(0,2,0x00);
				break;
		case 5:
				TEMP_CHANNEL_3_AD_VALUE=CONTROL_TLV2556(0,2,0x00);
				break;
		case 6:   //ad 4
				CONTROL_TLV2556(0,3,0x00);
				break;
		case 7:
				TEMP_CHANNEL_4_AD_VALUE=CONTROL_TLV2556(0,3,0x00);
				break;
		case 8:  //ad 5
				CONTROL_TLV2556(0,4,0x00);
				break;
		case 9:
				TEMP_CHANNEL_5_AD_VALUE=CONTROL_TLV2556(0,4,0x00);
				break;
		case 10:  //ad 6
				CONTROL_TLV2556(0,5,0x00);
				break;
		case 11:
				TEMP_CHANNEL_6_AD_VALUE=CONTROL_TLV2556(0,5,0x00);
				break;
		case 12:  //ad 7
				CONTROL_TLV2556(0,6,0x00);
				break;
		case 13:
				TEMP_CHANNEL_7_AD_VALUE=CONTROL_TLV2556(0,6,0x00);
				break;
		case 14:  //ad 8
				CONTROL_TLV2556(0,7,0x00);
				break;
		case 15:
				TEMP_CHANNEL_8_AD_VALUE=CONTROL_TLV2556(0,7,0x00);
				break;
		case 16:  //ad 9
				CONTROL_TLV2556(0,8,0x00);
				break;
		case 17:
				TEMP_CHANNEL_9_AD_VALUE=CONTROL_TLV2556(0,8,0x00);
				break;
		case 18:  //ad 10
				CONTROL_TLV2556(0,9,0x00);
				break;
		case 19:
			  TEMP_CHANNEL_10_AD_VALUE=CONTROL_TLV2556(0,9,0x00);
				break;
		case 20:  //ad 11
				CONTROL_TLV2556(0,10,0x00);
				break;
		case 21:
				TEMP_CHANNEL_11_AD_VALUE=CONTROL_TLV2556(0,10,0x00);
				break;
		case 22:  //ad 12
			  CONTROL_TLV2556(1,0,0x00);
				break;
		case 23:
			  TEMP_CHANNEL_12_AD_VALUE=CONTROL_TLV2556(1,0,0x00);
				break;
		/////////////////below is read for digital input 
		case 24:  //INPUT 1
				//IO_STATUS
				CONTROL_TLV2556(1,1,0x00);
				break;
		case 25:
				intvar1=CONTROL_TLV2556(1,1,0x00);
				if(intvar1<3000)  //600
				{
						IO_STATUS|=0x01;
				}
				else
				{
						IO_STATUS&=~0x01;
				}
				break;
		case 26:  //INPUT 2
				CONTROL_TLV2556(1,2,0x00);
				break;
		case 27:
				intvar1=CONTROL_TLV2556(1,2,0x00);
				if(intvar1<3000)   //600
				{
						IO_STATUS|=0x02;
				}
				else
				{
						IO_STATUS&=~0x02;
				}
				break;
		case 28:  //INPUT 3
				CONTROL_TLV2556(1,3,0x00);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?