单片机课程设计出租车计价器1.docx
《单片机课程设计出租车计价器1.docx》由会员分享,可在线阅读,更多相关《单片机课程设计出租车计价器1.docx(27页珍藏版)》请在冰豆网上搜索。
![单片机课程设计出租车计价器1.docx](https://file1.bdocx.com/fileroot1/2023-2/2/be6418d7-2a91-47f9-81f0-86645c223e2c/be6418d7-2a91-47f9-81f0-86645c223e2c1.gif)
单片机课程设计出租车计价器1
常州机电职业技术学院
毕业设计(论文)
作者:
丛佳伟学号:
40931111
系部:
电气工程系
专业:
应用电子技术
题目:
出租车计价器系统
指导者:
徐登
黄勇
评阅者:
2012年05月
摘要
现在各个城市出租车行业都已普及,因此出租车计价器的技术已经成熟,但是出租车计价器的市场还具有广阔的前景。
随着城市建设的日益完善,关乎城市面貌的出租车行业也将迅速发展,出租车计价器的的大批量需求也是毫无疑问的,所以未来出租车计价器的市场还是有相当大的潜力的。
本次出租车计价器设计以AT89S52单片机为中心,采用U18霍尔传感器对轮胎转数进行计数,实现对出租车里程的测量,并最终计算出结果。
其中采用寄存器芯片AT24C02使系统在掉电的时候对单价、里程、车轮长度等信息进行存储,采用时钟芯片DS1302来显示时间和在系统需要时进行计时。
输出采用两个4段数码显示管,而且根据按键有空车指示灯、等待查询指示灯、单程指示灯进行指示。
汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。
它关系着交易双方的利益。
具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
因此,汽车计价器的研究也是有一定的应用价值的。
关键词:
计价器、霍尔传感器、单片机
目录
摘要1
1绪论3
1.1出租车计价器概述3
1.2单片机的概述3
2总体方案设计4
2.1设计任务要求4
2.1.1设计任务4
2.1.2设计要求5
2.2设计的主要功能5
2.3方案的选取5
2.3.1硬件设计方案5
2.3.2软件设计方案6
3硬件设计7
3.1AT89S52单片机及最小系统7
3.2测距单元10
3.3按键单元12
3.4时钟单元12
3.5显示单元13
3.6储存单元16
4软件设计16
4.1系统主程序16
4.2数据处理子程序17
4.3等待时间计时子程序18
4.4键盘扫描子程序19
5Proteus软件仿真21
总结22
致谢23
参考文献24
附1、系统原理图25
1绪论
1.1出租车计价器概述
我国在70年代开始出现出租车,但那时的计费系统大都是国外进口不但不够准确,价格还十分昂贵。
随着改革开放日益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。
出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打一发票和语音提示、按时间自主变动单价等功能。
随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。
本次设计的目的在于现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。
而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
1.2单片机的概述
计算机系统已明显地朝巨型化、单片化、网络化三个方向发展。
巨型化发展的目的在于不断提高计算机的运算速度和处理能力,以解决复杂系统计算和高速数据处理,比如系统仿真和模拟、实时运算和处理。
单片化是把计算机系统尽可能集成在一块半导体芯片上,其目的在于计算机微型化和提高系统的可靠性,这种单片计算简称单片机。
单片机的内部硬件结构和指令系统主要是针对自动控制应用而设计的所以单片机又称微控制器MCU(MicroControllerUnit)。
用它可以很容易地将计算机嵌入到各种仪器和现场控制设备中,因此单片机又叫做嵌入式微控制器(EmbeddedMCU)。
单片机自20世纪70年代问世以来,以其鲜明的特点得到迅猛发展,已广泛应用于家用电器、智能玩具、智能仪器仪表、工业控制、航空航天等领域,经过30多年的发展,性能不断提高,品种不断丰富,已经形成自动控制的一支中坚力量。
据统计,我国的单片机年容量已达1~3亿片,且每年以大约16%的速度增长,但相对于国际市场我国的占有率还不到1%。
这说明单片机应用在我国有着广阔的前景。
对于从事自动控制的技术人员来讲,掌握单片机原理及其应用已经成为必不可少的学习任务。
单片机的应用十分广泛,在工业控制领域、家电产品、智能化仪器仪表、计算机外部设备,特别是机电一体化产品中,都有重要的用途。
其主要的用途可以分为以下方面。
●显示:
通过单片机控制发光二极管或是液晶,显示特定的图形和字符。
●机电控制:
用单片机控制机电产品做定时或定向的动作。
●检测:
通过单片机和传感器的联合使用,用来检测产品或者工况的意外发生。
●通信:
通过RS-232串行通信或者是USB通信,传输数据和信号。
●科学计算:
用来实现简单的算法。
那么单片机是不是解决上述应用的唯一选择呢?
当然不是!
单片机最明显的优点是价格便宜,从几元人民币到几十元人民币。
这是因为这类芯片的生产量很大,技术也很成熟。
其次,单片机的体积也远小于其他两种方案。
单片机本身一般用40引脚封装,当然功能多一些的单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只有8只引脚。
当然,单片机无论在速度还是容量方面都小于其他两种方案,但是在实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能。
例如,控制电冰箱的控制器就不需要使用嵌入式系统,用一片51就可以轻松实现。
所以应用的关键是看能否够用,是否有很好的性能价格比。
51系列的单片机已经面世十多年,依然没有被淘汰,还在不断发展中,这就说明是它有广阔的应用前景。
2总体方案设计
本次设计是使用单片机技术来实现一个出租车的数字计价器,利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和单双程价格调整、时钟显示功能等等。
具有性能可靠,电路简单、成本低、扩展空间大等特点。
2.1设计任务要求
2.1.1设计任务
设计一款基于AT89S52单片机的出租车数字计价器,通过对传感器的检测,对数值进行处理和显示。
2.1.2设计要求
一、基本要求
(1)能显示里程,单位为公里,最后一位为小数位。
(2)能显示金额数,单位为元,最后一位为小数位。
(3)可设定单程价格和往返价格,单程价格为2元/公里,往返价格为1.5元/公里。
(4)车速<5公里/小时的时间累积为总等待时间,每5分钟等待时间相当于里程数增加1公里。
(5)起步公里数为3公里,价格为5元,若实际距离大于3公里,按规则3计算价格。
(6)按暂停键,计价器可暂停计价,按查询键,可显示总等待时间。
二、发挥部分
(1)增加了空车指示功能,当无客人时,按下功能切换按键,空车指示灯亮。
(2)增加实时时间显示,无论计价器工作或者空车,都能显示实时时间,便于时间提醒。
(3)增加信息储存功能。
可以储存等待时间,里程和金额。
2.2设计的主要功能
本设计所设计的出租车数字计价器的主要功能有:
金额输出、路程输出、数据复位、计时计价、空车显示等。
输出采用2个4位8段共阳数码管,车辆行走时前4位显示路程,后4位显示金额。
车辆候车时,前4位显示等待时间,后4位显示等待金额。
空车时显示实时时间。
储存等待时间,里程和金额。
2.3方案的选取
本设计是由软件设计和硬件设计两部分组成的。
软件设计要进行程序的编写和软件仿真;硬件设计要设计电路、硬件仿真和制作电路板。
2.3.1硬件设计方案
本系统的硬件设计主要包括单片机AT89S52、数据显示部件、U18霍尔传感器电路、里程计算及计价单元的设计。
在硬件设计过程中,充分利用各部件的功能,实现多功能的出租车计价器设计。
计价器的单片机系统框图如图2-1所示。
它由以下几个部件组成:
霍尔传感器单元、AT89S52单片机、金额显示、里程显示、电源。
利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程和价格的计算及显示功能。
图2-1计价器系统框图
2.3.2软件设计方案
本设计程序的采取C语言进行编写,使用KeiluVision3编译和Proteus7.4a仿真软件进行仿真调试。
其中的里程计算和费用计算方案如下。
1、里程计算
(1)霍尔传感器对车轮进行信号检测,产生并输出脉冲信号到单片机;
(2)单片机对传感器输出的脉冲信号进行计数,并进行km计算:
每一个信号代表轮胎旋转一周,设轮胎的周长为1.57m;每km产生的信号数为N,里程显示为N×1.57m=1.57N(km)
2、费用计算
(1)出租车的起步费为5元,并且3km内不需额外计价;
(2)出租车行驶3km后,单程2元/km,双程1.5元/km。
(3)等待收费的标准为5分钟算一公里;
(4)暂停时计价器暂停计价,不收费用。
3硬件设计
本设计的硬件设计包括单片机AT89S52单元、测距单元、显示单元(数码管显示金额、等待时间和里程,指示灯对单双程切换指示、空车指示、等待计时指示)、按键单元、时钟单元和储存单元。
3.1AT89S52单片机及最小系统
1、AT89S52单片机
AT89S52具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,3个16位可编程定时计数器,全双工串行口,看门狗(WDT)电路,片内时钟振荡器。
P0口有二个功能:
1、外部扩展存储器时,当做数据/地址总线。
2、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:
其内部有上拉电阻。
P2口有两个功能:
1、扩展外部存储器时,当作地址总线使用。
2、做一般I/O口使用,其内部有上拉电阻。
P3口有两个功能:
除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。
图3-1AT89S52引脚图
设计中用到的单片机各管脚(图3-1)功能以及与其他模块连接介绍如下:
VCC:
接+5V电源。
VSS:
接地。
时钟引脚:
XTAL1和XTAL2两端接晶振和30PF的电容,构成时钟电路。
它可以使单片机稳定可靠的运行。
RST:
复位信号输入端,高电平有效。
当在此引脚加两个机器周期的高电平时,就可以完成复位操作。
P1.0:
接功能按键。
P1.1:
接切换键,表示单双程切换。
P1.2:
接查询(上次金额)键。
P1.3:
接清零键。
P1.4:
接空车指示灯。
P1.5:
接查询指示灯。
P1.6:
接开始计时指示灯。
P1.7:
接双程指示灯。
P3.0:
接查询/确认键。
P0口接数码管段选端,P2口接数码管位选段。
P3.2:
接霍尔传感器的输出口。
P3.3:
接存储器的SCL口。
P3.4:
接储存器的SDA口。
P3.5:
接时钟电路DS1302的RST口。
P3.6:
接DS1302的SCLK口。
P3.7:
接DS1302的I/O口。
2、单片机最小系统
复位电路和晶振电路是AT89S52工作所需的最简外围电路。
单片机最小系统电路图如图3-2所示。
图3-2单片机最小系统
AT89S52的复位端是一个史密特触发输入,高电平有效。
RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。
在复位电路中,按一下复位开关就使在RST端出现一段时间的高电平,外接11.0592M晶振和两个30pF电容组成系统的内部时钟电路。
3.2测距单元
本次设计我们选取了霍尔传感器来进行里程测量。
霍尔器件是一种磁传感器。
用它们可以检测磁场及其变化,可在各种与磁场有关的场合中使用。
霍尔器件以霍尔效应为其工作基础。
霍尔器件具有许多优点,它们的结构牢固,体积小,重量轻,寿命长,安装方便,功耗小,频率高,耐震动,不怕灰尘、油污、水汽及盐雾等的污染或腐蚀。
霍尔器件分为:
霍尔元件和霍尔集成电路两大类,前者是一个简单的霍尔片,使用时常常需要将获得的霍尔电压进行放大。
后者将霍尔片和它的信号处理电路集成在同一个芯片上。
本次设计选取了霍尔集成电路来测量里程。
里程测量是通过将霍尔传感器的集成电路安装在车轮上方的铁板上,将磁铁安装在车轮上,旋转的车轮将磁铁对准集成电路时,霍尔传感器会输出一个脉冲信号,送到单片机,经过单片机的计算处理,将行驶的里程送到显示单元并显示出来。
其原理示意图如下:
图3-3传感器测距示意图
U18是一种利用霍尔效应做成的半导体集成电路器件,它被设计在交变磁场中运行,特别是能在低电源电压和长时间运行温度范围可达到125℃。
这种霍尔IC可用作各种类型的传感器(速度传感器、位移传感器、转速传感器等等),接触开关以及相类似的应用场合。
其工作电压比较宽(2.5~20V),可运行在较大的温度范围内(-20℃~125℃),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可达到1MHZ。
霍尔传感器的特性如图3-4所示,其中BOP为工作点“开”的磁感应强度,BRP为释放点“关”的磁感应强度。
当外加的磁感应强度超过动作点BOP时,传感器输出低电平,当磁感应强度降到动作点BOP以下时,传感器输出电平不变,一直要降到释放点BRP时,传感器才由低电平跃变为高电平。
BOP与BRP之间的滞后使开关动作更为可靠。
U18集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。
在输入端输入电压VCC,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。
当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。
这样两次电压变换,使霍尔开关完成了一次开关动作。
图3-4U18霍尔传感器和其输出特性
U18霍尔传感器有3个外接口,2个是电源的正负极接口,最后一个是脉冲信号输出口,只要将霍尔传感器的信号输出端接到单片机的端口上便可以实现距离检测。
其中,单片机的P3.2(INT0)引脚作为信号的输入端,采用外部中断0进行计数。
车轮每转一圈,霍尔传感器就产生一个脉冲信号,根据霍尔效应原理,当霍尔片处在磁场中时,霍尔传感器的输出端输出低电平。
当车轮转动一圈时小磁铁提供一个磁场,则霍尔传感器输出一次低电平完成一次数据采集,从而产生信号。
霍尔传感器检测并输出信号到单片机的INT0或INT1计算脉冲输入端,引起单片机的中断,对脉冲计数,当计数达到特定的次数时,里程就会增加,单片机对里程进行计算后,通过接口电路将计算好的结果传送到数码管并显示出来。
3.3按键单元
本设计的按键单元电路(如图3-5)有5个按键,功能分别是:
S1是空车时查询上次金额和里程以及等待时间,结账时查询本次金额和里程以及等待时间;S2功能键,不按时空车指示灯亮而且数码管显示实时时间,按下时可设置单双程,此时再按S3可进行单程和双程之间切换,再按S1可确认单双程,双程时双程指示灯亮并开始计价;按下S4可对本次金额、里程以及等待时间进行查询;S5为清零键,按下时清零之前数据消除以及存储本次信息。
图3-5按键单元电路
3.4时钟单元
本设计采用基于DS1302的时钟电路(如图3-6)对时间进行实时显示,单片机掉电对其没有影响。
用数码管表现出来,当出租车空车时就显示时间,给人时间提示。
图3-6时钟电路单元
3.5显示单元
本设计显示单元包括两部分:
数码管显示(图3-7)和二极管指示显示(图3-8)。
数码管显示部分使用两个四位一体的LED数码管,LED显示器是由LED发光二极管发展过来的一种显示器件,是发光二极管的改型。
LED是发光二极管的简称,是一种将电能转换成光能的设备。
本身也是一种光源。
LED显示器是由发光二极管排列组成的显示器件。
它采用低电压扫描驱动,具有:
耗电少、使用寿命长、成本低、故障少、视角大、可视距离远等特点。
此外,它的响应时间短(一般不超过0.1us),亮度也比较高。
它的缺点是工作电流比较大,每一段的工作电流在10mA左右。
其中每位数码管是由8个发光二极管演变而来,其中7个发光二极管构成7笔字形,另一个构成小数点,称为8段LED。
8段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛,它的外观如图3-9所示:
图3-98段数码管
这类数码管可以分为共阳极(8个发光二极管的阳极接在—起)与共阴极(8个发光二极管阴极连在一起)两种,共阳极就是把所有LED的阳极连接到共同接点,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如图3-10所示。
图3-10共阳和共阴数码管结构
通过控制这个公共端,可使该位亮或暗。
如共阴极端接地或共阳极接高电平,则该位显示器有效,反之无效。
本设计采用共阴LED数码管。
数码管有静态显示和动态显示两种,这里采用动态显示。
它具有低功耗、接口少等特点。
如图3-7两个四位一体数码管接P0口作为段选,接P2口作为位选。
空车时显示时间,开始计价时前四位显示路程,后四位显示价钱。
当查询等待时间时显示为等待时间。
图3-7显示单元(数码管显示部分)
二极管指示部分包括空车指示灯、等待时间查询指示、开始计时指示和双程指示如图3-8。
这些指示灯能对出租车的每一种状态进行指示,空车时空车指示灯亮,查询等待时间时等待时间查询指示灯亮,当汽车速度小于5km/h时开始计时,计时指示灯亮。
计价前如果按下双程键双程指示灯亮,表示为双程。
图3-8显示单元(二极管指示部分)
3.6储存单元
存储单元的作用是储存上一次的里程、金额和等待时间。
AT24C02是Atmel公司的1KB的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。
图3-11储存单元电路
图中R3、R4是上拉电阻,其作用是减少AT24C02的静态功耗。
由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(时钟脉冲)和SDA(数据/地址)与单片机P3.3和P3.4口连接,进行传送数据。
4软件设计
本系统的软件设计主要分为系统主程序、数据处理子程序、等待时间及时子程序和键盘扫描子程序五个模块,下面对每一块进行介绍。
4.1系统主程序
本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用各个子程序的方法,使程序通俗易懂,我们设计了整体程序流程图。
在main函数编写开始,要进行初始化,包括对系统初始化和对硬件设备进行初始化,并使硬件处于就绪状态。
在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。
系统流程图如下图4-1。
图4-1系统主程序流程图
4.2数据处理子程序
每当霍尔传感器输出一个低电平信号就使单片机中断一次,在计数中断服务程序,里程和金额都相应变化,当然等待时间也换算成里程(当速度小于5km/h时5分钟想当于1公里)。
计算程序根据里程数分别进入不同的计算公式。
如果里程大于3公里,则执行公式:
金额=(里程-3)*单价+5;否则,执行公式:
总金额=起步价。
程序流程图如图4-2所示。
图4-2数据处理子程序流程图
4.3等待时间计时子程序
当出租车的速度5km/h时等待时间开始计时,并被换算里程,进行计算显示等待时间和金额。
当结算时停止计时和计费并显示金额,当有查询键按下时显示等待时间,当有清零键按下时存储本次金额。
如图4-3:
图4-3等待时间计时子程序
4.4键盘扫描子程序
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。
流程图如图4-4。
图4-4键盘扫描子程序
5Proteus软件仿真
本设计需要用KeiluVision3对C51程序进行编译,生成“.hex”文件,如图5-1:
图5-1KeiluVision3编译
在Proteus软件中画出仿真电路(如图5-2),把KeiluVision3编译后生成的“.hex”导入到单片机中,按“运行仿真”键进行仿真。
图5-2Proteus仿真
总结
总结在本次设计中,我们采用AT89S52芯片为核心器件,设计出了简单的出租车计价器,能够实现显示时间、等待时间、金额和里程,按键控制,空车指示。
选题后,我们便开始复习单片机方面的知识,也查阅、搜索了很多相关资料,进行总体设计与具体设计,同时也学习仿真软件Proteus和编程软件KeiluVision3。
由于以前都采用汇编语言实现编程,对用C语言来实现单片机的编程不太习惯,花费了一些时间来熟悉C语言的编程。
在设计开始,要形成流程图,它可以使设计有一定的逻辑性与严密性,使得设计思路明确。
采用模块化的设计思想很重要,它方便编写、修改与调试,另外加上必要的注释,便于交流与理解。
这次课程设计设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。
通过自身的努力以及相关图书资料的帮助,逐渐熟悉了KeiluVision3、PROTEUS和C语言等软件的使用以及硬件焊接与检测过程中的一些小技巧。
本次设计我学习到不少单片机的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题。
所焊实物尚有许多不足,个别功能还不能很好的实现,主要原因是考虑问题不周全,电路设计经验少,实际动手能力不足。
恳请各位老师批评指正,以使我在以后的学习和实践中加以改进和提高。
致谢
毕业设计即将结束,在老师的指导和同学的帮助之下,学生对于出租车计价器设计有了更多新的认知,对出租车计价器设计有了更深一步的认识,对出租车计价器综合设计的整体脉络了解得更加的清晰透彻。
通过毕业设计,学生对自己三年以来所学的知识有更多的认识。
毕业设计,帮助我们总结大学的收获、认清自我。
同时,还帮助我们改变一些处理事情时懒散的习惯。
从最开始时的搜集资料,整理资料,到方案比选,确定方案,再到着手开始设计,每一步都是环环相扣,衔接紧密,其中任何一个步骤产生遗漏或者疏忽,就会对以后的设计带来很多的不便。
本次作者的毕业设计是由徐老师指导的,在他的悉心指导下,我开阔了眼界,明确了思路。
在整个的设计过程中,徐老师提出了许多宝贵的建议和指导,使我能够顺利的完成整个设计,在此,谨向徐老师表示由衷的感谢。
在即将离开学校之际,我要感谢在大学生活中任课的众多老师,正是在他们的谆谆教诲下使我顺利完成了大学的基础知识和专业知识的学习。
在此,还要感谢陪伴我共同走过大学时代并给予我帮助的同学和朋友