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

📄 two18.c

📁 通过51单片机控制用sp2349扩展串口
💻 C
📖 第 1 页 / 共 5 页
字号:

 if(V>=Vb)                              //大于启动速度
   {
    if(V>=Vb&&V<Vs)                     //位于启动速度与安全速度之间
     {
      if(V>=25&&V<=30)                  //                                  2006.3.3

        tc=(float)t0*0.001;

      if(V>30&&V<=40)

        tc=(float)t1*0.001;

      if(V>40&&V<=50)

        tc=(float)t2*0.001;

      if(V>50&&V<=60)

        tc=(float)t3*0.001;

      if(V>60&&V<=70)                   //                                  2006.3.3

        tc=(float)t4*0.001;

      if(V>70&&V<=80)

        tc=(float)t5*0.001;

      if(V>80&&V<=90)                   //报警起始段                        2006.3.9
       {
        tc=(float)t6*0.001;
  /*      if(alarmlevel==0)
         {
           alarmlevel=1;                //一级报警,周期0.5秒
           alarmcount=501;
           alarmstatus=51;
           alarm=1;
           }  */
        }

      if(V>90&&V<=100)
       {
        tc=(float)t7*0.001;
  /*      if(alarmlevel==0)
         {
           alarmlevel=2;                 //二级报警,周期0.4秒
           alarmcount=501;
           alarmstatus=41;
           alarm=1;
           }       */
        }

      if(V>100&&V<=110)
       {
        tc=(float)t8*0.001;
   /*     if(alarmlevel==0)
         {
           alarmlevel=3;                  //三级报警,周期0.3秒
           alarmcount=501;
           alarmstatus=31;
           alarm=1;
           }      */
        }
      if(V>110&&V<120)                    //                                 2006.3.3
       {
        tc=(float)t9*0.001;
  /*      if(alarmlevel==0)
         {
           alarmlevel=4;                  //四级报警,周期0.2秒
           alarmcount=501;
           alarmstatus=21;
           alarm=1;
           }  */
        }

       if(D>=Dd)                        //大于危险距离
        {
         if(D>=Dd&&D<Ds)                //位于安全距离与危险距离之间
          {
                                        //八种断油操作
           if(t<=tc)                    //时间小于刹车时间                   2006.3.6
            {
             if(cutflag==0&&blankflag==0)              //无断油操作开始置标志断油计数      2006.3.6
             {
              cutflag=1;
              cutcount=111;                            //断油1秒
 //             door1=1;                                 //
              }
             return '1';
             }


           if(t>tc&&t<=(tc*1.2))              //                                  2006.3.6
            {
             if(cutflag==0&&blankflag==0)              //无断油操作开始置标志断油计数      2006.3.6
             {
              cutflag=1;
              cutcount=111;                            //断油1秒
  //            door1=1;
              }
             return '2';
             }


           if(t>(tc*1.2)&&t<=(tc*1.4))              //                                  2006.3.6
            {
             if(cutflag==0&&blankflag==0)              //无断油操作开始置标志断油计数      2006.3.6
             {
              cutflag=1;
              cutcount=111;                            //断油1秒
  //            door1=1;
              }
             return '3';
             }


           if(t>(tc*1.4)&&t<=(tc*1.6))              //                                  2006.3.6
            {
             if(cutflag==0&&blankflag==0)              //无断油操作开始置标志断油计数      2006.3.6
             {
              cutflag=1;
              cutcount=111;
  //            door1=1;
              }
             return '4';
             }


           if(t>(tc*1.6)&&t<=(tc*1.8))              //                                  2006.3.6
            {
             if(cutflag==0&&blankflag==0)              //无断油操作开始置标志断油计数      2006.3.6
             {
              cutflag=1;
              cutcount=111;
  //            door1=1;
              }
             return '5';
             }


          if(t>(tc*1.8))                     //                                          2006.3.6

           return '6';

          }
         else return 'S';               //正常行使
        }
      else
           if(cutflag==0&&blankflag==0)              //无断油操作开始置标志断油计数      2006.3.6
           {
             cutflag=1;
             cutcount=111;
  //           door1=1;
            }
     /*      if(alarmlevel==0)
            {
              alarmlevel=5;                        //五级报警,周期0.2秒
              alarmcount=501;
              alarmstatus=11;
              alarm=1;
            }   */

           return '?';                  //小于危险距离
     }
   else
        if(cutflag==0&&blankflag==0)                 //无断油操作开始置标志断油计数      2006.3.6
        {
          cutflag=1;
          cutcount=111;
  //        door1=1;
         }
   /*     if(alarmlevel==0)
         {
           alarmlevel=6;                 //五级报警,周期0.1秒
           alarmcount=501;
           alarmstatus=6;
           alarm=1;
           }   */
        return '!';                     //超速
  }
 else return '*';                       //低于启动速度
}
//=====================================================
//函数名称:OPERATE()
//功能描述:端口操作子程序
//输入:k(1/2/3/4/5/6/S/?/!/*)
//输出:/
//全局变量: door1  blankflag
//调用模块: /
//=====================================================
void OPERATE(uchar k)                   //对应操做
{
 if(door1==1)                           //如果门开                              2006.3.6
 {
  if(blankflag==1)                      //恢复正常标志为1,有效                 2006.3.6
  k='6';                                  //正常供油                              2006.3.6

   switch(k)
  {
   case '*':                            //低于启动速度系统不工作, 无操作        2006.3.6
   stop=1;
   slow1=1;
   slow2=1;
   slow3=1;
   slow4=1;
   slow5=1;
//  alarm=0;
   break;

   case '?':                             //小于危险距离                         2006.3.6
   slow1=0;
   slow2=0;
   slow3=0;
   slow4=0;
   slow5=0;
   door1=0;                              //关总门
//  stop=1;
//  alarm=0;
   break;

   case 'S':                              //大于安全距离, 无操作                2006.3.6
   stop=1;
   slow1=1;
   slow2=1;
   slow3=1;
   slow4=1;
   slow5=1;
//  alarm=0;
   break;

   case '!':                              //超速                                2006.3.6
   slow1=0;
   slow2=0;
   slow3=0;
   slow4=0;
   slow5=0;
   door1=0;                                 //关总门                              2006 5 21
//  stop=0;
//  alarm=~alarm;
   break;

   case '1':                                //cut 5 oil                           2006.3.6
   slow1=0;
   slow2=0;
   slow3=0;
   slow4=0;
   slow5=0;
   door1=0;                                  //关总门                             2006 5 21
//  stop=1;
//  alarm=~alarm;
   break;

   case '2':                                //cut 4 oil                           2006.3.6
   slow1=0;
   slow2=0;
   slow3=0;
   slow4=0;
   slow5=1;
   door1=0;                                   //关总门                            2006 5 21
//  stop=0;
//  alarm=0;
   break;

   case '3':                                //cut 3 oil                           2006.3.6
   slow1=0;
   slow2=0;
   slow3=0;
   slow4=1;
   slow5=1;
   door1=0;                                    //关总门                           2006 5 21
//  stop=0;
//  alarm=0;
   break;

   case '4':                                //cut 2 oil                           2006.3.6
   slow1=0;
   slow2=0;
   slow3=1;
   slow4=1;
   slow5=1;
   door1=0;                                   //关总门                            2006 5 21
//  stop=0;
//  alarm=0;
   break;

   case '5':                                //cut 1 oil                           2006.3.6
   slow1=0;
   slow2=1;
   slow3=1;
   slow4=1;
   slow5=1;
   door1=0;                                   //关总门                             2006 5 21
//  stop=0;
//  alarm=0;
   break;

   case '6':                                //未采取措施                          2006.3.6
//   alarm=0;                                //报警
   stop=1;
   slow1=1;
   slow2=1;
   slow3=1;
   slow4=1;
   slow5=1;

//  stop=0;
//  alarm=0;
   break;

   };
   }
  else ;                                  //退出                                2006 3 9

}
//=====================================================
//显示子程序
//函数名称:OPERATE()
//功能描述:端口操作子程序
//输入:t(1/2/3/4/5/6/S/?/!/*)
//输出:/
//全局变量: door1  door2  brakeflag  blankflag
//调用模块: write_com()  write_zf()
//=====================================================
/* void DISPLAY(uchar t)
{
  if(t=='?')
     {
       write_com(0x80);               //显示"危险距离"标志                            2006.3.6
       write_zf(DIST,2);              //                                              2006.3.6
       write_com(0x81);               //                                              2006.3.6
       write_zf(WHITE1, 2);
      }

  if(t=='!')
     {
       write_com(0x80);               //显示"超速"标志
       write_zf(SPEED, 2);            //                                              2006.3.6
       write_com(0x81);
       write_zf(WHITE1,2);
      }

 if(door1==1||door2==1)            //两扇门中其中有一扇门开                     2006.3.6
 {
   if(blankflag==1)                //恢复正常标志为1,有效                      2006.3.6
   t=6;                            //清屏                                       2006.3.6
   if(brakeflag==1)                //                                           2006.3.6
   {                               //                                           2006.3.6
     write_com(0x82);              //                                           2006.3.6
     write_zf(BRAKE,2);             //                                          2006.3.6
     write_com(0x83);              //                                           2006.3.6
     write_zf(WHITE1,2);            //显示"刹车"标志                            2006.3.6
     door2=0;                       //关门2                                     2006.3.6
     t=8;                          //跳出下面的SWITCH结构                       2006 3 9
    }

 switch(t)
 {
  case '*':
  write_com(0x80);               //第一行显示八个空字符
  write_zf(WHITE2,8);
  break;

  case '?':
  write_com(0x82);               //                                              2006.3.6

⌨️ 快捷键说明

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