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

📄 dvs-funset.c

📁 电话报警主机AT89S52单片机并带有网络模块通信协议
💻 C
📖 第 1 页 / 共 2 页
字号:
					{
						case 1:	luc_SData = luc_Buf[0];									break;
						case 2:	luc_SData = luc_Buf[0]*10+luc_Buf[1];					break;
						case 3:	luc_SData = luc_Buf[0]*100+luc_Buf[1]*10+luc_Buf[2];	break;
					}
					return luc_SData;
				}
			}
			break;
		}
		else if(luc_data!=0) FailBuzzer();						//设置失败时发出的声音
	}
	return 0;
}
//============================================================================================
//语法格式:SetGogeTiw()
//实现功能:设置共同的两次设置
//参数:	无
//返回值:	执行1或10,设置失败0
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================	
unsigned char SetGogeTiw()
{
	unsigned char data luc_data;
	unsigned char data luc_temp;
	while(1)
	{
		if(guc_Timer0 == 0) break;
		luc_data = DTMF();
		if(luc_data==0x0c)
		{
			SuccBuzzer();												//设置成功时发出的声音
			while(1)
			{
				luc_data = DTMF();
				if(guc_Timer0 == 0) break;								//如果按键长时间没有按,则退出函数
				if((luc_data == 10)||(luc_data == 1)) 
				{
					luc_temp = luc_data;
					SuccBuzzer();										//设置成功时发出的声音
					while(1)
					{
						luc_data = DTMF();
						if(guc_Timer0 == 0) break;						//如果按键长时间没有按,则退出函数
						if(luc_data ==0x0c)
						{
							 return luc_temp;	
						}
						else if(luc_data!=0)  FailBuzzer();				//设置失败时发出的声音
					}
					break;
				}
				else if(luc_data!=0) FailBuzzer();						//设置失败时发出的声音
			}
			break;
		}
		else if(luc_data!=0) FailBuzzer();								//设置失败时发出的声音
	}
	return 0 ;
}






//============================================================================================
//语法格式:SetRingCnt()
//实现功能:设置振铃次数
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void SetRingCnt()
{
	unsigned char data luc_SData;
	luc_SData = SetTiGoge()	;						
	if((2<=luc_SData)&&(luc_SData<=10))
	{
		SuccBuzzer();										//设置成功时发出的声音
		WrEEPROM(Ring_Cnt_Addr,luc_SData);	
	}
	else FailBuzzer();										//设置失败时发出的声音
}
//============================================================================================
//语法格式:SetAlarTI()
//实现功能:设置警笛声时间
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================	
void SetAlarTI()
{
	unsigned char data luc_SData;
	luc_SData = SetTiGoge()	;	
	if((0<luc_SData)&&(luc_SData<=99))
	{
		SuccBuzzer();										//设置成功时发出的声音
		WrEEPROM(Alar_TI_Addr,luc_SData);					//保存到EEPROM里
		judgeRAYTC(SET_COM_WAR_TIME,1,&luc_SData);			//发送到网络模块
	}
	else FailBuzzer();										//设置失败时发出的声音
}


//============================================================================================
//语法格式:SetDialOF()
//实现功能:设置拔号开关
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================	
void SetDialOF()
{
	unsigned char data luc_temp;
	luc_temp = SetGogeTiw();
	if(luc_temp!=0)
	{
		switch(luc_temp)
		{
			case 10:guc_bitbhOF = 0;	break;			//拔号开关关
			case 1: guc_bitbhOF = 1;	break;			//拔号开关开
			default:break;
		}
		SuccBuzzer();									//设置成功时发出的声音
	}
	else FailBuzzer();									//设置失败时发出的声音
}
//============================================================================================
//语法格式:SetOnLineAlar()
//实现功能:设置断线报警
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================	
void SetOnLineAlar()
{
	unsigned char data luc_temp;
	luc_temp = SetGogeTiw();
	if(luc_temp!=0)
	{
		switch(luc_temp)
		{
			case 10:guc_bitLineOFAlar = 0;	break;				//断线报警关闭	
			case 1: guc_bitLineOFAlar = 1;	break;				//断线报警打开
			default:break;
		}
		SuccBuzzer();											//设置成功时发出的声音
	}
	else FailBuzzer();											//设置失败时发出的声音
}
//============================================================================================
//语法格式:SetBuChe()
//实现功能:设置布撤防
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================	
void SetBuChe()
{
	unsigned char data luc_temp;
	luc_temp = SetGogeTiw();
	if(luc_temp!=0)
	{
		switch(luc_temp)
		{
			case 10:CheFanDis();	break;						//撤防
			case 1: BuFanDis();		break;						//布防
			default:break;
		}
		SuccBuzzer();											//设置成功时发出的声音
	}
	else FailBuzzer();											//设置失败时发出的声音
}


//============================================================================================
//语法格式:Greek_Listen_Ctrl()
//实现功能:现场监听控制
//参数:	无
//返回值:	无
//创建时间:2008-12-29          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void Greek_Listen_Ctrl()
{
	Listen_CTRL = 1;											//打开现场监听
	guc_Timer0 = 32 * 30;										//30秒没有按任何键则退出
	while(1)
	{
		if(DTMF()==0x0c)	break;								//以"#"键确定
		if(guc_Timer0 == 0) break;								//如果按键长时间没有按,则退出函数		
	}
	guc_Timer0 = 0;
	Listen_CTRL = 0;											//关闭现场监听
}




//============================================================================================
//语法格式:User_REC_End()
//实现功能:用户录音
//参数:	无
//返回值:	无
//创建时间:2009-02-10          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void User_REC_Enad()	//用户录音
{
	bit luc_bit;
	SuccBuzzer();													//设置成功时发出的声音
	luc_bit = ALARM_LED;
	ALARM_LED = 0;													//设置灯点亮
	REC_Enabled = 0;												//录音打开
	Delay1Ms(1000*7);												//延时10秒
	REC_Enabled = 1;												//录音关闭
	ALARM_LED = luc_bit;											//恢复设置灯
	SuccBuzzer();													//设置成功时发出的声音
}

//============================================================================================
//语法格式:Fun_SET()
//实现功能:功能设置
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void Fun_SET()
{
	unsigned char data luc_data;								//DTMF解码数据	
	while(1)
	{
		luc_data = DTMF();
		if(guc_Timer0 == 0) break;								//如果按键长时间没有按,则退出函数
		if((0<luc_data)&&(luc_data<10))
		{
			SuccBuzzer();										//设置成功时发出的声音
			switch(luc_data)
			{
				case PHONE_CODE		: 	SavePhontCode();	break;	//设置保存电话号码
				case SET_PASS		:	SetPass();			break;	//设置密码
				case SET_RING_CNT	:	SetRingCnt();		break;	//设置振铃次数
				case SET_DIAL_OF	:	SetDialOF();		break;	//设置拔号的开关
				case SET_ALAR_TI	:	SetAlarTI();		break;	//设置警笛声时间
				case SET_ONLINE_ALAR:	SetOnLineAlar();	break;	//设置断线报警
				case SET_BUCHE		:	SetBuChe();			break;	//设置布撤防
				case DE_LISTEN		:	Greek_Listen_Ctrl();break;	//现场监听
				case USER_REC_ENAD 	:	User_REC_Enad();	break;	//用户录音
				default:break;
			}
			break;
		}
		else if(luc_data!=0) FailBuzzer();							//设置失败时发出的声音
	}
}
//============================================================================================
//语法格式:RstInit2()
//实现功能:工厂复位第2次比较数据
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void RstInit2()
{
	unsigned char data luc_i;
	unsigned char data luc_data;					//DTMF解码数据	
	unsigned char data luc_DataLen = 0;				//DTMF解码数据长度	
	unsigned char data luc_Buf[5];
	bit bit_ok;
	while(1)
	{
		luc_data = DTMF();
		if(guc_Timer0 == 0) break;					//如果按键长时间没有按,则退出函数
		if((0<luc_data)&&(luc_data<=10))
		{
			if(luc_data==10)luc_data = 0;
			luc_Buf[luc_DataLen++] = luc_data;	
		}
		if(luc_data==0x0b)	luc_DataLen = 0;		//"*"键重新输入
		if(luc_data==0x0c)							//以"#"键确定
		{
			for(luc_i = 0 ; luc_i < 4; luc_i++)
			{
				if(luc_Buf[luc_i] == Rst_Tab2[luc_i]) bit_ok = 1;
				else 
				{
					bit_ok = 0 ;
					break;
				}
			}
			if(bit_ok)
			{
				SuccBuzzer();						//设置成功时发出的声音
				SaveInit();							//保存初始化的值
			}	
			break;
		}
	}
}



//============================================================================================
//语法格式:RstInit()
//实现功能:工厂复位第1次比较数据
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void RstInit()
{
	unsigned char data luc_i;
	unsigned char data luc_data;					//DTMF解码数据	
	unsigned char data luc_DataLen = 0;				//DTMF解码数据长度	
	unsigned char data luc_Buf[4];
	bit bit_ok;
	while(1)
	{
		luc_data = DTMF();
		if(guc_Timer0 == 0) break;					//如果按键长时间没有按,则退出函数
		if((0<luc_data)&&(luc_data<=10))
		{
			if(luc_data==10)luc_data = 0;
			luc_Buf[luc_DataLen++] = luc_data;
		}
		if(luc_data==0x0b)	luc_DataLen = 0;		//"*"键重新输入
		if(luc_data==0x0c)							//以"#"键确定
		{
			for(luc_i = 0 ; luc_i < 4; luc_i++)
			{
				if(luc_Buf[luc_i] == Rst_Tab[luc_i]) bit_ok = 1;
				else 
				{
					bit_ok = 0 ;
					break;
				}
			}	
			if(bit_ok)
			{
				SuccBuzzer();						//设置成功时发出的声音
		 		RstInit2();							//比较第2次号码
		 	}
			break;
		}
	}
}



//============================================================================================
//语法格式:In_Fun_SET()
//实现功能:进入设置状态
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void In_Fun_SET()
{
	unsigned char data luc_i;
	unsigned char data luc_data;					//DTMF解码数据	
	unsigned char data luc_DataLen = 0;				//DTMF解码数据长度	
	unsigned char data luc_Buf[4];
	unsigned char data luc_RstLen = 0;				//工厂复位长度	
	unsigned char data luc_temp;
	bit bit_ok;
	StarSetFun();									//开始设置各种功能
	SetWordDisp();									//设置时LED指示
	guc_bit_AlLedOF = 0	;							//报警指示闪烁灯关
	ALARM_LED = 0;									//撤防时报警指示点亮
	SUN_LED = SUN_LED_OFF;							//撤防时电源指示点亮
	if(guc_bitPhSet)	GreekVoice();				//如果是远程控制,远程控制时成功提示音				
	while(1)
	{
		luc_data = DTMF();
		luc_temp = luc_data;
		if(guc_Timer0 == 0)		break;				//如果按键长时间没有按,则退出函数	
		if((luc_DataLen<=4)&&(0<luc_data)&&(luc_data<=10))
		{
			if(luc_data==10)luc_data = 0;
			luc_Buf[luc_DataLen++] = luc_data;
		}
		if(luc_data==0x0b)
		{
			luc_RstLen++;
			luc_DataLen = 0;					//"*"键重新输入
		}
		if(luc_RstLen == 3)						//进入工厂恢复
		{
			SuccBuzzer();						//设置成功时发出的声音
			RstInit();							//恢复初始化
			break;
		}
		if(luc_data==0x0c)						//以"#"键确定,比较密码
		{
			for(luc_i = 0 ; luc_i < 4 ; luc_i ++)
			{
				if(guc_PassBuf[luc_i] == luc_Buf[luc_i]) bit_ok = 1;//如果密码相等处理,否则退出
				else
				{
					bit_ok = 0;
					break;
				}
			}	
			if(guc_bitPhSet) 						//如果是远程控制
			{
				if(bit_ok)
				{
					GreekVoice();					//远程控制时成功提示音
					Fun_SET();
				}
				else	FailBuzzer();				//设置失败时发出的声音
			}
			else 
			{
				SuccBuzzer();						//设置成功时发出的声音
				Fun_SET();
			}
			break;
		}
	}
	OverSetFun();								//结束设置各种功能
}

⌨️ 快捷键说明

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