
图6 系统总程序流程图                         图7 串行中断处理流程图
前后门开否检测基本上类似,下面程序是前门开否检测程序:
void Forward_Door_Check(void)
{   if(FORWARD_DOOR == OPEN) // 门开检测
    {   if(Forward_Door_Opened == FALSE)
        {   Delay_500Ms();
         if(FORWARD_DOOR == OPEN)
             Forward_Door_Opened = TRUE;
     }
}
else  // 门关检测
    {    if(Forward_Door_Opened == TRUE)
     {   Delay_500Ms();
         if(FORWARD_DOOR == CLOSE)
             Forward_Door_Opened = FALSE; 
     }
    }
}
当便捷巴士停靠站后再次起动行驶时,这时需要将本站停靠信息(停靠时间、里程数和乘客上下车信息)添加到外部扩展的NVRAM-DS1235Y数据记录中,程序如下:
void ThisStation_Update(void)
{   byte xdata *ptr0;
ptr0 = START_ADDRESS + Total_Record_Length; // 添加记录的起始地址
*ptr0++ = Mileage >>8; // MSB 里程
*ptr0++ = Mileage;     // LSB里程
*ptr0++ = UpDown_Number_This_Station; // 本站上下车总人数
………   // 停靠站时间更新
Total_Record_Length=Total_Record_Length+RECORD_HEAD_LENGTH+ UpDown_Number_This_Station/8;
if((UpDown_Number_This_Station%8)!=0)
  Total_Record_Length++;
UpDown_Number_This_Station = 0;
Current_Stop_Times = Current_Stop_Times+1;
Mileage = 0;
}
5结束语
本系统利用SST89C58单片机,光电开关,无线收发模块研制了便捷巴士运营状态自动监测系统,包括车辆行驶的速度,里程,乘客上下车的动作识别,并利用串行口与PC机通信,配合后台分析软件作数据统计。通过实际的随车实验,统计的数据准确度较高。
本文作者创新点是利用光电开关解决乘客的动作识别,并利用无线收发模块解决车辆行驶路线识别,这对车辆运营管理和乘客计费管理有着重要的作用。