📄 main_h2s_3.c
字号:
}
//获取模拟电压
//计划不转换成电压,使用转换成的满量程的百分比参与运算,简化运算。
float agetm(uint8 idd)
{
uint16 ib16;
float f2in;
ib16=agetx(idd);
f2in=3300.0 * (ib16*1.0)/4095.0;
return(f2in);
}
//P34操作(蜂鸣器)
void SOut(uint8 ikk)
{
COut(28,ikk);
}
void ssFlash(void)
{
static uint8 iskk_2=0;
if(iskk_2==0)
iskk_2=1;
else
iskk_2=0;
SOut(iskk_2);
}
void RKg(uint8 ikk)
{
}
//P36、P37、P40操作
//LED0/LED1/LED2操作
//IEE为操作LED号,IEE为0xFF全部操作
//IKK为亮、灭标志,如果为1则亮否则灭
void LKg(uint8 iEE,uint8 ikk)
{
uint8 iLL;
iLL=ikk;
switch(iEE)
{
case 0:
COut(30,iLL);
break;
case 1:
COut(31,iLL);
break;
case 2:
COut(32,iLL);
break;
case 0xFF: //P3口第0/1/2位置1
COut(30,iLL);
COut(31,iLL);
COut(32,iLL);
break;
default:
break;
}
}
void j_Debug(void)
{
return;
}
void j_Debug2(void)
{
return;
}
//igs初始化
void InitData(void)
{
uint8 i;
for(i=0;i<4;i++)
{
igS[i][0]=0;
igS[i][1]=0;
}
}
void Lstatus(uint8 iss,uint8 iLLF)
{
LKg(0,iLLF);
switch(iss)
{
case 0:
LKg(1,0);
LKg(2,0);
break;
case 1:
LKg(1,1);
LKg(2,0);
break;
case 2:
LKg(1,1);
LKg(2,1);
break;
default:
break;
}
}
// idd 探头号
// iss 报警等级
// iLFF 探头健康状态
void CxLstatus(uint8 idd,uint8 iss,uint8 iLLF)
{
static uint8 i_static2[4]={0,0,0,0};
if(i_static2[idd]==0)
i_static2[idd]=1;
else
i_static2[idd]=0;
//显示探头健康状态:(LED_Failure故障则闪烁,正常则亮)
if(iLLF==1)
{
CXLkg(idd,0,i_static2[idd]);
}
else
{
CXLkg(idd,0,1);
}
//报警等级
switch(iss)
{ //正常则红绿都灭
case 0:
CXLkg(idd,1,0);
CXLkg(idd,2,0);
break;
//报警则红绿都闪烁
case 1:
CXLkg(idd,1,i_static2[idd]);
CXLkg(idd,2,i_static2[idd]);
break;
//危险则红绿都亮
case 2:
CXLkg(idd,1,1);
CXLkg(idd,2,1);
break;
default:
break;
}
}
//转换一个传感器的信号
//如果每个传感器的第一路电压或者第二路电压大于危险电压则igS[idd][0]=2(报警级别:危险)
//如果每个传感器的第一路电压或者第二路电压大于告警电压则igS[idd][0]=1(报警级别:警告)
//否则igS[idd][0]=0(报警级别:正常)
//如果第一路第二路电压压差大于1V则igS[idd][1]=1(探头健康状态:故障)否则igS[idd][1]=0(探头健康状态:正常)
void CxSin(uint8 idd)
{
float fS0,fS1;
float fValue1,fValue2;
uint8 iSS_s2=0;
uint8 iSS_s3=0;
switch(idd)
{
case 0:
fS0=agetm(0);
fS1=agetm(1);
fValue1=fSWarnVoltage0;
fValue2=fSDangerVoltage0;
break;
case 1:
fS0=agetm(2);
fS1=agetm(3);
fValue1=fSWarnVoltage1;
fValue2=fSDangerVoltage1;
break;
case 2:
fS0=agetm(4);
fS1=agetm(5);
fValue1=fSWarnVoltage2;
fValue2=fSDangerVoltage2;
break;
case 3:
fS0=agetm(6);
fS1=agetm(7);
fValue1=fSWarnVoltage3;
fValue2=fSDangerVoltage3;
break;
default:
break;
}
iSS_s2=0;
if( (fS0>fValue2) ||(fS1>fValue2) )
{
iSS_s2=2;
}
else
{
if( (fS0>fValue1) ||(fS1>fValue1) )
iSS_s2=1;
}
iSS_s3=0;
if( jp_AbsF(fS0-fS1)>1000)
iSS_s3=1;
igS[idd][0]=iSS_s2;
igS[idd][1]=iSS_s3;
}
//Sensor_Ext指示灯控制
void CXLkg(uint8 idd,uint8 iLL3,uint8 ikk)
{
uint8 iLL;
iLL=ikk;
if(idd==0) //Sensor_Ext指示灯
{
switch(iLL3)
{
case 10:
COut(33,iLL);//P41 //LED_sensor in Sensor_Ext
break;
case 0:
COut(27,iLL);//P33 //LED_Failure in Sensor_Ext
break;
case 1:
COut(26,iLL);//P32 //LED_Yellow in Sensor_Ext
break;
case 2:
COut(25,iLL);//P31 //LED_Red in Sensor_Ext
break;
default:
break;
}
return;
}
if(idd==1)//Sensor_Ext1指示灯
{
switch(iLL3)
{
case 10:
COut(34,iLL);//LED_sensor in Sensor_Ext1
break;
case 0:
COut(24,iLL);//LED_Failure in Sensor_Ext1
break;
case 1:
COut(23,iLL);//LED_Yellow in Sensor_Ext1
break;
case 2:
COut(22,iLL);//LED_Red in Sensor_Ext1
break;
default:
break;
}
return;
}
if(idd==2)//Sensor_Ext2指示灯
{
switch(iLL3)
{
case 10:
COut(35,iLL);//LED_sensor in Sensor_Ext2
break;
case 0:
COut(21,iLL);//LED_Failure in Sensor_Ext2
break;
case 1:
COut(20,iLL);//LED_Yellow in Sensor_Ext2
break;
case 2:
COut(15,iLL);//LED_Red in Sensor_Ext2
break;
default:
break;
}
return;
}
if(idd==3)//Sensor_Ext3指示灯
{
switch(iLL3)
{
case 10:
COut(36,iLL);
break;
case 0:
COut(14,iLL);//LED_Failure in Sensor_Ext3
break;
case 1:
COut(13,iLL);//LED_Yellow in Sensor_Ext3
break;
case 2:
COut(12,iLL);//LED_Red in Sensor_Ext3
break;
default:
break;
}
return;
}
if(idd==0xFF)//
{
COut(33,iLL);//P41 //LED_sensor in Sensor_Ext
COut(34,iLL);//P42 //LED_sensor in Sensor_Ext1
COut(35,iLL);//P43 //LED_sensor in Sensor_Ext2
COut(36,iLL);//P44 //未定义
COut(27,iLL);//P33 //Sensor_Ext指示灯
COut(26,iLL);//P32
COut(25,iLL);//P31
COut(24,iLL);//P30 //Sensor_Ext1指示灯
COut(23,iLL);//P27
COut(22,iLL);//P26
COut(21,iLL);//P25 //Sensor_Ext2指示灯
COut(20,iLL);//P24
COut(15,iLL);//P17
COut(14,iLL);//P16 //Sensor_Ext3指示灯
COut(13,iLL);//P15
COut(12,iLL);//P14
return;
}
}
float jp_AbsF(float fIn)
{
if(fIn>=0)
return(fIn);
else
return(fIn*(-1.0));
}
void Delay100mS(uint16 iDelay)
{
uint16 i;
uint8 i2;
for(i=0;i<iDelay;i++)
{
for(i2=0;i2<138;i2++)
;
}
}
//如果iskk为1,则蜂鸣器响10s
//否则不响
//所有指示灯闪烁30次
void Pkg(uint16 iFF2,uint8 isKK)
{
uint16 i;
LKg(0xFF,1);
CXLkg(0xFF,0,1);
if(isKK==1)
{
SOut(1);
Delay100mS(10);
}
LKg(0xFF,0);
CXLkg(0xFF,0,0);
SOut(0);
for(i=0;i<60;i++)
{
LKg(0xFF,1);
CXLkg(0xFF,0,1);
Delay100mS(10);
LKg(0xFF,0);
CXLkg(0xFF,0,0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -