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

📄 main.c

📁 火灾报警钢瓶灭火控制器(计算机)源程序(钢瓶灭火器C51)
💻 C
字号:
//*************************************************************************
//**软 件 名:灭火控制盘(XMP4-2)
//**模 块 名:main.c
//**说    明:主函数
//*************************************************************************
#include <AT89x55.H>
#include "main.h"
//*************************************************************************
//**函 数 名:InitializeSystem
//**输    入:无
//**输    出:无
//**功能描述:系统初始化
//*************************************************************************
void InitializeSystem(void)
{
  //循环变量
  uint xdata II;
  EA   = 0;         //禁止全部中断
  PSW  = 0;         //初始化程序状态字寄存器
  TH0  = TH0INIT;   //写定时器初值
  TL0  = TL0INIT;
  IP   = 0x02;      //初始化中断优先级寄存器
  TMOD = 0x11;      //设置定时器工作方式 方式1
  TCON = 0x00;      //初始化定时器控制寄存器
  IE   = 0x02;      //初始化中断使能寄存器 全局禁止 定时器0、1,外部中断0使能
//********************设置系统状态***********************
  //停止给探测器送24V电源
  DETECT_POWER = 0;
  HIGH040ADDRESS = CS_OUT1;
  for(II=0;II<=1000;II++);
  //给探测器送24V电源
  DETECT_POWER = 1;
  HIGH040ADDRESS = CS_OUT1;
  MUTE_LED         = 1;           //关闭消音指示灯
  POWER_LED        = 0;           //点亮主电指示灯
  BATT_LED         = 0;           //点亮备电指示灯
  LCD_LAMP         = 0;           //开液晶显示器背光
  SELF_TEST        = 0;           //自检输出端
  //向指定口送数
  KEYCOL_SCAN      = CS_OUT2;
  //关闭火警灯
  FireLED(0);
  //关闭启动灯
  StartUpLED(0);
  //关闭故障灯
  FaultLED(0);
  //熄灭延时启动灯
  D_StartUpLED(0);
//************************** 系统变量设置 ************************************
  key_num        = 0xff;
  machine_status = 0x10;         //设置系统当前状态为“正常”
  ButtonAction = 0;			   //系统运行前检测按键是否动作的标志位
  for(II=0;II<4;II++)
      {
       //四个区的手动启动延时启动时间
       delay_SDstart_time[II]=SD_delay_time;
       //四个区的自动启动延时启动时间
       delay_ZDstart_time[II]=ZD_delay_time;
       //自动手动状态存贮=1为自动=0为手动
       auto_status[II]    = 0;
       //禁止允许状态存贮=1为允许=0为禁止
       allow_status[II]   = 0;
       }
//************************** 系统定时器设置 ************************************
  //关定时器0
  TR0 = 1;
  //开定时器1
  TR1 = 1;
  //打开全部中断
  EA = 1;
}
/////////////////////////////////////////////////////////////////////////////////
main()
{
    uchar xdata II;
    uchar xdata status_test=0;
    //消除声响
    BeepCtrl(0);
    C_EXTRAM();
    //开背光
    LCDLAMPCTRL(1);
    //启动时钟
    Start12887();
    Clr_Scr(0);
	//从12887中读取系统基本设置
	ReadSysSetup();
    //系统初始化,变量初始化
    InitializeSystem();
    //显示系统初始化中
    Logo_Lcd_Dis(1);
    //禁止启动
    Delay_StartUP(0);
    //检测各个区是否有按键动作的情况
    for(II=0;II<4;II++)
        {
         //检测按键是否按下
         TestButtonAction(II+1);
         }
	//如果有按键按下的话,就停在这里,不往下进行,并显示警告
	if(ButtonAction == 1)
	   {
	    //显示警告界面
	    Logo_Lcd_Dis(3);
		while(1);
	    }
    //显示正常界面
    Logo_Lcd_Dis(2);
    //开关液晶背光的计数器
    backlamp_delay=3000;
    //允许启动
    Delay_StartUP(1);
    DelayMS(1000);

    while(1)
       {
        //查询打印缓冲区
        if(PrintBuff_Start!=PrintBuff_End)
           {
            PrintInfo(PrintBuff_Start);
            PrintBuff_Start++;
            if(PrintBuff_Start>=100)
               PrintBuff_Start=0;
            }
        //键盘处理函数
        Key_Manage();
        //读取ADC0809的AD转换值
        AD_Covernt();
        //分析各个区的探测器的状态
        Detect_Fire();
        //分析探测器的状态
        Anayle_Detect();
        //判断火警相与信号
        auto_start_qu();
        //有延时启动时的管理
        Delay_Manage();
        //主电备电充电故障检测
        Power_TONGXU_Detect();
        //////////////////定时刷新,防止液晶死机//////////////////////
        if((prog_count==100)&&(machine_status==0x10))
           {
            prog_count=0;
            //初始化液晶
            Init_LCD();
            Read12887(Clock_Time);
            Dis_Clock();
            //显示正常界面
            Logo_Lcd_Dis(2);
            }
        //如果有信息显示
        if(have_report)
           {
            //显示报警信息
            DISP_Information();
            //清有信息显示标志
            have_report=0;
            //开关液晶背光的计数器清零
            backlamp_delay=0;
            }
        if((alarm_number>0)||(fault_number>0)||(feedback_number>0)||(stop_number>0)||(start_number>0)||(backlamp_delay!=1))
           {
            //开液晶背光
            LCDLAMPCTRL(1);
            }
        else
           if(backlamp_delay == 1)
              {
               //关背光
               LCDLAMPCTRL(0);
               }
        for(II=0;II<4;II++)
            {
             if(Qu_online[II]==0x01)
                {
                 //显示各个区的自动手动禁止允许状态灯
                 Disp_Auto_Allow(II+1);
                 //读取各个区的线路故障
                 ReadQuFault(II+1);
                 //读取各个区的按键状态,启动状态,允许禁止状态
                 ReadQuStart(II+1);
                 }
             }
        }
}

⌨️ 快捷键说明

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