HT46RU24设计的出租车计价器方案
扫描二维码
随时随地手机看文章
总体结构如图一所示。硬件上主要由HT46RU24单片机,霍尔传感器,空载开关,键盘电路,数据存储电路,时钟电路,显示电路,蜂鸣器,IC卡电路以及串口电路组成。
1.1 HT46RU24单片机。
HT46RU24单片机是HOLTEK公司研制的一种低功耗,高性能的8位单片机。它的ROM为8k*16、RAM为384 bytes,最多有40个双向IO口。除此之外它还具有8通道12位分辨率的A/D转换,A/D转换可用来监测外部模拟信号,如侦测电池电压、电流、温度、湿度、压力、明暗度等。提供两种模式的PWM输出可应用于控温、调速、定电压、定电流等。可控的PFD输出用于发声,或是红外线传输的载波信号。
HT46RU24的UART属于全双工异步通信,可由软件设定波特率,并具有自动检错功能,利用UART与其它系统做数据传输时,可减少软件的负担,提高整个系统的使用效率。
HT46RU24单片机具有高的抗噪声特性、WDT及LVR的功能用以加强MCU的稳定性。
HALT和唤醒功能可降低功耗。HT46RU24单片机还可当I2C从机使用。管脚图如图二所示。
1.2 霍尔传感器
将安装在车辆变速箱输出端齿轮的霍尔传感器接到单片机外部中断接口上,车轮每转动一圈,霍尔传感器将产生一个下降沿脉冲,触发外部中断。
1.3 键盘电路
为了节省IO口,设计一个2*4的矩阵键盘,在程序设计中每一个按键所代表的功能如表一所示。
图二 HT46RU24管脚图
表一 按键功能
1.4 空载开关电路(如图三)
设计一个空载开关,开关闭合时读到低电平“0”,打开时读到高电平“1”,通过两次读取开关的数值,判断出租车所处的不同状态,如表二所示,两次读到“0”说明出租车处于空车状态,两次都读到“1”说明出租车处于载客状态,第一次读到“0”第二次读到“1”出租车从空车变到载客,第一次读到“1”第二次读到“0”出租车从载客变到空车。
图三 开关电路
表二 开关状态判断
1.5 数据存储器和时钟电路
扩展I2C总线的AT24C256存储统计信息, PCF8563做时钟输出,这两种芯片可共用IO口以节省IO口的使用。AT24C256存储芯片有256K的存储容量,分页存储,每页有64个字节的容量。PCF8563芯片有一个可编程的时钟输出,一个中断输出和掉电检测器电路。
1.6 显示电路和蜂鸣器电路
使用可显示汉字及图形的液晶SMG12864来显示里程价,误时价,附加费,统计信息等等。这款液晶内置国标GB2312码简体中文字库(16x16点阵)、128个字符(8x16点阵)及64x256点阵显示RAM(GDRAM)。与单片机的连接有8-位并行及串行两种连接方式。在本设计中采用并行通讯方式,电路图如图四所示,在软件编程时要置位PA0。
蜂鸣器单元设计目的是在于进行一些特殊操作时,能够发出不同的提示音。
图四 液晶显示电路
1.7 IC卡电路(如图五)
计价器具有IC卡付费功能,所采用的IC卡是SLE4442卡,它是德国西门子公司设计的一种逻辑加密卡。SLE4442卡具有3KB的存储容量和完全独立的可编程加密代码存储器(PSC),是国内目前应用较广的一种IC卡。
图五 IC卡电路
1.8 串口电路(如图六)。
设计串口电路来完成计价器与PC机通信。计价器传送统计信息到PC机,接收并储存从PC机传送过来的基本信息,包括车轮直径,校正时钟,起步价、里程价、回空价、等待价等计费参数。在PC机上可以采用VB、VC等设计串口通信界面,通过串口电路管理者能够采集详实、准确的营运数据,这些数据经过PC机处理后能够详细的做出日报表、月报表、运作分析表等,比较直观的反映出租车的营运情况,便于管理部门全面掌握第一手资料,及时针对所出现的情况做出准确的判断和决策,从而实现微机化、科学化管理。
图六 串口电路
2.软件结构
在主程序中,最主要是根据开关状态做不同的处理。状态0:保持空车;状态1:保持载客;状态2:空车变载客;状态3:载客变空车。主程序流程如图七所示。
图七主程序流程
2.1 保持空车
空车部分主要是做显示、PC机通信以及IC卡消费。通过设置程序实现按不同的按键完成不同的功能。例如按下“0”键,液晶屏会显示当日的统计信息,再按下“2”键会显示前一日的统计信息,按下“4”键显示后一日的统计信息,具体要完成的功能如表一所示。
2.2 空车变载客
这部分要完成禁止串口中断和启动计价。启动计价是为载客部分要完成的计价、计时程序做一些初始化的工作。例如要读出计价参数,给计程、计时、总误时单元清0,判断是否是夜班,启动定时器等。
2.3 保持载客
载客部分,主要是处理误时价和里程价,要用到50MS定时器中断和外部中断,需要定义计时单元来存储两个外部中断之间的时间,定义累计误时单元存储累计等待时间。50MS中断到来时置位F_50MS,在载客部分会调用50MS中断处理程序,流程如图八所示,该程序主要对计时单元进行处理,如果计时单元大于10S,调用误时价子程序ADD_PT。
通过霍尔传感器,车轮每转动一圈,会触发外部中断,在中断子程序里首先要关定时器,存T0计数值,给定时器重新置50MS计数初值后置位F_int0并开定时器。在载客部分也会调用外部中断处理子程序,流程如图九所示,当检测到车速低于特定值时,需要计算误时价,将计时单元加入累计误时单元中,其中ADD_PS是里程价子程序。
2.3.1 误时价。
误时价程序主要是判断累计等待时间是否超过规定的等待时间(Twait),超过以后,每过10S增加一次10S误时价,流程图如图九所示,其中F_wait表示起价等待时间到标志。
2.3.2 里程价
里程价子程序关键是判断计程单元S的大小,判断是起步价,还是3KM-8KM的短途价或是8KM以上的长途价。
2.4 载客变空车
这部分要完成停止计价、存统计信息、允许串口中断的操作,关键是存储统计信息。每月最多有31天,每天需要4个字节的容量,这样一个月的信息至少需要124个字节。因为采用的存储芯片AT24C256是分页存储,每页有64个字节的容量,如果给每个月的信息分配128个字节,这样通过计算公式: (月-1)×32×4+(日-1)×4+ADDRESS_AT3 ( ADDRESS_AT3表示在AT24C256里分配给统计信息的起始地址) 很容易存储和查看每日统计信息,所以我们给每个月的信息分配2页128个字节的容量。
3.结论
本文详细的阐述了用HT46RU24单片机实现出租车计价器的软硬件原理。程序设计清晰、有条理,维护性强,整个电路完整、紧凑,成本低,且具有操作简单,管理方便,安全可靠、功能强的优点。计价器的核心HT46RU24单片机,软件编程灵活、自由度大、功能强,功耗低,性价比高,技术成熟。