基于单片机的多人计价器设计

2017-05-30 09:13张蒙蒙吴萌王艳荣
科技尚品 2017年4期
关键词:C语言

张蒙蒙 吴萌 王艳荣

摘 要:基于对现在出租车计价器的功能的改进和完善,结合STC公司的STC89C52芯片,提出了出租车多人计价器的设计方案,给出了采用C语言,Keil C软件设计的出租车多人计价器的实现步骤、仿真及硬件测试结果,验证了方案的正确性。出租车多人计价器相对于现有的计价器功能更加完善,实用性更强。

关键词:多人计价器;C语言;STC89C52单片机;Keil C

0 引言

在當今社会的出租车计价器中,只能计算出一位乘客的乘车价钱,所以现在的出租车计费还有一定的改进空间。为了更好的解决这个问题,设计了多人计价器,以达到打车费用更加合理,使人们的出行更加便利的目的。多人计价器是在原有的计价器基础上进行功能的创新和改善,使得计价器的功能更加完善。

1 系统总体方案

系统主要由单片机STC89C52,霍尔传感器,液晶显示器LCD1602,和键盘电路组成(系统结构图如图1所示)。

单片机的功能是完成里程计算,车费计算,等待计费等,是整个系统的核心。霍尔传感器来完成信号的采集,并且将采集到的信号传递给单片机。键盘电路控制每位乘客的计价开始和终止。液晶显示器用于显示每位乘客的总价。

2 硬件电路设计

2.1 霍尔传感器

本次设计使用的是A44E型霍尔传感器,A44E型传感器是开关型传感器,其传出的信号是符合TTL电平标准的信号,所以霍尔传感器可以直接接到单片机的I/O端口上。霍尔传感器的工作电压范围是4.5~18V,最高检测频率可达到1MHZ(管脚图如图2所示)。

A44E型霍尔传感器是由稳压器,霍尔电势发生器,差分放大器,施密特触发器和三极管输出端5个基本部分组成的。

在输入端接入输入电压VCC,提供电路工作电压。当霍尔传感器处在磁场内部,并在与磁场垂直的方向通入电流,根据霍尔效应原理,与这两者垂直的方向上将会产生霍尔电势差VH输出,再由后续电路的放大和整形,使其输出信号成为方波。

霍尔传感器主要完成里程的计算。把霍尔传感器安装在车轮上来检测信号,把输出端接在单片机的P3.3端口,车轮每转过一周,霍尔传感器就完成一个开关动作,输出一个脉冲,引起单片机的中断一次,通过对中断次数的计算来完成对里程的计算。车轮的周长为1m(可以根据相应的车辆设置),每当霍尔传感器传出1000个脉冲,单片机中断1000次,出租车就行走了一千米,里程加一。

2.2 键盘控制单元

本次设计需要对每位乘客的乘车费用分别进行计算,这部分用独立按键控制。一辆出租车上最多可以乘坐4名乘客,所以采用了4个独立按键。每个独立按键可以控制一个乘客的乘车费用。当按键按下第一次时,对乘客的计费开始,当按下第二次时,对相应程序初始化,并对乘客的乘车费用清零。

按键的按动过程中会有抖动存在,所以在程序设计中要设置去抖程序。

2.3 显示单元

显示部分需要显示四位乘客的乘车总费用,其主要功能是由LCD1602来完成。LCD1602与单片机的数据地址线0-7分别连接。根据P0口的硬件特点,外部必须接入上拉电阻。LCD1602具有的特性为:①1602采用的是5×7点阵图来显示单个字符,②LCD1602中的“16”代表了每行最多可以显示16个字符,“02”代表了总共可以显示两行字符。1602内有一个80字节的缓冲区(如表一所示),每一行有40个字节地址,但是1602的屏幕上只能显示前十六个字节地址的内容。

3 软件设计

3.1 主程序

在主程序中,需要完成对各个参量寄存器以及接口的初始化,以及对应程序的中断、计算、循环等工作,主要部分是按键程序的书写。

当出租车启动后,主程序开始执行,各个部分进行初始化并开始扫描键盘,当扫描到按键的状态发生变化时,键盘状态改变次数变量就加1(key++),当key=1时,就启动计价子程序,执行相应子程序的内容,完成该按键对应乘客的乘车费用的计算,当key=2时,相应部分子程序初始化把按键对应乘客的乘车费用清零,并把key从新赋值为零。程序框图如图3所示。

3.2 总价计算子程序

主程序启动后,里程中断服务子程序将计算好的数值传入里程寄存器中。总价计算子程序就是根据里程寄存器里的内容来判断乘客乘车的里程数是否大于3km。若里程大于3km,则执行计算公式:总价金额=起步价+(里程-3)×单价+等待时间×等待单价;若乘客里程小于或等于三千米,则执行公式:总金额=起步价+等待时间×等待单价。

3.3 里程中断服务子程序

里程中断子程序的原理为:每当霍尔传感器传来一个脉冲,单片机就中断一次。只有当相应的键盘状态改变次数变量key1,key2,key3,key4得值为1时,相应乘客的里程计算才开始,对应计算子程序的单片机每中断一次,单片机中断次数加一,当中断次数达到1000以后,里程加一,然后将中断的次数清零,重新进行累加。根据按键的不同从而可以分别计算不同乘客的里程。

3.4 等待中断服务子程序

等待中断服务子程序的原理为:首先设置单片机为每1ms中断一次,然后将当前里程值存入一个缓存变量,每过5分钟,把当前得到的里程值与缓存变量中的里程值进行比较,如果数值相等,就可以得出霍尔传感器没有传出信号,从而启动等待计费,每过5分钟,等待时间计价就改变一次。

4 结论

通过软件仿真和硬件实验可以验证多人计价器在功能上实现了对多个乘客进行乘车计费的,并且在硬件测试时1602上显示的乘车费用与理论值一致,所以多人计价器在准确度上也达到了要求。经实验证明硬件系统在实时性能上比软件系统要低,所以会出现计时功能与实际相比有微小延迟的结果。硬件实验的灵活性较软件仿真较差,可能会出现按键按下程序执行执行延迟的情况。

参考文献

[1]耿永刚,李利珍编著.单片机技术与应用[M].上海科学技术出版社.2012.

[2]深圳信盈达电子有限公司.轻松成为设计高手51单片机设计实战[M].北京航空航天大学出版社,2013.

[3]陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010.

(作者单位:内蒙古工业大学)

猜你喜欢
C语言
基于Visual Studio Code的C语言程序设计实践教学探索
51单片机C语言入门方法
基于C语言的计算机软件编程
C语言程序设计课程教学与学科专业相结合的探索
《C语言程序设计》翻转课堂教学改革要点
浅谈基于C语言的计算机软件程序设计
高职高专院校C语言程序设计教学改革探索
基于C语言的学生成绩管理系统的设计与实现
基于C语言的常用排序算法比较研究
论子函数在C语言数据格式输出中的应用