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

📄 dvs-alar-out.c

📁 电话报警主机AT89S52单片机并带有网络模块通信协议
💻 C
字号:
//DVS-ALAR-OUT.C
#include "DVS-V1.0.H"


//============================================ 位定义 ========================================
bit	guc_BitTel  ; 															// 拔打电话标致位
//============================================================================================


//=========================================== 函数定义 =======================================
void AlarOut();																//报警输出
void ComAlarOut(unsigned char auc_ArmNub);									//传感器报警时串口报警信息输出
//============================================================================================


//=========================================== 外部定义 =======================================
//函数
extern unsigned char RdEEPROM(unsigned char address);						//读EEPROM
extern void WrEEPROM(unsigned char address,unsigned char indata);			//写EEPROM



//extern void RxTCPSame(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst);//返回协议	
extern void judgeRAYTC(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst);

	
extern void SendDTMEDat(unsigned char auc_data);							//DTMF拔号
extern void Delay1Ms(unsigned int auc_time);								//延时1MS
extern void SendToData(unsigned char *p,unsigned char Long);				//发送命令
extern void SendASC(unsigned char ASC)	;									//发送-个ASCII
extern void SuccBuzzer();													//设置成功时发出的声音
extern void FailBuzzer();													//设置失败时发出的声音
extern unsigned char DTMF();												//DTMF解码 
//extern void Greek_Listen_Ctrl();											//现场监听
//变量
extern unsigned char bdata	guc_74HC164LED;									//指示灯
extern unsigned int  data   guc_AlarTi;										//报警时间计数器
extern unsigned char data   guc_AlarCnt;									//拔号时计算器
extern unsigned char data   guc_AlarNub;									//防区号
extern unsigned int  data   guc_TiAlar;										//警笛时间	
extern unsigned int  data   guc_ERCTI;										//放音触出定时
extern unsigned char idata  RsBuf[32];										//接收缓冲区
extern unsigned char data  	guc_RsPoint;									//接收长度
extern unsigned int  data 	guc_Timer0;										//拔号按键定时计数器
extern unsigned int idata	guc_ENCD_TI;									//报警后开始放音,放到一定时间后开始打开现场听
//位
extern bit guc_bitbhOF;														//拔号开关
extern bit guc_bit_Alar_led;	
extern bit guc_Bit_BuChe;													//布撤防:1为布,0为撤
extern bit guc_bit_ERC;														//放音开关
extern bit guc_bit_SenAlar;													//传感器报警
extern bit guc_bit_AlLedOF;													//报警指示灯闪烁开关
extern bit guc_bit_ReturnAlarPul;											//在拔号时用户想停止报警
extern bit guc_bitENCD;														//现场听
//============================================================================================




extern void SendToData(unsigned char *p,unsigned char Long);	//发送命令

//============================================================================================
//语法格式:LiseCtrl()
//实现功能:发生警情时电话远程监听
//参数:	无
//返回值:	无
//创建时间:2008-12-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void LiseCtrl()
{



	guc_bitENCD = 0 ;													// 清除现场听标致
														
	guc_bit_ERC = 0;													// 关闭放音
	Play_Snd = 1;														// 关闭放音
	



	Listen_CTRL = 1;													//打开现场监听
//	SendToData("25",2);
}




//============================================================================================
//语法格式:Telephone()	
//实现功能:拔打电话
//输入参数:无
//返回参数:无
//创建时间:2009-02-27          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void Telephone()											// 拔打电话
{
	unsigned char idata luc_Len,luc_i;
	unsigned char idata luc_Buf[PH_CODE_LEN];
	HANDUP = 1;																		//挂机
	Delay1Ms(1000);		
	for(luc_Len=0 ;luc_Len<PH_CODE_LEN - 1;luc_Len++)
	{
		luc_Buf[luc_Len] = RdEEPROM(STER_ADDR+PH_CODE_LEN*guc_AlarCnt+luc_Len+1);	//第一个字节为'F'
		if(luc_Buf[luc_Len]==0xff)break;
	}	
	for(luc_i = 0 ;luc_i <luc_Len ; luc_i++)
	{
		SendDTMEDat(luc_Buf[luc_i]);
	}
}




//============================================================================================
//语法格式:AlarOut()
//实现功能:传感器报警输出
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void AlarOut()
{
	if(guc_bitbhOF)
	{	
		if((guc_bit_SenAlar)&&(guc_Bit_BuChe))						// 传感器遥控控制,如果布防了
		{
			if((guc_BitTel)&&(!ONLINE))								// 如果电话线断了,也不拔打电话
			{
				if(RdEEPROM(STER_ADDR+PH_CODE_LEN*guc_AlarCnt)=='F')// 如果没有电话号码也不打电话
				{
					guc_BitTel = 0 ; 								// 拔打电话标致位清0
					Telephone()	; 									// 拔打电话
					guc_ERCTI = REC_PLAY_TIME;						// 放音开始定时
					guc_bit_ERC = 1;								// 拔完号之后开始放音
					guc_AlarTi = ALARTIME;							// 报警开始定时60秒
					guc_ENCD_TI = 32*20;							// 20秒后开始现场听
					guc_bitENCD = 1 ;								// 现场听标致
				}
			}
			if((guc_ENCD_TI==0)&&(guc_bitENCD)) LiseCtrl();
			if(guc_AlarTi == 0)
			{
				HANDUP = 0;											// 挂机
				Delay1Ms(3000);										// 延时等待电话线复位
				guc_BitTel = 1 ; 									// 拔打电话标致位
				guc_bit_ERC = 0;									// 关闭放音
				Listen_CTRL = 0;									// 关闭现场监听
				guc_AlarCnt++;
			}
			if(guc_AlarCnt>=9) 
			{		
				guc_AlarCnt = 0;									// 拔号时计算器
				guc_bit_SenAlar = 0;								// 关闭传感器报警
			}
		}
	}
}


//============================================================================================
//语法格式:ComAlarOut()
//实现功能:传感器报警时串口报警信息输出
//参数:	防区号
//返回值:	无
//创建时间:2008-12-29          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void ComAlarOut(unsigned char auc_ArmNub)
{
	unsigned char data luc_temp;
	bit bit_ok = 0;
	luc_temp = auc_ArmNub-1;
	judgeRAYTC(ALARCPP,1,&luc_temp);								// 发送警情信息
	guc_RsPoint = 0;												// 清除接收长度
//	Delay1Ms(1000);													// 等待传感器不再发出信号
}



⌨️ 快捷键说明

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