⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fc802b.c

📁 MSP430F147软件配合液晶(IIC接口)显示
💻 C
字号:
//***************************************
//修改:修改了
//int SetYMDH(int STimeFlag,unsigned char *time,unsigned char Tvalue,int Ulimt,int Dlimt);
//void SetYearMoDay(void); 这两个函数
//时间:2003.7.1
//***************************************//
#include<msp430x14x.h>
#include<in430.h>
//#include"802b.h"
#include "sysinit.c"	//系统初始化
//#include "display.c"	//显示程序

#define FLASH_ADDRESS 0x1000 //宏定义信息FLASH存储器B段地址
#define O_ADress 0x28//源地址
#define T_ADress 0x01//目的地址
#define ID_Adress 0x02//本机识别地址
#define OilPresAdrH 0x10f1//油压传感器常数存放高位地址
#define OilPresAdrL 0x10f0//油压传感器常数存放低位地址
#define OilTempAdrH 0x10f3//油温传感器常数存放高位地址
#define OilTempAdrL 0x10f2//油温传感器常数存放低位地址
#define auchCRCHi  0x0c000;//CRC16高位参数的存放地址占256字节
#define auchCRCLo  0x0c100;//CRC16低位参数的存放地址占256字节

unsigned char cFLASH_Value=0;
unsigned int iFLASH_Value=0;

//unsigned char *puchMsg ; /* 要进行CRC校验的消息 */
//unsigned short usDataLen ; /* 消息中字节数 */ 
unsigned short KeyFlag=1,FunctionValue,KeyValue,SendTimerFlag,Read9033Flag;
unsigned char Sw[2],OilFlag,SwFlag,T500msFlag,ErrFlag,flag;
void Flash_wb(char *,char);
void Flash_ww(int *,int);
void Flash_clr(int *);
void Init(void);
void SendEFrame(void);
unsigned short CRC16(unsigned char *puchMsg, unsigned short usDataLen);
int ADvalue[8];
      
struct SysTime
        {
             int  s01;
             int  s;
             int  m;
             int  h;
             int  dot;
        };
struct SysTime Time;
     
struct SetTime 
             {
                
                int year;
                int month;
		int week;
                int day;
                int hour;
                int min;
                int sec;
              } STime;
                      
//void sys_init(void);
//void Display(char* D_Value);
//void Display1(int Tvalue);
void SetYearMoDay(void);
unsigned char CRC_FUN(unsigned char total);
void ADInit(void);
void UartInit(void);
void delay(int value);
void AFrame_data(void);
void EFrame_data(void);
void SysTest(void);
//int SetYMDH(int Tvalue,int Ulimt,int Dlimt);
int SetYMDH(int STimeFlag,unsigned char *time,unsigned char Tvalue,int Ulimt,int Dlimt);
void UIAlarmLimitSet(void);
void OilAlarmLimitSet(void);
void UpDispData(char* D_Data);
void DownDispData(char* D_Data);
void InitEDA9033(void);
void TimeSet(void);//上位机对该设备设置年月日和时间
void RelayCtl(void);  //对继电器开关控制
void StartAdc1(void);
void SendOK(void);
void SendErr(void);
extern int _setMap(int * A_ptr,char name[],char x,char g[]);
unsigned char A_Data[100];
unsigned char E_Data[100];
unsigned char Data[100],RxBuffer[100],TxBuffer[100];
unsigned int cosq;
int U[3],I[3],UaLimitH,UaLimitL,UbLimitH,UbLimitL,UcLimitH,UcLimitL;
char IaLimitH,IaLimitL,IbLimitH,IbLimitL,IcLimitH,IcLimitL;
long int P,unP;
int OilPLimitH,OilPLimitL,OilTLimitH,OilTLimitL;
char Sw1State,Sw2State;
int Crc_R[8]={0xe0,0x70,0x38,0x1c,0x0e,0x07,0xe3,0x91};
int DispFlag=0,CommandFlag=1,Q,unQ;

unsigned char UI[18];//Ua=UI[0,1];Ia=UI[2,3];Ub=UI[4,5];Ib=UI[6,7];Uc=UI[8,9];Ic=UI[10,11];P=UI[12,13];Q=UI[14,15],COSQ=UI[16,17]
                     //高位在前,低位在后, P,Q,COSQ的最高位为符号位, 1表示负数,0表示正数。
                     //P表示有功功率,Q表示无功功率, COSQ表示功率因数。 
unsigned char PL[6];//Pa=PL[0,1];Pb=PL[2,3];Pc=PL[4,5]
                    // 高位在前,低位在后, Pa,Pb,Pc的最高位为符号位, 1表示负数,0表示正数。    
unsigned char WP9033[4];//WP_9033=WP9033[0,1,2,3]     
                        // 高位在前,低位在后, WP_9033的最高位为符号位, 1表示负数,0表示正数。
                        //WP_9033表示总的有功电量。       
float Computer_value[14];//Computer_value[1]=Ua;Computer_value[2]=Ia;Computer_value[3]=Ub;Computer_value[4]=Ib;Computer_value[5]=Uc;
                         //Computer_value[6]=Ic;Computer_value[7]=P;Computer_value[8]=Q;Computer_value[9]=COSQ;Computer_value[10]=Pa;
                         //Computer_value[11]=Pb;Computer_value[12]=Pc;Computer_value[13]=WP_9033;
                         //这个数组保存的是已经计算为浮点数的各测量参数的值。 
void main(void)
{  
//unsigned char  systime[7]={0,40,22,29,0,6,3};
int UpFlag=5,DownFlag=5;
unsigned char DataLen,i;
unsigned char DispSel_Value=0;                    //在显示功能中显示项的选择标志
//char D_Data[40];
  WDTCTL=WDTPW+WDTHOLD;                         //*关WDT只在调试时使用,发行时应正常使用WDT。*//
 
//系统时钟初始化
 do 
  {
  IFG1 &= ~OFIFG;                       // Clear OSCFault flag
  for (i = 0xFF; i > 0; i--);           // Time for flag to set
  }
  while ((IFG1 & OFIFG) != 0);          // OSCFault flag still set?                
  BCSCTL1 &=~(XT2OFF+XTS);     	    //启动XT2晶振,ACK为XT1,不分频;
  BCSCTL2 |=(SELS+SELM_2);          //MCLK=XT2不分频;SMLCK=XT2不分频;
  
  
  				//系统初始化 sysinit.c\sysinit();
//1、系统检测(功能代码:E8H,帧类别代码:57H,命令代码:01H);
//2、系统遥测(三相交流电电压(Ua、Ub、Uc)、电流(Ia、Ib、Ic)有效值、有功功率P、无功功率、功率因数、累计电量;功能代码:E8H,帧类别代码:57H,命令代码:02H,该命令用于从新启动测量);
//3、遥信(可以返回油压、油温两路模拟量和两路开关量;功能代码:E8H,帧类别代码:57H,命令代码03H);
//4、系统遥控(继电器开关量包含8路无源开关量控制输出(开关编码1…8);功能代码E0H/E1H/E2H/E3H,帧类别代码:57H,命令代码:04H)
//5、设置时钟(功能代码:EEH,:1…8,功能代码:E9H,帧类别代码:48H,命令代码:07H); 
//8、设置油压、油温测量常数(功能粗±啾鸫

⌨️ 快捷键说明

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