基于单片机的出租车计价器软件设计.docx
- 文档编号:17230621
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:28
- 大小:1.30MB
基于单片机的出租车计价器软件设计.docx
《基于单片机的出租车计价器软件设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的出租车计价器软件设计.docx(28页珍藏版)》请在冰豆网上搜索。
基于单片机的出租车计价器软件设计
湘潭大学毕业论文
题目:
基于单片机的出租车计价器软件设计
学院:
信息工程学院
专业:
建筑设施智能技术
学号:
姓名:
指导教师:
完成日期:
2011年5月
湘潭大学
毕业设计说明书
题目:
基于单片机的出租车计价器软件设计
学院:
信息工程学院
专业:
建筑设施智能技术
学号:
2007551115
姓名:
指导教师:
完成日期:
2011年5月
基于单片机的出租车计价器软件设计
摘要
随着城市改革开放的进一步深化,第十二五发展计划的提出,出租车行业迅速发展,出租车计价器的市场需求量也大大增加。
从加强出租车行业管理及服务质量并且节约成本和技术创新出发,从生活上方便实用考虑,本次毕业设计以凌阳S-4-PCE061A单片机为核心、配合凌阳SPLC501液晶显示模组,实现对出租车计价统计。
本次毕业设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机、乘客同志提供方便,提供友好的用户界面,并具有语音提示功能。
关键词:
SPCE061ASPLC501液晶模组出租车计价器
Microcontrollerbasedsoftwaredesignofthetaximeter
Abstract
Withthefurtherdeepeningofreformandopeningupthecity,TwelfthFive-YearDevelopmentPlanputforwardtherapiddevelopmentofthetaxiindustry,taximeterisalsogreatlyincreasedthemarketdemand.Fromstrengtheningthetaxiindustryandservicequalitymanagementandtechnologicalinnovationandcostsavingsstartingfromthedailylifeconvenientandpracticalconsiderations,thisgraduationdesignSunplusSPCE061AMCUasthecore,withSunplusSPLC501liquidcrystaldisplaymodules,toachievethetaximeterStatistics.Thegraduationofthemeterwillnotonlyachievethebasicvaluation,butalsobasedondayandnight,half-waywaitingtoadjusttheunitprice,whilenotdenominatedasaclockforthedriverwhenthecomradescanprovideconvenient,providesafriendlyuserinterface,Andwithvoiceprompts.
Keywords:
SPCE061A、SPLC501、taxi、meterLCDmodule
第一章引言………………………………………………………………………………………………………1
1-1功能简介………………………………………………………………………….………………….….2
第二章方案概述……………………………………………………………………………………………..4
2-1设计要求……………………………………………………………………………………..……......4
2-2参考扩展方案……………………………………………………………………………….………..5
第三章程序设计………………………………………………………………………………………………6
3-1主程序……………………………………………………………………….…………………..………..6
3-2液晶显示程序…………………..……………………………………………………………………..7
3-3按键扫描程序…………………..……………………………………………..…………..…………8
3-4计价管理程序…………………………………………………………………………..…..………..9
3-4-1PWM管理程序……………………………………………………………………………..10
3-4-2里程计量程序………………………………………………………..………..………....11
3-4-3时间管理程序…………………………………..…………………………….…..……....12
3-4-4费用管理程序…………………………………………………..……………………..…..13
3-4-5用户界面控制程序……………………………………………………………….…..….14
第四章凌阳16位单片机集成开发环境简介……………………………………………….20
第五章系统调试…………………………………………………………………………………………...….14
5-161板的自检.……………………………………………………………………….………………..…15
5-2是否下载自检程序检查………………………………………………………………………….16
5-3自检过程…………………………………………………………………..………………………….…18
第六章结语……………………………………………………………………………………………………....15
第七章参考文献……………………………………………………………………………………………....15
附录(源程序)……………………………………………………………………………………….….15
致谢…………………………………………………………………………………………………….……….27
第一章引言
凡坐过出租车的人都知道,只要汽车一开动,随着行驶里程的增加,就会看到汽车前面的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如3KM)计费数字显示开始从起步价(如10元)增加。
当出租车到达某地需要在那里等候时,司机只要按一下“计时”键,每等候一定时间,计费显示就增加一个该收的等候费用。
汽车继续行驶时,停止计算等候费,继续增加里程计费。
到达目的地,便可按显示的数字收费。
汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。
它关系着交易双方的利益。
具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
因此,汽车计价器的研究也是十分重要的具有应用价值的研究课题。
随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。
于是,出租车行业以低价高质的服务给人们带来了出行的享受。
但是总存在买卖纠纷困扰着行业的发展。
然而解决这一矛盾的最好方法就是改良出租车的计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。
我国的出租车始于20世纪70年代,随着电子技术的发展,出租车计价器的设计技术也在不断进步和提高。
国内出租车计价器的发展已经经历了4个阶段,从传统的全部由机械元器件组成的机械式到半电子式出租车计价器,再从集成电路式到目前的基于单片机系统设计的出租车计价器。
随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。
而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
随着出租车日益普遍,了解在出租车上应用的计价系统的工作原理并使用单片机实现该系统,是深化单出租车片机应用的良好途径。
该方案充分发挥人性化的特点,利用SPCE061A的语音功能,配合SPLC501液晶模组,模拟实现带语音提示功能的出租车计价系统。
1.1功能简介
出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。
从起步价开始,当汽车程行驶未满3公里时,均按起步价计算。
过3公里后,实现每1公里单价收费,中间遇暂停时,计程数不再增加,开始计时收费,测距收费和测时收费的和便构成了一位乘客的车费。
同时,白天和夜晚价格不同,可以进行切换。
白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节。
(默认白天起步价为10元/3公里,里程单价白天为2元/公里,夜晚起步价为11元/3公里,夜晚单价为2.4元/公里,等待计时单价为0.5元/5分钟)
本方案可以实现:
接受里程传感器的脉冲输入(在本方案中使用PWM模拟替代传感器脉冲),并对脉冲进行计量,继而转换成里程;
采用现行出租车计价系统的计算方法,对行驶里程进行计费;
提供友好的用户界面,并具有语音提示功能。
第二章方案概述
2-1设计要求
利用SPCE061A单片机配合SPLC501液晶模组,实现基本的出租车计价器功能。
具体规格如下:
1.里程计量
a)单片机对传感器脉冲进行计数(传感器脉冲使用SPCE061A内部PWM输出模拟),并将脉冲数换算成公里数;
b)每公里对应的脉冲数PulsePerKM可以调整。
2.费用计算
a)费用计算包括两部分:
行驶费用和低速等待费用;
b)行驶费用计算如下:
白天行驶里程不足StartMilege(三公里)时,费用按照起步价StartPrice(¥10.0元)计算;当超出StartMilege时,行驶费用=StartPrice+(行驶里程-StartMilege)×每公里的单价;夜晚行驶里程不足StartMilege时,费用按照起步价NightStartPrice(¥11.0元)计算;当超出StartMilege时,行驶费用=NightStartPrice+(行驶里程-StartMilete)×每公里的单价;
c)每公里的单价根据时间区分为白天和黑夜两种价格。
白天每公里价格为PricePerKM(¥2.0元),晚上每公里价格为NightPricePerKM(¥2.4元);
d)依靠时间判断白天和黑夜,晚上NightTime1(23点)之后,认为进入夜行状态,早上NightTime2(5点)之后,认为离开夜行状态,进入昼行状态;
e)如果行驶里程超过LongWayLimit(十三公里),则超出的里程的单价上涨为原单价的LongWayPrice(1.5)倍,做为空返费用。
f)上面提到的StartMilege、StartPrice、NightStartPrice、PricePerKM、NightPricePerKM、LongWayLimit、LongWayPrice、NightTime1、NightTime2等参数要求可以在程序中调整;
g)低速等待费用计算如下:
i.低速等待时间的计时方法为:
当车速低于WaitSpeed1(五公里/时)时开始计时,车速超过WaitSpeed2(十公里/时)时终止计时;
ii.如果行驶过程中多次发生低速等待,则等待时间累加;
iii.总的等待时间不超过FirstWaitTimeLimit(五分钟),则不计算费用;
iv.总的等待时间超过FirstWaitTimeLimit(五分钟),增加WaitPrice(¥2.0)元,同时,超出的时间按照每WaitTimeLimit(三分钟)增加WaitPrice(¥2.0)元计算,不足WaitTimeLimit(三分钟)的部分不增加费用。
即,
v.上面提到的WaitSpeed1、WaitSpeed2、FirstWaitTimeLimit、WaitTimeLimit、WaitPrice等参数要求可以在程序中调整;
h)要求系统可以在行驶期间实时检测并计算总的费用(包括行驶费用和等待费用)
3.用户操作
a)用户通过三个按键进行操作,并通过液晶显示器显示当前的行驶状态、行驶公里、时间、费用等信息,参考显示界面如图1.1所示;
图1-1用户操作界面
b)空车状态下,液晶显示器可以显示日期、时间等信息;
c)按下61板上的Key3键时,进入行驶状态,启动里程计量,并播报欢迎语提示音;
d)行驶状态下,液晶显示器显示“行驶”以指示当前出租车的状态,并可以实时显示当前的单价、行驶里程、低速等待时间、总的费用等信息;
e)行驶状态下,再次按下Key3时停止里程计量,并播报当前行驶里程及总的费用,此时,液晶显示器保持单价、里程、低速时间、金额等信息,此后,按下Key1键可以将显示信息归零;
f)在空车状态下,按下Key2键可以进入日期时间设定状态,通过Key2键切换设置项,Key3和Key1增/减数值,从而实现对日期时间的设定;
2-2参考扩展方案
1.可以存储3日内的行驶记录并反查;
2.通过PC端修改价格等数据;
3.帐单打印接口
a)启动时打印一份基本信息,包括:
车牌等信息;
b)停止时打印详细信息,包括:
下车时间、金额等。
第三章系统软件设计
本系统软件中包括下面程序模块:
主程序:
初始化系统涉及到的硬件模块,扫描键盘,根据按键启动/停止里程测量,并调用用户界面程序定时更新日期时间显示,实时更新单价、里程、低速时间、费用等信息显示;
液晶驱动程序:
LCD显示驱动程序,实现文本、图形显示等功能。
按键扫描程序:
扫描按键,返回扫描结果。
语音播放程序:
播放提示音,行驶里程、费用等。
计价管理程序:
完成传感器脉冲计量,然后转换为公里数,并根据规则计算对应的费用,同时,监测行驶速度,统计低速时间,计算低速等待费用,提供液晶显示更新函数,以便主函数可以控制更新用户界面以及行驶里程、费用等信息的显示。
该模块包括PWM管理程序、里程计量程序、时间管理程序、费用管理程序、用户界面控制程序等部分。
3-1主程序:
在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。
另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。
然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。
当空车信号灯打下时,表示有乘客上车,并启动计价,将根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。
若已超过,则根据里程值、每公里的单价和起价来计算出当前的累计价格,并将结果存于价格寄存器中,然后将当前时间和累计价格将通过SPLC501液晶显示屏显示出来。
当中途塞车(等待或低速行驶)时,在一定时间内没有检测到传感器的脉冲信号就启动T0定时器进行计时,当超过规定的等待时间后,计价器就根据等待价格进行当前金额的累加与显示,并在计价器上显示等待时间;当到达目的地的时候,由于按下61A板上的复位键即没有送来脉冲信号,就停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行初始化过程。
司机把空车灯打上,就停止计价,显示当前所应该付的金额和对应的单价,等乘客下车后,启动出租车,计价器检测到传感器的脉冲信号,系统自动对显示清零,并重新进行初始化过程,完成1次计价
主程序流程如图3.1,程序运行后首先初始化各个硬件部件,同时打开1KHz和2Hz时基中断,为键盘扫描和时间管理模块服务。
然后,程序进入主循环,不断进行按键扫描,并根据按键启动/停止里程计量,或进入系统设置模式。
在主循环中同时还对时间显示进行更新。
图3-1主程序流程图
3-2液晶驱动程序:
LCD显示部分采用SPLC501液晶模组附带的驱动程序。
该驱动程序的架构如下图
图3-2LCD驱动程序架构
驱动程序由5个文件组成,分别为:
底层驱动程序文件SPLC501Driver_IO.inc、SPLC501Driver_IO.asm;用户API功能接口函数文件SPLC501User.h、SPLC501User.c、DataOSforLCD.asm。
SPLC501Driver_IO.inc:
该文件为底层驱动程序的头文件,主要对使用到的寄存器(如端口控制寄存器等)进行定义,还对SPCE061A与SPLC501液晶显示模组的接口进行配置;用户可以根据自已的需求来配置此文件,但要使端口的分配符合实际硬件的接线。
SPLC501Driver_IO.asm:
该文件为底层驱动程序,负责与SPLC501液晶显示模组进行数据传输的任务,主要包括端口初始化、写控制指令、写数据、读数据等函数;这些函数仅供SPLC501User.c调用,不建议用户在应用程序中调用这些函数。
SPLC501User.h:
该文件为用户API功能函数文件的头文件,主要对一些记住符进行定义,以及配置LCD的一些设置,另外该文件里还对SPLC501User.c中的函数作了外部声明,用户需要使用LCD的API功能函数时,需要把该文件包含在用户的C文件中。
SPLC501User.c:
文件中定义了针对LCD显示的各种API功能函数。
DataOSforLCD.asm:
该文件中提供了一些供API功能函数调用的数据处理子程序,主要完成显示效果的叠加、画圆偏差量的计算等。
3-3按键扫描程序:
系统使用1024Hz时基中断对IOA口低八位进行扫描,并进行去抖、长短按键判断等工作。
按键扫描程序提供如下三个API函数以供用户使用按键功能:
„voidKeyScan_Init();
入口参数:
无
出口参数:
无
功能:
按键扫描初始化。
调用该函数将同时初始化按键扫描使用的I/O口
„voidKeyScan_ServiceLoop();
入口参数:
无
出口参数:
无
功能:
按键扫描后台服务程序。
该函数一般被安置在1KHz时基中断中。
„unsignedintKeyScan_GetKey(unsignedint*KeyType);
入口参数:
按键类型
出口参数:
键值
功能:
该函数将返回当前按键的键值,并通过入口参数KeyType返回该按键的类型。
3-4计价管理程序:
本系统的核心是对传感器脉冲进行计数,并转换为公里数,进而根据规则计算行驶费用,同时,还需要对行驶速度进行监测,判断当前车辆是否处于低速运行状态,以实现对低速运行状态的计时,计算等待费用。
计价管理程序包括如下几个组成部分:
PWM管理程序、里程计量程序、时间管理程序、费用管理程序、用户界面控制程序等,各部分共同协调工作,完成计价管理的核心工作以及用户界面的管理工作。
3-4-1PWM管理程序:
本系统中,使用了TimerB产生PWM波,模拟实际的出租车上的里程传感器脉冲。
改变PWM的频率,就相当于改变了车速,对PWM波的脉冲进行计数,等同于对里程传感器的脉冲进行计数。
对PWM的管理包括:
启动PWM、增大PWM频率、减小PWM频率、停止PWM等。
系统中为TimerB设置了96K的时钟源,以产生一定频率范围的PWM波,改变TimerB的计数初值,将会改变PWM的频率,从而达到管理PWM频率的目的。
3-4-2里程计量程序:
本系统中使用了外部中断1来实时检测由IOB2输入的脉冲。
在外部中断服务程序中对中断次数进行计数,便可以统计输入脉冲的数量。
一般情况下,运行一段时间后输入单片机的脉冲数量会比较大,容易导致计数结果溢出。
故程序中使用了两个变量对脉冲进行计数。
uiPulseNum变量用来记录中断次数(脉冲个数),当达到一公里对应的脉冲数量后,使另外一个记录公里数的变量uiDistance加一,并使uiPulseNum归零重新计数。
这样,便将公里数的整数部分和小数部分分开统计,使结果不容易溢出,也便于结果转换。
另外,程序中使用了2Hz时基中断用来计算车辆的行驶速度。
统计0.5s内的脉冲数量,即可以得到车辆的行驶速度。
这一速度将提供给费用管理程序用来判断是否处于低速等待状态。
3-4-3时间管理程序:
系统使用2Hz时基中断实现计时。
中断服务程序流程如图3.3所示。
其中,2Hz计数器ulTimer用来为其他模块提供两个2Hz的计数器以方便的实现计时等操作。
图3-3时钟服务程序
3-4-3费用管理程序:
费用管理程序的作用是监测系统时间、行驶里程和低速等待时间,并根据一定规则换算成费用(费用的具体计算过程请参考出租车计价器礼包的方案简介,在此不做说明)。
图3.4所示的是启动计费的程序流程图。
启动计费时,需要判断当前时间是否属于夜行,以便执行夜行起步价单价。
图3-4启动计费程序流程
启动计费后,主程序需要在主循环中不断调用计费服务程序。
计费服务程序是按照规则计算费用的核心程序。
在这里,程序记录当前行驶里程,并判断是否出现昼夜行交替现象,以便对单价进行调整;判断行驶里程是否超过规定的空返距离,一旦超过此距离则将价格上涨50%;从里程测量模块得到车辆行驶的速度,判断是否出现低速行驶状态,并利用时钟管理模块提供的2Hz计数器对低速行驶时间进行计时,从而计算低速等待时间。
图3.5所示的是计费服务程序的流程图。
图3-5计费服务程序流程图
根据计费服务程序中统计的低速等待时间长度,可以按照图3.6所示的流程换算成低速等待费用。
图3-6等待时间换算成费用程序流程图
行驶结束后,停止里程测量模块的测量程序,即可完成此次计费。
系统将保留本次的里程、计费结果等数据,直至下一次计费时自动清除。
3-4-5用户界面控制程序:
使用液晶驱动程序提供的功能函数,可以方便的在液晶屏上显示需要的信息或图片。
系统上电后首先绘制固定不变的部分,如一些汉字提示等。
其他如单价、行驶里程等内容在车辆处于行驶状态时需要实时更新。
界面控制程序将从里程计量模块、时间管理模块和计费管理模块得到必要数据进行显示。
第四章凌阳16位单片机集成开发环境简介
µ’nSP™集成开发环境,它集程序的编辑、编译、链接、调试以及仿真等功能为一体。
具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等,使人们在进行编程、调试工作时更加方便高效。
此外,它还具有软件仿真功能,可以在不连接仿真板的情况下模拟硬件的各项功能来调试程序。
IDE的开发界面如下图所示。
本节将介绍µ’nSP™开发环境的菜单、窗口界面以及项目的操作等,使有兴趣者对开发环境有一个总体了解,并能够动手实践。
图4-1开发环境界面
凌阳十六位单片机集成开发环境采
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 出租车 计价器 软件设计