APP下载

基于AT89S8252嵌入式汽车行驶状态记录器的设计

2017-04-10李庚森

电脑知识与技术 2017年4期
关键词:记录器主程序IC卡

李庚森

摘要:该设计是基于Atmel公司的低成本8位微控制器AT89S8252作为单片机应用系统核心,以电源变换模块(DC / DC转换控制电路芯片),信号采集模块,可编程逻辑器件模块,日期时钟模块,显示模块以及数据存储模块等为功能部件,采用硬软件协同方式所开发的汽车行驶状态记录器。

关键词:AT89S8252微控制器;单片机系统;硬软件协同设计

中图分类号:TP332 文献标识码:A 文章编号:1009-3044(2017)04-0221-03

为了有助于需要大量监控汽车运行状况的相关行业,如公共交通营运企业及其管理部门,同时也为监控管理方提供一种低成本的車辆管理技术方法与手段。从营运单位日常维护成本及易于维护性上考虑,本文以低成本的AT89S8252微控制器及相关硬件集成为出发点,逐步深入到应用程序开发,设计了这个嵌入式汽车行驶状态记录器。

嵌入式汽车行驶状态记录器作为汽车电子系统的重要组成部分,其模块化的功能结构,可随时与汽车电子系统接口快速连接使用的特性受到各相关方的高度关注。特别是如今以基于Android操作系统为搭载平台的各种汽车电子设备层出不穷,但在汽车行驶状态记录器这种需要高实时性记录各种行驶数据并且在一定情况下必须做出快速响应的应用设备来说,使用简单、实时性高的微控制器处理系统并利用在其上直接运行应用程序的方式可以以较低的成本优势在相关行业内普及,起到预防驾驶员违章驾驶、管控车辆的作用。

1 设计功能

该汽车行驶状态记录器的功能主要包括以下几个方面:

1)对汽车行驶的速度、里程等重要数据能够实时监测并记录。

2)对所记录的信息具备输出功能,可通过移动存储卡(IC卡)读出,这些信息包括驾驶员信息(如姓名,工号等)和汽车信息(如车号等),为有关营运部门的检查提供必要的数据。

3)安装在汽车上的行驶状态记录器要提供简单易用的人机交互界面,以方便驾驶员输入信息。同时还要有实时信息的显示及具备汽车超速报警功能。

1.1 设计功能的宏观实现过程

当行驶状态记录器接通电源后,电源指示灯亮。

用户根据主屏的提示依次插入IC卡,通过键盘输入车号等有关信息。之后主屏会显示速度和里程,同时显示当前的年,月,日,时,分,秒等。

汽车启动后,主屏会实时显示当前的行驶速度和里程。如果超速,则超速报警灯亮。

到站停车前,按相应的功能键,最后行驶状态记录器会进行数据的保存工作。

在主屏提示“保存完成”后,可以拔出IC卡,关闭行驶状态记录器的电源。

2 硬件结构分析

如图1所示,AT89S8252微控制器是整个系统的核心,应用程序通过直接运行在其上的方式来高效地完成整个系统的运行控制。

供电模块的作用是将汽车电子系统内部配电器提供的电压转换成记录器的工作电压。

信号采集模块是指将汽车内部感应车轮转速的霍尔传感器传过来的一对差分信号经过适当的变换成一个脉冲信号提供给微控制器系统。

信息存储模块是指微控制器系统将采集到的数据信息经过处理之后存储到IC卡中,然后使用读卡设备读出IC卡中的信息,以进行行驶分析。

微控制器系统还要用到可编程逻辑器件(PLD),它可以方便灵活地产生译码,控制等信息。

键盘输入和液晶显示是微控制器输入输出模块,目的是为驾驶员提供方便的人机交互界面,驾驶员可以输入信息,也可以看到实时的速度、里程以及时间等信息,以做出相应的响应判断。

3 软件设计

本设计的单片机采用的是Atmel公司的AT89S8252微控制器芯片,如图2。该单片机兼容C51单片机的所有指令系统。考虑到C51单片机应用范围的广泛,所以使用带有uVision集成开发环境的Keil编译器这个目前流行的C51单片机开发集成环境。

3.1 应用程序流程设计

应用程序流程设计是和汽车行驶状态记录器工作时的应用模式(该应用模式可设置)相对应的,如图3所示。现以公交营运车辆为例,具体流程为:汽车启动后,将IC卡插入记录器USB接口中,微控制器收到触发信号后显示屏提示输入站号,车号等信息,驾驶员通过键盘输入信息。汽车开动以后,显示屏实时显示汽车速度和当次已行驶的里程信息。汽车到站以后,驾驶员按下功能键“FUNCTION”,输入到站的站号。之前记录下的行驶状态数据存入到IC卡中。汽车在行驶过程中还要判断有无超速,若有超速的话,除了记录下发生超速的时间段和速度外,同时记录器要发出超速警报提示。

可编程逻辑器件是对汽车内部的车轮转速传感器(霍尔传感器)所发来的一对差分信号进行计数,微控制器利用定时中断对计数值进行累加计算,从而得到速度等信息。在程序中不断将当前速度值和设定阀值作比较,如果速度超过设定阀值记录器发出警报。

本记录器使用了一个定时中断和一个外部中断。对于外部中断,汽车到站以后,用户按下“FUNCTION”键就会触发此中断,程序检测到此中断会执行到站后的相应操作。

主程序在检测到汽车开动以后,随即进入一个无限循环,循环和中断的配合实现了记录器的所有功能。

3.2 程序流程设计中的关键程序开发

正如图3程序流程图所示,定时器程序开发对于主程序来说非常关键。在本设计中使用了用于定时显示速度、行驶里程等信息的工作在计数器方式的定时器0中断和用于到站操作的外部中断0。

主程序中设置:

TMOD = 0x06 ; // 定时器 0,8位,选择计数器方式

定时中断服务程序如下:

在定时中断服务程序中的三个变量分别为circle_calc、ttcy、time_stat 。其中circle_calc表示汽车轮子转速,它是由可编程逻辑器件通过霍尔传感器计算获得。Ttcy变量值是对circle_calc进行累加的结果,在主程序中正是由它得到行驶里程信息。time_stat 变量是一个全局变量,它通过在定时中断中不断累加,以决定主程序中刷新速度和里程的更新显示速率。

外部中断采用经典的中断查询方式,当有外部中断到来的时候做置位操作(中断标志位置1),通过主程序不断轮询此标志位,发现被置位后进行相应的中断处理。

外部中断服务程序如下:

作为程序开发中最核心的是如何实时获取行驶状态数据,其原理是汽车轮子每转一周信号采集模块都会提供一个计数脉冲信号SIG给可编程逻辑器件,然后可编程逻辑器件会将计数脉冲信号按日期时钟芯片提供的SQW信号通过可编程逻辑器件中的timer模块产生的锁存信号suocun给其自身芯片中集成的sigcounter模块,从而统计出定时的转速信息,并且通过P0口发送给微控制器。

前面已经提到,time_stat是一个全局变量,它在定时中断程序中不断累加,决定了主程序中刷新速度和里程的更新显示速率。Circle_calc也为全局变量,它是通过中断程序从P0口获得的由可编程逻辑器件提供的单位时间(该时间由timer模块决定)内轮子所转的圈数即转速。

这里需要特别说明的是一旦微控制器从P0口获得已转过的圈数信息后,可编程逻辑器件立即将igcounter模块清0,这是由硬件实现的。

这样微控制器获取行驶状态数据(速度和里程)的程序如下:

4 结束语

本文探讨了基于AT89S8252嵌入式汽车行驶状态记录器的硬软件协同设计,其中既要考虑硬件系统的选型需要符合设计的要求及性价比,同时也要兼顾到硬件系统对软件的支持以及所选硬件为软件开发所带来的便利性,这点非常重要。该汽车行驶状态记录器的功能主要由数据采集,键盘输入,液晶显示和数据存储四大模块构成,采用AT89S8252微控制器实现这样的系统确实非常合适。

参考文献:

[1] 肖洪兵, 李国峰, 李兵, 等. 80C51嵌入式系統教程[M]. 北京: 北京航空航天大学出版社, 2008.

[2] 曹家喆. 汽车电子控制基础[M].北京: 机械工业出版社, 2007.

[3] 孙德文. 微型计算机技术[M].3版.北京: 高等教育出版社,2010.

[4] Atmel公司. AT89S8252芯片电子文档[EB/OL].(2009-03)[2016-12]. http://www.dzsc.com/xinghao/AT89S8252.html.

猜你喜欢

记录器主程序IC卡
工商业IC卡控制器改造为物联网控制器实践
在用电梯加装外接式IC卡运行控制系统设计改进
电控冰箱软件模块化设计
一种新的无触点IC卡的检测方法
汽车事故数据记录器数据规范及应用进展综述
列车车厢视频记录器的应用
基于弹载图像记录器的压缩系统设计
湖北省高速公路IC卡管理系统浅谈
未经授权的第三方软件侵权问题研究
——以“腾讯与360之争”为视角*