图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机通信,配合后台分析软件作数据统计。通过实际的随车实验,统计的数据准确度较高。
本文作者创新点是利用光电开关解决乘客的动作识别,并利用无线收发模块解决车辆行驶路线识别,这对车辆运营管理和乘客计费管理有着重要的作用。