//...............主程序...............
void main()
{
InitIoput(); //IO端口初始化
a=0; //运行指示计数
Set_Flag=0; //0时间循环显示
AUXR=0X80; //STC系列的1T 设置
TMOD=0X01; //
InitWarningFlag(); //初始化报警标志
init_lcd (); //液晶初始化
lcd_clear(); //清除液晶显示
InitUart(); //初始化串口
SetIn_Flag=0; //设置时间保存标志位 初始化0 保存置一 退出复位置零
TimeSetFlag=0; //时间设置年月日时分秒个位十位选择标志 1-12 显示闪烁
i=0; //存储字符数组变量 报警台数
MachineWarning_Num=0; //机器报警次数
disp_character(6,0,1,24,1,27,tabnum); //注塑机无线监控系统 Status
disp_character(0,24,1,24,1,12,Status); //机器状态
disp_character2(12,24,1,32,1,1,xsadd[0],tabF); // Warning
disp_character(13,24,1,24,1,3,tabNon); //无
disp_character(16,24,1,24,1,6,Warning); //报警
Time_A();//时间显示
disp_character(0,52,1,24,1,6,Warning); //报警
disp_character(6,52,1,24,1,6,WarningNum ); //台数
disp_character2(12,52,1,32,1,1,xsadd[0],tabF); // Warning WarningData
disp_character(17,52,1,24,1,6,Status); //机器
disp_character(23,52,1,24,1,6,WarningData); //编号
disp_character2(29,52,1,32,1,1,xsadd[0],tabF); //
disp_character2(15,48,2,32,1,1,xsadd[i],tab0); // Warning
disp_character(0,80,1,24,1,6,LastTime); //上次
disp_character(6,80,1,24,1,6,Warning); //报警
disp_character2(12,76,1,32,1,1,xsadd[0],tabF); //
disp_character(0,108,1,24,1,6,Warning); //报警
disp_character(6,108,1,24,1,6,TimeData); //次数
disp_character2(12,108,1,32,1,1,xsadd[0],tabF); //
DisWar_Time(MachineWarning_Num); //
LastWarning_Hour=0; //上次报警时
LastWarning_Muniter=0; //上次报警分
LastWarning_Sconde=0; //上次报警秒
ShowWarningTime(); //上次报警时分秒分离
disp_character(4,212,1,24,1,3,tabYear); //年
disp_character(11,212,1,24,1,3,tabMonth); //月
disp_character(18,212,1,24,1,3,tabDay); //日
MD0=0; //通讯方式
MD1=0; //通讯方式
while(1)
{
get_show_date(); //读取年月日
get_show_time(); //读取时分秒 00时00分00秒 报警次数归零
Change_Dis(); //更新报警内容显示
delay1(50); //延时刷新
a++; //
if(a>2) //运行指示计数
{ //
OUT25=~OUT25; //取反运行指示
a=0; //
}
if(Receive_Flag==1) //串口中断Receive_Flag=1 接收到新的数据
{
Dis_ReciveData(DAT2); //显示接收代码 机器编号*驱动数码管
GetWarningTime(); //获取报警时间
ShowWarningTime(); //显示报警时间
WarningMemory(DAT2); //报警从机号和报警时间写入数组 置位报警标志0X55开始报警0XAA更新报警
ShowTime(ni); //临时子程序 显示写入报警时间
Receive_Flag=0; //接收到数据标志置零
} // //
/////////////////时间显示//////////////////////////////////
if(Set_Flag==0) //时间设定 报警查询 退出设置检测标志
{
Dis_Time(); //显示实时时钟
} //
/////////////////时间设定/显示存储暂停并闪烁///////////////
else if(Set_Flag==1) //时间设定 报警查询 退出设置检测标志
{
Display_Time(TimeSetFlag); //时间显示存储暂停并闪烁
} //
//////////////////读取报警参数/////////////////////////////////////
else if(Set_Flag==2) //时间设定 报警查询 退出设置检测标志
{
Dis_Time(); //显示实时时钟
}
////////////////////////////////////
RstKey();
if(!Key_Select) //检测选择键
{
for(;kcounter<3;) //按键循环5次
{
if(!Key_Select) //按键低电平
{
LowVoltKey(); //按键计数器状态标志加一
}
else if(~!Key_Select) //按键高电平
{
HighVoltKey(); //按键计数器加一 状态标志归零
}
}
if(kstatus>=3)
{
Set_Flag++;
if(Set_Flag==1)
{
Time_B();//时间设置
TimeSetFlag=1;
if(SetIn_Flag==0)
{
GetSetTime(); //读一次实时时间
ShowSetTime(); //分离个位十位值
SetIn_Flag=1; //置位已读标志,(退出设置归零,允许下次读)
delay1(10); //延时
}
}
else if(Set_Flag==2)
{ //读取报警历史信息
ReadWar_Message(); //显示报警 查询
DisWar_Message(Dis_Counter); //
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
}
if(Set_Flag>2)
{
Time_A(); //时间显示
SetIn_Flag=0; //设置时间读一次标志 归零
TimeSetFlag=0; //设置时间年月日时分秒选择标志
Set_Flag=0; //功能标志 0时间显示1时间设置2报警查询
}
}
}
////////////////////////////////////
RstKey(); //
if(!Key_On) //检测上按键
{
for(;kcounter<3;) //按键循环5次
{
if(!Key_On) //按键低电平
{
LowVoltKey(); //按键计数器状态标志加一
}
else if(~!Key_On) //按键高电平
{
HighVoltKey(); //按键计数器加一 状态标志归零
}
}
if(kstatus>=3)
{
if(Set_Flag==1) //时间设置标志为一
{
SetDataAdd(TimeSetFlag);
ShowSetTime(); //分离个位十位值
delay1(10); //延时
}
else if(Set_Flag==2) //查询报警记录
{
Dis_Counter+=1;
if(Dis_Counter>24)
Dis_Counter=1;
DisWar_Message(Dis_Counter); //
} //读报警记录条数加一
}
}
////////////////////////////////////
RstKey();
if(!Key_Down) //检测下按键
{
for(;kcounter<3;) //按键循环5次
{
if(!Key_Down) //按键低电平
{
LowVoltKey(); //按键计数器状态标志加一
}
else if(~!Key_Down) //按键高电平
{
HighVoltKey(); //按键计数器加一 状态标志归零
}
}
if(kstatus>=3)
{
if(Set_Flag==1) //时间设置标志为一
{
SetDataDec(TimeSetFlag);
ShowSetTime(); //分离个位十位值
delay1(10); //延时
}
else if(Set_Flag==2) //查询报警记录
{
Dis_Counter-=1;
if(Dis_Counter<1)
Dis_Counter=24;
DisWar_Message(Dis_Counter); //
} //读报警记录条数减一
}
}
////////////////////////////////////
RstKey();
if(!Key_Left) //检测左按键
{
for(;kcounter<3;) //按键循环5次
{
if(!Key_Left) //按键低电平
{
LowVoltKey(); //按键计数器状态标志加一
}
else if(~!Key_Left) //按键高电平
{
HighVoltKey(); //按键计数器加一 状态标志归零
}
}
if(kstatus>=3)
{
if(TimeSetFlag>1) //时间设置标志大于1
TimeSetFlag-=1; //减一
else //
TimeSetFlag=1; //否则等于1
if(TimeSetFlag<1) //时间设置标志小于1
TimeSetFlag=6; //等于6
if(SetIn_Flag==0) //如果时间设置标志位等于0
{ //SetIn_Flag设置时间时读一次,然后保存读出时间并显示
GetSetTime(); //读一次实时时间
ShowSetTime(); //分离个位十位值
SetIn_Flag=1; //置位已读标志,(退出设置归零,允许下次读)
delay1(10); //延时
}
}
}
////////////////////////////////////
RstKey();
if(!Key_Right) //检测右按键
{
for(;kcounter<3;) //按键循环5次
{
if(!Key_Right) //按键低电平
{
LowVoltKey(); //按键计数器状态标志加一
}
else if(~!Key_Right) //按键高电平
{
HighVoltKey(); //按键计数器加一 状态标志归零
}
}
if(kstatus>=3)
{
if(Set_Flag==1)
{
TimeSetFlag+=1;
if(TimeSetFlag>6)
TimeSetFlag=1;
if(SetIn_Flag==0)
{
GetSetTime(); //读一次实时时间
ShowSetTime(); //分离个位十位值
SetIn_Flag=1; //置位已读标志,(退出设置归零,允许下次读)
delay1(10); //延时
}
}
}
}
////////////////////////////////////
RstKey();
if(!Key_Confirm) //检测确认键
{
for(;kcounter<3;) //按键循环5次
{
if(!Key_Confirm) //按键低电平
{
LowVoltKey(); //按键计数器状态标志加一
}
else if(~!Key_Confirm) //按键高电平
{
HighVoltKey(); //按键计数器加一 状态标志归零
}
}
if(kstatus>=3)
{
if(Set_Flag==1)
{
ModifyTime(SetIn_Year,SetIn_Month,SetIn_Day,SetIn_Hour,SetIn_Muniter,SetIn_Sconde); //写入设置时间
TimeSetFlag=0;
SetIn_Flag=0;
}
}
}
}
}
////////////////////////////////////