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

📄 ftydevmain.cpp

📁 采用LPC的芯片做的气体排放检测,包括气体成分分析,数据的处理,数据传输给工作站.
💻 CPP
字号:
//DevMain.c
////////////////////////////////////////////////////////////////////
//本 c 文件统筹整个系统。
//
//文件层次: 
//作者:黄伟德
//日期:2005
//版本:初版,V1.0
////////////////////////////////////////////////////////////////////
#include  "config.h"
//#include	"stdafx.h"
#include	"target.h"
#include	"sed1335_driver.h"
extern	U8	Data373_2; 	
extern	void	HappyLED(U8 stat);
extern	U8	KeyScan();
/**********************************************************************
**系统需要保持的设置(全局变量),每次开机从EEPROM读出,被修改时写入EEPROM
**1.语言设置------------------------g_ucLanguageIndex
**2.串口设置---------------g_ucProtocol
**			---------------g_ucBaudRate
**			---------------g_ucMachineAddr
**3.数据过滤模式--------------------g_ucFilterMode
**4.加速触发参数-----------g_ucTriggerParam(有三个参数,对应三种过滤模式)

** .打印设置
#define		ROM_ADDR_LANGUAGE		(U16)0

#define		ROM_ADDR_PROTOCOL		(U16)1
#define		ROM_ADDR_BAUDRATE		(U16)2
#define		ROM_ADDR_MACHINEADDR	(U16)3

#define		ROM_ADDR_FILTERMODE		(U16)4
//占三个字节	addr5 - addr7
#define		ROM_ADDR_TRIGGERPARA	(U16)5
#define		ROM_ADDR_	(U16)
**********************************************************************/
U8 		g_ucLanguageIndex;
U16		g_AcceleDataBuf[500];
U16 	g_wNBuf[16];
U8		g_ucMessageCode;
U8		g_ucKeyDownData;
U8		g_ucKeyData;
U8		g_ucOldSubMenu;
BOOL		g_bTriggerMode;
U8	RegNoData[10];

MENU_ITEM_DATA		g_CurrentData;
BIT_IN_U8_UNION		g_BitInU8Stat[3];
_UP_HOST_CMD_INFO	g_HostCmdInfo;
_DEV_FTY100_DATA	g_FTY_Data;

U8	g_ucStatusCode;
U8	g_ucProtocol;
U8	g_ucMachineAddr;
U8	g_ucBaudRate;
U8  ucSubMenu;
U8		g_ucFilterMode;
U8		g_ucTriggerParam;


extern	U16		g_wSavedDataLen;
extern	U16		g_wLastDataRecord;
void	Init_g_Verialble(void)
{
#ifndef _AFXDLL
	U8	Buf[32];
	memset((U8*)Buf,0,sizeof(Buf));
	Read24c256((U8*)Buf,(U16)0,10);
	if((Buf[ROM_ADDR_LANGUAGE] & 0x03) > 1)		g_ucLanguageIndex 	= 1;
	else							g_ucLanguageIndex 	= Buf[ROM_ADDR_LANGUAGE];
	if(Buf[ROM_ADDR_LANGUAGE] & 0x04)		g_bTriggerMode	= TRIGGER_MANUAL;
	else										g_bTriggerMode	= TRIGGER_AUTO;

	if(Buf[ROM_ADDR_FILTERMODE]>2)	g_ucFilterMode		= 0;
	else							g_ucFilterMode		= Buf[ROM_ADDR_FILTERMODE];

	if(Buf[ROM_ADDR_PROTOCOL]>2)	g_ucProtocol = 0;
	else							g_ucProtocol = Buf[ROM_ADDR_PROTOCOL];
	if(Buf[ROM_ADDR_BAUDRATE]>2)	g_ucBaudRate = 0;
	else							g_ucBaudRate = Buf[ROM_ADDR_BAUDRATE];
	if(Buf[ROM_ADDR_MACHINEADDR]>31)g_ucMachineAddr = 1;
	else							g_ucMachineAddr = Buf[ROM_ADDR_MACHINEADDR];
	
	if(	Buf[ROM_ADDR_TRIGGERPARA+g_ucFilterMode] < 10	|| 
			Buf[ROM_ADDR_TRIGGERPARA+g_ucFilterMode] > 100		)
						g_ucTriggerParam	= 20;
	 	else			g_ucTriggerParam	= Buf[ROM_ADDR_TRIGGERPARA+g_ucFilterMode];	
// 		g_ucTriggerParam	= 20;
	if(Buf[ROM_ADDR_REG_NO]>34)		Buf[ROM_ADDR_REG_NO]=0;
	*(U16*)(RegNoData) = *((U16*)((U8*)(ShortProvinceName+2*Buf[ROM_ADDR_REG_NO])));
	if(Buf[ROM_ADDR_REG_NO+1]<'A' || Buf[ROM_ADDR_REG_NO+1]>'Z' )	RegNoData[2] = 'A';
	else							RegNoData[2] = Buf[ROM_ADDR_REG_NO+1];
	RegNoData[3] = '-';
	RegNoData[4] = '5';
	RegNoData[5] = '5';
	RegNoData[6] = '5';
	RegNoData[7] = '5';
	RegNoData[8] = '5';
	RegNoData[9] = 0;

	
	memset((U8*)Buf,0,4);
	Read24c256((U8*)Buf,(U16)ROM_ADDR_SAVE_DATA_LAST,4);
	g_wLastDataRecord	= *(U16*)((U8*)Buf);
	if(g_wLastDataRecord > SAVE_DATA_MAX_NUM-1)	g_wLastDataRecord = 0;
	g_wSavedDataLen		= *(U16*)((U8*)Buf+2);
	if(g_wSavedDataLen > SAVE_DATA_MAX_NUM)		g_wSavedDataLen = SAVE_DATA_MAX_NUM;
//	g_ucLanguageIndex 	= 1;	
//	g_ucProtocol		= PROTOCOL_FOFEN;
//	g_ucMachineAddr 	= 2;
// 	g_ucBaudRate		= 0;	
//	g_ucFilterMode		= 0;
//	g_ucTriggerParam	= 20;
//	g_bTriggerMode		= TRIGGER_AUTO;
#endif
	
	g_ucKeyDownData		= 0;
	g_ucKeyData			= 0;

	ucSubMenu			= 1;
	g_ucOldSubMenu		= 1;	
	memset((U8*)&g_HostCmdInfo,	0,sizeof(_UP_HOST_CMD_INFO)	);
	memset((U8*)g_wNBuf,		0,sizeof(g_wNBuf)			);
	memset((U8*)g_AcceleDataBuf,0,sizeof(g_AcceleDataBuf)	);
	
}
int main(void)
{ 	
	MENU_ITEM_DATA	ChangeMenu;
   	for(g_wNBuf[1]=0; g_wNBuf[1]<5000; g_wNBuf[1]++);
   	TargetInit();		// 硬件初始化,
   	LPC21F_PIO_CfgAllInput();

   	LPC21F_GPIO_CfgOutput(LPC21_PIO_1_BASE,P1_16_23|P1_24|P1_25|P1_26|P1_27|P1_28|P1_30);
   	LPC21F_GPIO_CfgOutput(LPC21_PIO_0_BASE,0xfffff&(~(KEY1|KEY2|KEY3|KEY4|KEY5|KEY6))); 
   	LPC21F_GPIO_ClearOutput(LPC21_PIO_1_BASE,P1_24|P1_25|P1_26|P1_27);// 373的锁存控制全部为0
   	Data373_2 = 0xff;
   	Write373_2(Data373_2); 
    for(g_wNBuf[0]=0;g_wNBuf[0]<10;g_wNBuf[0]++)
   	{   		
   		HappyLED(1);
   		for(g_wNBuf[1]=0; g_wNBuf[1]<5000; g_wNBuf[1]++);
   		HappyLED(0);
		for(g_wNBuf[1]=0; g_wNBuf[1]<5000; g_wNBuf[1]++);
	} 
	g_wNBuf[0]=g_wNBuf[1]=0;
   	initLCD();
   	ClearLCD(0x40,0,0,40,240);
   	ClearLCD(0x00,0,0,40,240);
   	Init_g_Verialble();	// 全局变量 初始化
		
	memset((U8*)&ChangeMenu,0,sizeof(MENU_ITEM_DATA));
	memcpy((U8*)&g_CurrentData,(U8*)MenuArray,sizeof(MENU_ITEM_DATA));	
	
	WarmUpMeasure(&ucSubMenu);
	HT1380_ReadTime();
	g_ucKeyDownData = KEY_OK;
	KeyNote();
	while (TRUE)
	{
WHILE_LOOP:
		memcpy((U8*)&ChangeMenu,(U8*)&g_CurrentData,sizeof(MENU_ITEM_DATA));
		if(g_ucKeyDownData == 0)
		{
			ClearLCD(0x40,0,0,40,210);
			if (g_CurrentData.pParentMenu == NULL)
			{// 显示菜单
				DispString((const S8*)(CommonTip[TIP_ID_MENU+g_ucLanguageIndex*COMMON_TIP_MAX_NUM]),14,6,0);
			}
			else
				DispString((const S8*)(g_CurrentData.pParentMenu->pString[g_CurrentData.ucNumInParent-1+g_ucLanguageIndex*g_CurrentData.pParentMenu->ucMaxSubItem]),14,6,0);
			DispSubMenuItem(g_CurrentData);
			DispSubMenuNum(g_ucOldSubMenu/*g_CurrentData.pChildMenu->ucNumInParent*/,g_CurrentData.ucMaxSubItem,
							g_CurrentData.ucX0,g_CurrentData.ucY0,g_CurrentData.ucLineWidth);
		}
		memcpy((U8*)&ChangeMenu,(U8*)(ChangeMenu.pChildMenu+g_ucOldSubMenu-1),sizeof(MENU_ITEM_DATA));
			DispHandTip(ChangeMenu.ucNumInParent,g_CurrentData.ucMaxSubItem,
							g_CurrentData.ucX0,g_CurrentData.ucY0,g_CurrentData.ucLineWidth);
		//memcpy(&ChangeMenu,MenuArray+g_ucOldSubMenu,sizeof(MENU_ITEM_DATA));
		while(TRUE)
		{
			DispHHMMSS(30,0);
			if(!SleepAndQueryMsg(1000))	
			{
				switch(g_ucKeyData)
				{
				case KEY_ESCAPE:
					g_ucOldSubMenu = g_CurrentData.ucNumInParent;
					if (g_CurrentData.pParentMenu != NULL)
					{
						memcpy((U8*)&g_CurrentData,(U8*)(g_CurrentData.pParentMenu),sizeof(MENU_ITEM_DATA));
						goto	WHILE_LOOP;
					}
					break;
				case KEY_UP:
					memcpy((U8*)&ChangeMenu,(U8*)(ChangeMenu.pUpMenu),sizeof(MENU_ITEM_DATA));
					DispSubMenuNum(ChangeMenu.ucNumInParent,g_CurrentData.ucMaxSubItem,
						g_CurrentData.ucX0,g_CurrentData.ucY0,g_CurrentData.ucLineWidth);
					DispHandTip(ChangeMenu.ucNumInParent,g_CurrentData.ucMaxSubItem,
							g_CurrentData.ucX0,g_CurrentData.ucY0,g_CurrentData.ucLineWidth);
					break;
				case KEY_DOWN:
					memcpy((U8*)&ChangeMenu,(U8*)(ChangeMenu.pDownMenu),sizeof(MENU_ITEM_DATA));
					DispSubMenuNum(ChangeMenu.ucNumInParent,g_CurrentData.ucMaxSubItem,
						g_CurrentData.ucX0,g_CurrentData.ucY0,g_CurrentData.ucLineWidth);
					DispHandTip(ChangeMenu.ucNumInParent,g_CurrentData.ucMaxSubItem,
							g_CurrentData.ucX0,g_CurrentData.ucY0,g_CurrentData.ucLineWidth);
					break;
		   		case KEY_OK:
					if (ChangeMenu.pString == NULL)
					{
						if(!ChangeMenu.Function(&ucSubMenu))
							goto	WHILE_LOOP;					
						g_ucOldSubMenu = ChangeMenu.ucNumInParent;
					}
					else						
					{
						memcpy((U8*)&g_CurrentData,(U8*)&ChangeMenu,sizeof(MENU_ITEM_DATA));
						g_ucOldSubMenu = 1;
					}
					goto	WHILE_LOOP;
				}
			}
		}
	}		 
	return 1;
}

⌨️ 快捷键说明

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