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 + -
显示快捷键?