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

📄 dvs-rem-chtl.c

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


//=========================================== 函数定义 =======================================
void BuFanDis();															//布防处理
void BuFan();																//布防处理
void CheFanDis();															//撤防处理
void CheFan();
void BHStopAlar();															//在拔号时用户想停止报警
//============================================================================================




//=========================================== 外部定义 =======================================
//函数
extern void ScanRemDis();													//扫描遥控并处理
extern void ONAlarSoun();													//打开警号声													//打开警号声
extern void OFFAlarSoun();													//关闭警号声
extern void Fun_SET();														//功能设置
extern void ClearRem();														//清除2272解码后的数据 
extern void SuccBuzzer();													//设置成功时发出的声音
extern void FailBuzzer();													//设置失败时发出的声音	
extern void In_Fun_SET();													//扫描功能设置
extern void DispAlarLED();													//防区指示灯
extern void RemIn();														//315解码
extern void ComAlarDis(unsigned char auc_Nub);								//处理球机报警
extern void SetWordDisp();													//各种设置时各LED指示
extern void Delay1Ms(unsigned int auc_time);								//延时1MS	
extern void WrEEPROM(unsigned char address,unsigned char indata);			//写EEPROM
extern unsigned char RdEEPROM(unsigned char address);						//读EEPROM
extern unsigned char JudgeDupAddr(unsigned char *p_PDst);					//判断是否有重复的地址
extern void SendToData(unsigned char *p,unsigned char Long);				//发送命令
extern void SendASC(unsigned char ASC);										//发送-个ASCII
extern void ComAlarOut(unsigned char auc_ArmNub);							//传感器报警时串口报警信息输出
extern void judgeRAYTC(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst);//返回协议
//变量
extern unsigned int  data  guc_Timer0;										//拔号按键定时计数器
extern unsigned int  data  guc_KATime;										//警响声定时计数器
extern unsigned char data  guc_AlarCnt;										//拔号时计算器
extern unsigned int  data  guc_AlarTi;										//报警时间计数器
extern unsigned char idata guc_REM_TI;										//315解码时间计数器
extern unsigned char idata guc_REM_Temp;									//解码接收临时变量
extern unsigned char bdata	guc_74HC164LED;									//指示灯
//数组
extern unsigned char data guc_R315Buf[3];									//315解码后的数据
//位
extern bit guc_Bit_BuChe;													//布撤防:1为布,0为撤
extern bit guc_bit_RemCom;													//2272解码时为1
extern bit guc_bit_SenAlar;													//传感器报警
extern bit guc_bit_AlLedOF;													//报警指示灯闪烁开关
extern bit guc_bit_Alar_led;												//防区指示灯闪
extern bit POW_GlimmLEDOF;													//电源指示灯闪烁开关
extern bit guc_bit_RemAlar;													//紧急报警LED指示灯标致
extern bit guc_bit_ReturnAlarPul;											//在拔号时用户想停止报警
extern bit guc_BitTel ; 													// 拔打电话标致位
//extern bit guc_bitAlarPul2;													//报警标致,1为已经报警
extern bit buc_bit_pshTimPulOF;												//球机如果只有一路报警标致开关
//============================================================================================




//============================================================================================
//语法格式:void RemAlarOut()
//实现功能:遥控紧急报警处理
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void RemAlarOut()
{
	if(guc_KATime == 0)			ONAlarSoun();						//打开警号声
	else OFFAlarSoun();												//关闭警号声
}

//============================================================================================
//语法格式:BuFan()
//实现功能:布防处理
//参数:	无
//返回值:	无
//创建时间:2009-01-08          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void BuFan()
{
	DispAlarLED();												//防区指示灯
	guc_Timer0 = 0 ;											//退出现场监听	
	if(guc_74HC164LED==0)	SUN_LED	= SUN_LED_OFF;				//如果防区指示灯熄灭时,运行指示灯也熄灭
	else SUN_LED	= SUN_LED_ON;								//反之则点亮
	guc_Bit_BuChe = 1;											//布防
}


//============================================================================================
//语法格式:CheFan()
//实现功能:布防处理
//参数:	无
//返回值:	无
//创建时间:2009-01-08          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void CheFan()
{
	SetWordDisp();											//各种指示灯进入设置方式
	guc_bit_AlLedOF = 0	;									//报警指示闪烁灯关
	ALARM_LED = 1;											//撤防时报警指示点关
	SUN_LED = SUN_LED_ON;									//撤防时电源指示点亮
	guc_74HC164LED = 0;										//防区指示灯关闭
	HANDUP = 0;												//挂机
	SET = 0;												//继电器打开


//	guc_bitAlarPul2 = 0;									//表示已经报过警了


	guc_AlarCnt = 9	;										//拔号9表示停止拔号
	guc_AlarTi = 0;											//报警时间清0

	OFFAlarSoun();											//关闭警号声
	guc_Bit_BuChe = 0;										//撤防
}





//============================================================================================
//语法格式:BuFanDis()
//实现功能:布防处理
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void BuFanDis()
{
	unsigned char data luc_temp;
	BuFan();
	luc_temp = ARMED;											//布防赋值
	judgeRAYTC(SET_COM_ARMED,1,&luc_temp);						//返回网络模块布防
}


//============================================================================================
//语法格式:CheFanDis()
//实现功能:撤防处理
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void CheFanDis()
{
	unsigned char data luc_temp;
	CheFan();	
	luc_temp = DISARMED;									//撤防赋值
	judgeRAYTC(SET_COM_ARMED,1,&luc_temp);					//返回网络模块撤防
}



//============================================================================================
//语法格式:BuFanRemDis()
//实现功能:解码时315的处理
//参数:	防区号
//返回值:	无
//创建时间:2009-01-20          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void BuFanRemDis(unsigned char auc_temp)
{
	unsigned char data luc_data;
	unsigned char data luc_Pul = 1;

	guc_AlarCnt = 0;						//电话号码清0,表示每次报警都从第一组电话号码开始拔


	guc_bit_SenAlar = 1;					// 传感器报警
	guc_BitTel = 1  ; 						// 拔打电话标致位


	SetWordDisp();							//设置时LED指示
	luc_data = guc_74HC164LED;				//点亮防区指示灯
	luc_Pul = luc_Pul << (auc_temp-1);
	guc_74HC164LED = luc_Pul|luc_data;
	ONAlarSoun() ; 							//打开警号
	ComAlarOut(auc_temp);					//传感器报警时串口报警信息输出
}



//============================================================================================
//语法格式:ScanRemDis()
//实现功能:扫描遥控
//参数:	无
//返回值:	无
//创建时间:2008-11-30          修改时间:
//创建人员:                    修改人员:
//============================================================================================
void ScanRemDis()
{
	unsigned char data luc_temp;
	RemIn();																//不断扫描是否解码
	if(guc_bit_RemCom==1)
	{
		guc_bit_RemCom = 0;
		luc_temp = JudgeDupAddr(guc_R315Buf);								//比较是否有相等数据理力争
	//	SendASC(luc_temp);
		if(luc_temp !=0)
		{	
			if((9<=luc_temp)&&(luc_temp<=12))								//遥控控制								
			{	
				SuccBuzzer();												//设置成功时发出的声音
				switch(luc_temp)													
				{
					case SET_REM_ARM 	:	BuFanDis()	;  		break;		//遥控布防
					case SET_REM_DISARM : 	CheFanDis()	;		break;		//遥控撤防
					case SET_REM_ALARM 	:	RemAlarOut();		break;		//遥控紧急报警
					case SET_REM_SETP	:   In_Fun_SET();  		break;		//遥控设置
					default:break;
				}
			}
			else
			{
			//	SendASC(luc_temp);
				if(guc_Bit_BuChe)
				{
					if(guc_REM_TI==0)
					{
						guc_REM_Temp = luc_temp;
						guc_REM_TI=32*3;									//定时3秒
						BuFanRemDis(luc_temp);
					}
					else
					{
						if(luc_temp!=guc_REM_Temp)
						{
							guc_REM_Temp = luc_temp;
							guc_REM_TI=32*3;								//定时3秒
							BuFanRemDis(luc_temp);
						}
					}
				}
			}
			luc_temp = 0 ;
		}
		ClearRem();	
	}
}

⌨️ 快捷键说明

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