出租车计价器是出租车的重要设备。计价器计算乘车费用。费用包括起步价,里程价,等待时间价。传统计价器使用机械结构。机械计价器有缺点。机械结构容易磨损。计算不够精确。功能比较单一。现代出租车使用电子计价器。电子计价器核心是单片机。单片机是一种微型计算机。单片机体积小。价格低。控制能力强。适合用在计价器上。
我们设计一个单片机计价器。这个设计需要硬件和软件。硬件是电路。软件是程序。程序控制电路工作。
硬件部分有几个模块。主控模块是单片机。我们选择AT89C51单片机。这种单片机很常用。价格便宜。资料很多。学习起来方便。AT89C51有4K字节Flash存储器。128字节RAM。32个输入输出口。足够用于计价器。
显示模块用来显示信息。需要显示里程,金额,时间。我们使用液晶显示器。液晶显示器是LCD1602。LCD1602可以显示两行字符。每行16个字符。显示内容清晰。功耗很低。适合车载设备。
测距模块测量汽车行驶距离。出租车车轮转动。转动次数对应距离。我们在车轮安装传感器。传感器使用霍尔元件。车轮上装一块磁铁。车轮每转一圈。磁铁经过霍尔元件一次。霍尔元件产生一个脉冲信号。单片机收到脉冲信号。单片机计算脉冲数量。知道车轮转了几圈。根据车轮周长算出距离。
计时模块计算等待时间。出租车停车等待。等待时间需要计费。我们使用单片机的内部定时器。定时器精度很高。汽车速度低于一定值。系统开始计时。汽车速度恢复。计时停止。
按键模块用来设置参数。司机需要设置起步价。设置每公里单价。设置等待时间单价。我们使用四个按键。一个按键用于模式切换。一个按键用于增加数值。一个按键用于减少数值。一个按键用于确认输入。
存储模块保存关键数据。计价器关闭后。数据不能丢失。里程表数据很重要。我们需要保存总里程。使用AT24C02芯片。这个芯片是EEPROM。断电后数据不丢失。通过I2C总线连接单片机。
电源模块提供电力。汽车电源是12V直流电。单片机需要5V直流电。我们使用稳压芯片7805。7805将12V转换为5V。电路简单可靠。
软件部分编写程序。程序使用C语言编写。C语言容易理解。单片机开发常用C语言。程序有几个功能模块。
主程序控制整体流程。主程序开始。先初始化各个模块。初始化液晶显示器。初始化定时器。初始化EEPROM。读取存储的里程数据。然后进入循环。循环中不断检测信号。检测按键信号。检测霍尔脉冲信号。检测速度信号。根据信号执行不同任务。
测距子程序计算里程。霍尔脉冲输入单片机。单片机中断功能响应脉冲。每来一个脉冲。中断服务程序运行一次。程序里有一个变量。变量记录脉冲个数。脉冲个数乘以系数得到里程。系数是车轮周长对应的值。里程数据送给显示程序。同时存入EEPROM。
计价子程序计算金额。金额由三部分组成。起步价是固定值。里程价是超过起步里程的费用。等待价是停车等待的费用。程序判断当前状态。汽车刚启动。金额等于起步价。汽车行驶超过起步里程。程序开始计算里程价。里程价等于单价乘以超出的公里数。汽车停车等待。速度很低。程序启动定时器。定时器累加时间。等待价等于等待单价乘以时间。总金额是这三项的和。
显示子程序刷新屏幕。液晶显示器显示两行内容。第一行显示里程和总金额。第二行显示时间和单价。数据不断更新。乘客看得清楚明白。
按键处理子程序设置参数。司机按下模式键。系统进入设置状态。液晶显示设置项目。司机按加键或减键。调整数值大小。司机按确认键。保存设置数值。设置数值存入EEPROM。
存储子程序保护数据。单片机每隔一段时间。把当前里程存入EEPROM。出租车熄火断电。里程数据不会丢失。下次上电。单片机从EEPROM读取数据。显示继续累加。
我们考虑实际使用情况。出租车白天晚上价格可能不同。我们增加一个功能。通过时钟芯片记录时间。时钟芯片使用DS1302。这个芯片有备用电池。断电继续走时。程序判断白天或夜晚。调用不同的单价进行计算。
出租车可能有其他要求。比如法定节假日加价。我们可以在程序加入判断。读取时钟芯片的日期。如果是节假日。单价自动调整。这些功能通过软件实现。硬件不需要大改动。
这个设计有优点。系统结构简单。成本不高。功能足够使用。测量比较准确。显示清楚。设置方便。数据保存可靠。适合大量生产。
设计也有需要注意的地方。传感器安装要牢固。汽车震动很大。部件不能松动。电路需要抗干扰。汽车内部电磁环境复杂。电源波动可能发生。软件要考虑异常情况。比如突然断电。数据不能出错。程序要稳定运行。
单片机设计是一个实践过程。先画电路图。用软件画图。检查电路连接。然后制作电路板。焊接元器件。焊接要仔细。不能虚焊短路。接着编写程序。在电脑上写代码。编译生成机器码。用烧录器把程序写入单片机。最后进行调试。连接各个模块。上电测试功能。发现问题修改程序。可能需要调整硬件。直到所有功能正常。
出租车计价器必须符合标准。国家有计量法规。计价器需要检测合格。检测里程误差。检测金额误差。误差要在允许范围内。我们的设计要留出调整接口。方便检测人员校准。比如脉冲系数可以微调。保证计量准确。
这个设计可以扩展功能。加上无线通信模块。计价器连接管理中心。管理中心知道出租车位置。可以发送调度信息。加上打印机模块。直接打印车费发票。加上语音模块。用语音播报金额。这些扩展不难实现。单片机还有空闲的接口。需要时增加电路和程序。
单片机学习很有用。计价器是一个典型例子。涉及传感器,显示,存储,按键。通过这个设计。我们学会单片机开发方法。学会硬件软件配合。学会解决实际问题。知识可以用在其他地方。比如智能家居,工业控制,仪器仪表。
出租车司机使用这个计价器。司机每天开机。计价器显示零点。乘客上车。司机按下空车标志。计价器开始工作。汽车行驶。里程数增加。金额增加。遇到红灯停车。等待时间累计。金额继续增加。到达目的地。司机按下停止键。显示最终金额。乘客付款。司机晚上收工。关闭计价器。数据自动保存。
这个系统工作稳定。乘客放心。司机方便。管理部门容易监管。这就是单片机计价器的价值。