基于LPC2136的车载油量监控系统_第1页
基于LPC2136的车载油量监控系统_第2页
基于LPC2136的车载油量监控系统_第3页
基于LPC2136的车载油量监控系统_第4页
基于LPC2136的车载油量监控系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

深圳大学专升本毕业论文基于LPC2136的车载油量监控系统深 圳 大 学本 科 毕 业 论 文(设计)题目: 基于LPC2136的车载油量监控系统 姓名: tlx 专业: 软件工程 学院: 成教学院 学号: 指导教师: 朱映映 职称: 副教授 2011年 11 月 24 日深圳大学本科毕业论文(设计)诚信声明本人郑重声明:所呈交的毕业论文(设计),题目基于LPC2136的车载油量监控系统是本人在指导教师的指导下,独立进行研究工作所取得的成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明。除此之外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。本人完全意识到本声明的法律结果。 毕业论文(设计)作者签名:tlx 日期: 2011 年 11 月 24 日目录1.引言41.1研究背景及意义41.2本课题主要工作42. uCOSII介绍53.硬件设计63.1 总体设计框架63.2 ISPFLASH在线程序下载63.3断油断电电路73.4主控电路84软件设计84.1油量检测84.2偷油报警134.3加油提示154.4通话监听164.5断电报警185.开发环境215.1硬件开发环境215.2软件开发环境225.3最终产品图226.结束语23参考文献23致谢23基于LPC2136的车载油量监控系统唐良兴学号: 【摘要】 基于嵌入式实时操作系统的车载油量监控系统,它集机械、电子检测技术、智能控制和无线通信于一体,结合服务器后台软件平台,是一个综合的车载油量监控系统。本文以LPC2136芯片的ARM7处理器为控制核心,扩展了应用任务,移植了嵌入式实时操作系统uCOSII,设计了一个车载油量监控终端系统。 【关键词】ARM7; uCOSII;无线通信;1.引言1.1研究背景及意义车载油量监控终端具有体积小巧、安装方便、稳定可靠、性价比高、功耗低等优点,可外接紧急求救按键、断油触发开关、监听麦克风、通话手柄、警示灯,特别适合物流业、长途客运、载重汽车等行业应用。1.2本课题主要工作A,ARM Core工控级芯片LPC2136,内嵌uCOSII 操作系统,确保系统稳定高效运行。B,程运行,多任务管理,系统响应及时。C,最新的双频无线通讯模块(SIM900A)。D,高精度油量传感器,检测油量精确(静止状态误差=1%,车辆行驶稳定状态终端:#,RCOV (短信内容)终端-手机:The Currently Oil Value is 88(L)说明:是密码,RCOV是编码(区分大小写);手机读取油量流程:void TASK_OIL_DO(void * lpParam) uint16 OilSamVal; uint16 OIL_3MIN_REC6; uint16 OIL_3MIN_AVG = 0x00; uint16 OIL_AD_Diff,OIL_L_Diff,OIL_AD_TEMP; uint16 Oil_High = 0; uint16 OIL_L = 0; / oil value uint16 OIL_AD = 0; / sample value uint8 Oil_Shape; uint8 Low,High,Middle; uint8 OIL_CNT; uint8 OIL_3MIN_CNT = 0; uint8 i;/拷贝油量校准参数 memset(Tp.Buffer, 0, sizeof(Tp.Buffer); memset(OIL_3MIN_REC, 0, sizeof(OIL_3MIN_REC); Oil_Shape = g_stSystemConfig.OilBoxShape; / OIL_CNT = g_stSystemConfig.ScalingPoints; memcpy(Tp.Buf16B, g_stSystemConfig.OilScalingBuf, OIL_CNT * 4); while (TRUE) /找到靠近的采样点 if (!ExtOilScallingFlag) DEBUG_PRINT(LOG_LEVEL_INFO, !SamMod!rn); OIL_AD = OIL_GetAdValue(); OIL_L = OIL_AD; DEBUG_PRINT(LOG_LEVEL_INFO, OilBoxShape:%d, ScallingPoint:%d,OIL_AD:%d, g_stSystemConfig.OilDescTh:%d ,Oil_Shape, OIL_CNT, OIL_AD, g_stSystemConfig.OilDescTh); if(Oil_Shape=0) if(OIL_AD=Tp.Buf16BOIL_CNT*2-1)/ sample value more than the last scaling point value OIL_L=Tp.Buf16BOIL_CNT*2-2; / max oil value else if(OIL_CNT) / middle value Low=1; High=OIL_CNT-1; i=0; while(Low=High) Middle=(Low+High)/2; if(OIL_AD15) break; OIL_AD_Diff=Tp.Buf16BLow*2+1-Tp.Buf16BLow*2-1; OIL_L_Diff=Tp.Buf16BLow*2-Tp.Buf16BLow*2-2; OIL_AD_TEMP=OIL_AD-Tp.Buf16BLow*2-1; OIL_L=Tp.Buf16BLow*2-2+OIL_L_Diff*OIL_AD_TEMP/OIL_AD_Diff; else / err OIL_L=999; /做平均值运算 OIL_3MIN_RECOIL_3MIN_CNT=OIL_L; OIL_3MIN_CNT+; OIL_3MIN_AVG=OIL_3MIN_REC0+OIL_3MIN_REC1+OIL_3MIN_REC2+OIL_3MIN_REC3+OIL_3MIN_REC4+OIL_3MIN_REC5; OIL_3MIN_AVG/=OIL_3MIN_CNT; OIL_3MIN_AVG = EndianLittleToBig_short(OIL_3MIN_AVG); / if(OIL_3MIN_CNT=6) memset(OIL_3MIN_REC, 0, sizeof(OIL_3MIN_REC); OIL_REC_FLAG = 0; OIL_CNT_G = 0; OIL_3MIN_CNT=0; UpGPSOil.UpOil = OIL_3MIN_AVG; / update UpGPSOil.UpOil |= (uint16 )BIT6;/3分钟上传一次油量数据 if (!OIL_REC_FLAG) OIL_REC_FLAG = 1; UpGPSOil.UpOil |= (uint16 )BIT7; / 3min flag H L bytes revise DBG_Print(LOG_LEVEL_WARN, _3Min_frn); _3MinOilStatus(); DEBUG_PRINT(LOG_LEVEL_INFO, !Uploading Oil:0x%x,EndianLittleToBig_short(UpGPSOil.UpOil); OIL_3MIN_AVG = EndianLittleToBig_short(OIL_3MIN_AVG); / TimeDlyms(30000); / 30 sec else /做采样标定 if ( (GPRSConnectStatus() = CONN_OK) & (SIM_GetSignal() 9) memset(uint8* )&NowUpOilInfo, 0, sizeof(NowUpOilInfo); /OilSamVal = (uint16 )ADC4Read(4); OilSamVal = OIL_GetAdValue(); NowUpOilInfo.Oil = EndianLittleToBig_short(OilSamVal); NowUpOilInfo.Year = SysTime0; NowUpOilInfo.Month = SysTime1; NowUpOilInfo.Day = SysTime2; NowUpOilInfo.Hour = SysTime3; NowUpOilInfo.Min = SysTime4; NowUpOilInfo.Other1 = SysTime5; SendToPlatform(TERMINAL_SCA_OIL_END_ACK_CMD, SCAL_DATA_LEN, (uint8 *)&NowUpOilInfo); DBG_Print(LOG_LEVEL_INFO, rn!ScaMod!); TimeDlyms(2000); 4.2偷油报警当检测到有偷油报警警情时,终端会立即以短信(The license plate number:YB12345,status:Warning!Warning!,Oil Alarm!,Please check!)形式发出报警信息到设定的手机号码,会发送两次,当检测到有持续在偷油时,会继续发送报警短信。报警流程:/当前油量值与上一次油量值比较,差值如果大于设定的报警值范围判断发生偷油if (OIL_3MIN_AVG - OIL_L) & (OIL_3MIN_AVG - OIL_L g_stSystemConfig.OilDescTh)if(g_ulBootSecTime 180) DEBUG_PRINT(LOG_LEVEL_INFO, Alarm desc oil. last oil = %dL, Cur Oil = %dLrn,OIL_3MIN_AVG, OIL_L);_smsContentSend = (char *) OSMemGetEx(ptrSmallMEM,200);snprintf(_smsContentSend,200,The license plate number:%s,status:Warning!Warning!,Oil Alarm!,Please check!,g_stSystemConfig.license_plate_number);if (GET_SYSALARM_TYPE() != ALARMROB) DEBUG_PRINT(LOG_LEVEL_INFO, rn -Set Alarm Flag-rn);SET_SYSALARM_TYPE(ALARMDECOIL);SET_ALARM_FLAG();SendSMS(const char *)_smsContentSend, (char *)g_stSystemConfig.usUserPhoneNum);/发送报警短信memset(OIL_3MIN_REC, 0, sizeof(OIL_3MIN_REC);OIL_REC_FLAG = 0;OIL_CNT_G = 0;OIL_3MIN_CNT = 0;TimeDlyms(2000);SendSMS(const char *)_smsContentSend, (char *)g_stSystemConfig.usUserPhoneNum);/发送报警短信OSMemPut(ptrSmallMEM, _smsContentSend);else/如果没发生偷油报警,清报警标志,防止异常误报if (GET_SYSALARM_TYPE() = ALARMDECOIL)CLR_SYSALARM_TYPE();4.3加油提示当检测到车辆正在加油时,车辆会发出加油提示短信(The license plate number:YB12345,status:add oil for shape.)到设定的手机号。加油检测提示流程:/ 当前的油量减前一次的油量,如果大于设定的值判断为加油if(OIL_L - OIL_3MIN_AVG ) & (OIL_L - OIL_3MIN_AVG g_stSystemConfig.OilDescTh)if(g_ulBootSecTime 180)if(g_ulBootSecTime - add_oil_interval_time 300)add_oil_interval_time = g_ulBootSecTime;_smsContentSend = (char *) OSMemGetEx(ptrSmallMEM,200);snprintf(_smsContentSend,200,The license plate number:%s,status:add oil for shape.,g_stSystemConfig.license_plate_number);SendSMS(const char *)_smsContentSend, (char *)g_stSystemConfig.usUserPhoneNum);/发送加油提示短信OSMemPut(ptrSmallMEM, _smsContentSend);memset(OIL_3MIN_REC, 0, sizeof(OIL_3MIN_REC);OIL_REC_FLAG = 0;OIL_CNT_G = 0;OIL_3MIN_CNT = 0;4.4 通话监听当检测到是监听号码的来电时,终端会自动接听监控号码的来电,通过麦克风监听周围的声音,直到监听号码主动挂断;其他号码来电,不做接听的动作。监听流程:/有电话进来 while (ucDealPhone) MDM_WaitRecvDone(); DEBUG_PRINT(LOG_LEVEL_DEBUG,MDM_WaitRecvDone!rn); DEBUG_PRINT(LOG_LEVEL_INFO,g_szGprsRecvBuf,g_ulGprsRecvLen); if (!ucPhoneGetFlag) ulPhoneLen = PhoneNumberScan(char*)g_szComePhoneNUM); if (ulPhoneLen) DEBUG_PRINT(LOG_LEVEL_INFO,Phone(%d):%srn, ulPhoneLen, g_szComePhoneNUM); ucPhoneGetFlag = 1; if(0=memcmp(char*)g_szComePhoneNUM, (char*)g_stSystemConfig.stCenterPhone.CenterResetPhone, ulPhoneLen) ConnectCall();/如果是中心号码,接听来电 if(memcmp(char*)g_szComePhoneNUM, (char*)g_stSystemConfig.stCenterPhone.MonitorPhone, ulPhoneLen) ConnectCall();/如果是监听号码,接听来电 else ShutUpCall();/如果是其他号码,挂断来电 if (GPRS_ScanStr(NO CARRIER) break;/如果对方提前挂断,就退出 MDM_ClrRecvBuf(); TimeDlyms(1000); 4.5断电报警当检测到主电源被劫匪剪断或电源无法供电时,终端会立即发出断电报警短信。断电报警流程:/检测外部电源是否被断开if (switchstatus & MAIN_P_TURN_OFF) if (2 Power_OFF_Times) wer_ON_Times = 0;CLR_MAIN_POWER_ON_FLAG();if (ALARMROB != GET_SYSALARM_TYPE()if (ALARMGPS != GET_SYSALARM_TYPE()SET_SYSALARM_TYPE(ALARMGPS);SET_ALARM_FLAG();Main_Power_Flag = 1;DEBUG_PRINT(LOG_LEVEL_WARN, rnWarning:Main Power Off!);#if BAT_ADC_ENABLEBAT_PowerDownProcess();/发生外部电源断开时,切换到电池供电模式#endifelsePower_OFF_Times+;elseif (2 Power_ON_Times) Power_OFF_Times = 0;SET_MAIN_POWER_ON_FLAG();if (ALARMGPS = GET_SYSALARM_TYPE()CLR_SYSALARM_TYPE();CLR_ALARM_FLAG();Main_Power_Flag = 0;DEBUG_PRINT(LOG_LEVEL_WARN, rnWarning:Main Power On!);#if BAT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论