|
I2C采集壓力數據,24c02存儲參數,RTC實時時間,將數據信息通過GPRS方式上傳到數據平臺,232通訊修改采集時間和上傳時間等參數信息
#include <msp430x16x.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/*當BRCLK=CPU_F時用下面的公式可以計算,否則要根據設置加入分頻系數*/
#define baud 9600 //設置波特率的大小
#define baud_setting (uint)((ulong)CPU_F/((ulong)baud)) //波特率計算公式
#define baud_h (uchar)(baud_setting>>8) //提取高位
#define baud_l (uchar)(baud_setting) //低位
int err = 0;
char *p = NULL;
#define MAX_ERROR_COUNT 50
uchar receive_enable;
union
{
char mcInt8[4];
uchar mucByte[4];
int miWord[2];
uint muWord[2];
long mlDWord;
ulong mulDWord;
}guinDWord1; //共用體臨時變量
union
{
uchar a[4];
float b;
}temp1;
union
{
uchar a[4];
int b[2];
}temp2;
//uart1
typedef struct _CONFIG_FLAG
{
unsigned char config_analysis; //配置數據 數據分析中
unsigned char config_receiver; //接收中
unsigned char config_stop; //接收完畢
}CONFIG_FLAG;
CONFIG_FLAG g_config_flag;
#define BUFLEN 60
typedef struct _UART_BUF
{
char buf[BUFLEN+1]; // 多申請一個字符保證最后一個字符永遠是'0'
int index ;
}UART_BUF;
UART_BUF buf_uart1;
//I2C 壓力傳感器
#define ReadPM100 0x7F
#define SDA_PM100_BIT BIT2
#define SCL_PM100_BIT BIT0
#define SDA_PM100_BIT_DATA (P2IN&BIT2)
#define SDA_PM100_OUT (P2DIR |= BIT2)
#define SDA_PM100_IN (P2DIR &= ~BIT2)
#define SDA_PM100_H (P2OUT |= BIT2)
#define SDA_PM100_L (P2OUT &= ~BIT2)
#define SCL_PM100_OUT (P2DIR |= BIT0)
#define SCL_PM100_IN (P2DIR &= ~BIT0)
#define SCL_PM100_H (P2OUT |= BIT0)
#define SCL_PM100_L (P2OUT &= ~BIT0)
//I2C 24C32/DS1307
#define Write24c02 0xA0 //24C02器件地址+寫操作使能
#define Read24c02 0xA1 //24C02器件地址+讀操作使能
#define Write1307 0xD0
#define Read1307 0xD1
#define SDA_BIT BIT5
#define SCL_BIT BIT7
#define IIC_PORT_DIR P6DIR
#define IIC_PORT_DATA P6OUT
#define SDA_BIT_DATA (P6IN&BIT5)>>5
#define SDA_OUT (P6DIR |= BIT5)
#define SDA_IN (P6DIR &= ~BIT5)
#define SDA_H (P6OUT |= BIT5)
#define SDA_L (P6OUT &= ~BIT5)
#define SCL_OUT (P6DIR |= BIT7)
#define SCL_IN (P6DIR &= ~BIT7)
#define SCL_H (P6OUT |= BIT7)
#define SCL_L (P6OUT &= ~BIT7)
unsigned char DS1307_second;
unsigned char DS1307_minute;
unsigned char DS1307_hour;
unsigned char DS1307_week;
unsigned char DS1307_date;
unsigned char DS1307_month;
unsigned char DS1307_year;
//eeprom
#define USE_EEPROM_DATA_LENGTH 100 //長度
unsigned char I2c_Buf[USE_EEPROM_DATA_LENGTH];
#define MAX_COMMA USE_EEPROM_DATA_LENGTH-2
#define EEPROM_FILED_LENGTH 20 //段長度
typedef struct _EEPROM_CONFIG_DATA
{
char serialnum[EEPROM_FILED_LENGTH+1]; //系列號
char protocoltype[EEPROM_FILED_LENGTH+1]; //協議類型
char ipaddr[EEPROM_FILED_LENGTH+1]; //IP地址
char portnum[EEPROM_FILED_LENGTH+1]; //端口
char telnum[EEPROM_FILED_LENGTH+1]; //電話號碼
int bufsize; //緩存大小
int alarm_h; //上限報警值
int alarm_l; //下限報警值
int gprs_send_interval; //上傳時間
int pm100_send_interval; //采集時間
int rtu_id;
}EEPROM_CONFIG_DATA;
EEPROM_CONFIG_DATA g_config_data;
//默認設置數據
#define SERNUM "0000001"
#define PROTOTOCOL "TCP"
#define IPADDR "59.44.149.60"
#define PORTNUM "1001"
#define TELNUM "15922041115"
#define CACHESIZE 512
#define ALARM_H 100
#define ALARM_L 80
#define GPRS_SEND_INT 2
#define PM100_SEND_INT 1
//WDT
uint WDT_second,WDT_minute_gprs,WDT_minute_pm100;
//gprs
unsigned char gprs_send_enable;
unsigned char pm100_send_enable;
typedef enum
{
INIT0,
CGMM,
ECHO0,
SIMCARD,
RST,
CREG,
INIT_FINISH_OK,
GPRS_JH_S,
GPRS_DK_S ,
GPRS_QD_S ,
GPRS_OPEN_FINISH, /// GPRS 打開成功了
TCPIP_IO_MODE,
TCPIP_BJ_ADDR,
TCPIP_CONNECT,
TCP_IP_OK,
TCP_IP_NO,
TCP_IP_CONNECTING,
GPRS_DEF_PDP_S, /// 定義PDP場景
GPRS_ACT_PDP_S, /// 激活場景
GPRS_ACT_PDP_S_RET, /// 激活反饋
GPRS_CMNET_APN_S, /// 接入模式
TRANSPARENT_MODE_START,
TRANSPARENT_MODE_DEF,
TRANSPARENT_MODE_ACT,
TRANSPARENT_MODE_IOMODE,
TRANSPARENT_MODE_TYPE,
TRANSPARENT_MODE_CONFIG,
TRANSPARENT_MODE_CONNECT,
TRANSPARENT_MODE_CONNECT_RET,
TM_OK,
TM_NO,
TCPIP_CLOSE_START,
TCPIP_CLOSE_DEF,
TCPIP_CLOSE_ETCPIP,
TCP_IP_CLOSE_OK,
TCP_IP_CLOSE_NO,
GSM_SEND_TEXT_S,
GSM_MSG_MODE_S,
GSM_CHAR_MODE_S,
GSM_TEXT_MODE_FINISH,
SMS_READ_MESSAGE_START_S,
SMS_READ_CONTENT_S,
READ_SMS_FINISH,
INIT_GPS_FINISH_OK,
SIM900_LOC_START,
SIM900_GPRS_S,
SIM900_APN_S,
SIM900_PBR1_S,
SIM900_PBR2_S,
SIM900_LOC_S,
SIM900_LOC_G_S,
SIM900_LOC_FINISH
}SIM_STATUS ;
SIM_STATUS current_status = INIT0 ;
unsigned char is_gprs_mode_ok = 1; //gprs start succeed
unsigned char is_gprs_mode_start_succeed = 0; //gprs connect ok
UART_BUF buf_uart0; //gprs
char g_gprs_conn_ok=0; //GPRS處于連接狀態
unsigned char GPRS_BUF_SIZE;
//char ibusy = 0; //在發送數據的時候,心跳包停止
//REG
#define ATE0_CMD "ATE0\x00D\x00A" // 禁止回顯
#define CREG_CMD "AT+CREG?\x00D\x00A" // 查詢網絡注冊情況
#define CGMM_CMD "AT+CGMM\x00D\x00A"
#define SIMCARD_CMD "AT+CPIN?\x00D\x00A" //檢查登入移動設備(ME)的密碼,返回READY表示正常
//LD GPRS
#define GPRS_QD "AT+CSTT\x00D\x00A" // GPRS啟動
#define GPRS_JH "AT+CIICR\x00D\x00A" // 移動場景開啟,激活
//LGL GPRS
#define GPRS_DEF_PDP "AT+CGDCONT=1,\"IP\",\"CMNET\"\x00D\x00A" // 接入點
#define GPRS_ACT_PDP "AT+CGATT=1\x00D\x00A" // GPRS激活PDP
#define GPRS_CMNET_APN "AT+CIPCSGP=1,\"CMNET\"\x00D\x00A" // 設置GPRS模式
//CONNECT... GPRS
#define GPRS_BJ_ADDR "AT+CIFSR\x00D\x00A" // 獲取本地IP
#define GPRS_TCP1 "AT+CIPSTART=" // 建立一個IP連接
#define GPRS_TCP2 PROTOTOCOL
#define GPRS_TCP3 IPADDR
#define GPRS_TCP4 PORTNUM
#define PM "^SIM800A^"
//SEND GPRS
#define GPRS_SEND_DATA "AT+CIPSEND\x00D"
//SEND SMS
#define GSM_MSG_MODE "AT+CMGF=1\x00D\x00A"
//#define GSM_CENTER_NUM "AT+CSCA=\"+8613800512500\"\x00D\x00A"
#define GSM_CHAR_MODE "AT+CSCS=\"GSM\"\x00D\x00A"
#define GSM_SEND_TEXT "AT+CMGS=\"+8613512963352\"\x00D\x00A"
//READ SMS
#define SMSCAT "CMTI: \"SM\","
#define SMSCATRHOS "+CMT:"
//電源檢測
#define POWER_DETECT_CMD "AT+CBC\x00D\x00A"
#define SIGNAL_CMD "AT+CSQ\x00D\x00A" //;+CREG?
//modbus tcp
unsigned int ProID;
unsigned char yali_float_buf[4];
unsigned char signal_float_buf[4];
unsigned char battery_float_buf[4];
unsigned char timetag_float_buf[8];
#define USE_MODBUS_DATA_LENGTH 100
char modbus_buf[USE_MODBUS_DATA_LENGTH];
//*************************************************************************
// 函數聲明
//*************************************************************************
//void send_string_uart0(char *s)
void Port_Init();
void I2c_Init(void);
void uart0_init();
void read_data_pm100(void);
void read_data_timetag(void);
void start_gprs_mode(void);
void clear_buf_uart0(void);
void init_gprs(void);
void open_gprs_simple(void);
void creat_tcp();
void read_data_signal(void);
void read_data_power(void);
void Send_Modbus_16(void);
void Send_Modbus_3(void);
void send_string_uart0(char *s);
|
-
-
code.rar
2017-12-6 09:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
360.03 KB, 下載次數: 20, 下載積分: 黑幣 -5
|