一、设计思路
本次设计的目的在于现在各大中城市网约车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分网约车尚未普及,但随着科技化发展日益加快,象征着城市面貌的网约车行业也将加速发展,所以,根据网约车制定收费设计也是十分必要的。
本次设计是使用单片机技术来实现一个网约车的数字计价器,利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和单双程价格调整、时钟显示功能等等。具有性能可靠,电路简单、成本低、扩展空间大等特点。
1.1 单片机的概述
计算机系统已明显地朝巨型化、单片化、网络化三个方向发展。巨型化发展的目的在于不断提高计算机的运算速度和处理能力,以解决复杂系统计算和高速数据处理,比如系统仿真和模拟、实时运算和处理。单片化是把计算机系统尽可能集成在一块半导体芯片上,其目的在于计算机微型化和提高系统的可靠性,这种单片计算简称单片机。单片机的内部硬件结构和指令系统主要是针对自动控制应用而设计的所以单片机又称微控制器MCU(Micro Controller Unit)。用它可以很容易地将计算机嵌入到各种仪器和现场控制设备中,因此单片机又叫做嵌入式微控制器(Embedded MCU)。单片机自20世纪70年代问世以来,以其鲜明的特点得到迅猛发展,已广泛应用于家用电器、智能玩具、智能仪器仪表、工业控制、航空航天等领域,经过30多年的发展,性能不断提高,品种不断丰富,已经形成自动控制的一支中坚力量。据统计,我国的单片机年容量已达1~3亿片,且每年以大约16%的速度增长,但相对于国际市场我国的占有率还不到1%。这说明单片机应用在我国有着广阔的前景。对于从事自动控制的技术人员来讲,掌握单片机原理及其应用已经成为必不可少的学习任务。
单片机的应用十分广泛,在工业控制领域、家电产品、智能化仪器仪表、计算机外部设备,特别是机电一体化产品中,都有重要的用途。其主要的用途可以分为以下方面。
显示:通过单片机控制发光二极管或是液晶,显示特定的图形和字符。
机电控制:用单片机控制机电产品做定时或定向的动作。
检测:通过单片机和传感器的联合使用,用来检测产品或者工况的意外发生。
通信:通过RS-232串行通信或者是USB通信,传输数据和信号。
科学计算:用来实现简单的算法。
那么单片机是不是解决上述应用的唯一选择呢?当然不是!
单片机最明显的优点是价格便宜,从几元人民币到几十元人民币。这是因为这类芯片的生产量很大,技术也很成熟。
其次,单片机的体积也远小于其他两种方案。单片机本身一般用40引脚封装,当然功能多一些的单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只有8只引脚。
当然,单片机无论在速度还是容量方面都小于其他两种方案,但是在实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能。例如,控制电冰箱的控制器就不需要使用嵌入式系统,用一片51就可以轻松实现。所以应用的关键是看能否够用,是否有很好的性能价格比。51系列的单片机已经面世十多年,依然没有被淘汰,还在不断发展中,这就说明是它有广阔的应用前景。
1.2 设计任务要求
1.2.1 设计任务
设计一款基于AT89S52单片机的网约车数字计价器,通过对传感器的检测,对数值进行处理和显示。
1.2.2 设计要求
一、基本要求
(1)能显示里程,单位为公里,最后一位为小数位。
(2)能显示金额数,单位为元,最后一位为小数位。
(3)可设定单程价格和往返价格,单程价格为2元/公里,往返价格为1.5元/公里。
(4)起步公里数为3公里,价格为5元,若实际距离大于3公里,按3元计算价格。
(5)按暂停键,计价器可暂停计价,按查询键,可显示总等待时间。
二、发挥部分
(1)增加了空车指示功能,当无客人时,按下功能切换按键,空车指示灯亮。
(2)增加实时时间显示,无论计价器工作或者空车,都能显示实时时间,便于时间提醒。
(3)增加信息储存功能。可以储存等待时间,里程和金额。
1.3 设计的主要功能
本设计所设计的网约车数字计价器的主要功能有:金额输出、路程输出、数据复位、计时计价、空车显示等。输出采用LCD12864液晶显示屏显示。
二、设计过程与说明
2.1 方案的选取
本设计是由软件设计和硬件设计两部分组成的。软件设计要进行程序的编写和软件仿真;硬件设计要设计电路、硬件仿真和制作电路板。
2.1.1 硬件设计方案
本系统的硬件设计主要包括单片机AT89S52、数据显示部件、U18霍尔传感器电路、里程计算及计价单元的设计。在硬件设计过程中,充分利用各部件的功能,实现多功能的网约车计价器设计。
计价器的单片机系统框图如图1所示。它由以下几个部件组成:霍尔传感器单元、AT89S52单片机、金额显示、里程显示、电源。利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程和价格的计算及显示功能。
图1计价器系统框图
2.1.2 软件设计方案
本设计程序的采取C语言进行编写,使用Keil uVision4编译和Proteus7.4a仿真软件进行仿真调试。其中的里程计算和费用计算方案如下。
1、里程计算
(1)霍尔传感器对车轮进行信号检测,产生并输出脉冲信号到单片机;
(2)单片机对传感器输出的脉冲信号进行计数,并进行km计算:每一个信号代表轮胎旋转一周,设轮胎的周长为2m ;每km产生的信号数为500,里程显示为N × 2m = 2N(km)
2、费用计算
(1)网约车的起步费为5元,并且3km内不需额外计价;
(2)网约车行驶3km后,单程2元/km,双程1.5元/km。
(3)等待收费的标准为5分钟算一公里;
(4)暂停时计价器暂停计价,不收费用。
3.1 硬件设计
本设计的硬件设计包括单片机AT89S52单元、测距单元、显示单元(数码管显示金额、等待时间和里程,指示灯对单双程切换指示、空车指示、等待计时指示)、按键单元、时钟单元和储存单元。
3.1.1 AT 89S52单片机及最小系统
1、AT89S52单片机
AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器, 256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,3个16位可编程定时计数器,全双工串行口,看门狗(WDT)电路,片内时钟振荡器。
图2 AT89S52引脚图
P0口有二个功能:
1、外部扩展存储器时,当做数据/地址总线。
2、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:其内部有上拉电阻。
P2口有两个功能:
扩展外部存储器时,当作地址总线使用。
2、做一般I/O口使用,其内部有上拉电阻。
P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。
设计中用到的单片机各管脚(图2)功能以及与其他模块连接介绍如下:
VCC:接+5V电源。
VSS:接地。
时钟引脚:XTAL1和XTAL2两端接晶振和30PF的电容,构成时钟电路。
它可以使单片机稳定可靠的运行。
RST:复位信号输入端,高电平有效。当在此引脚加两个机器周期的高电平时,就可以完成复位操作。
P1.0:接功能按键。
P1.2:接空车指示灯。
P0口接显示屏数据口,P2口接显示屏控制口。
P3.4:接霍尔传感器的输出口。
P3.5:接时钟电路DS1302的RST口。
P3.6:接DS1302的SCLK口。
P3.7:接DS1302的I/O口。
2、单片机最小系统
复位电路和晶振电路是AT89S52工作所需的最简外围电路。单片机最小系统电路图如图3所示。
图3单片机最小系统
AT89S52 的复位端是一个史密特触发输入,高电平有效。RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。在复位电路中,按一下复位开关就使在RST端出现一段时间的高电平,外接11.0592M 晶振和两个30pF 电容组成系统的内部时钟电路。
3.1.2 测距单元
此毕业设计我选取了霍尔传感器来进行里程测量。
霍尔器件是一种磁传感器。用它们可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍尔器件以霍尔效应为其工作基础。
霍尔器件具有许多优点,它们的结构牢固,体积小,重量轻,寿命长,安装方便,功耗小,频率高,耐震动,不怕灰尘、油污、水汽及盐雾等的污染或腐蚀。
霍尔器件分为:霍尔元件和霍尔集成电路两大类,前者是一个简单的霍尔片,使用时常常需要将获得的霍尔电压进行放大。后者将霍尔片和它的信号处理电路集成在同一个芯片上。本次设计选取了霍尔集成电路来测量里程。
里程测量是通过将霍尔传感器的集成电路安装在车轮上方的铁板上,将磁铁安装在车轮上,旋转的车轮将磁铁对准集成电路时,霍尔传感器会输出一个脉冲信号,送到单片机,经过单片机的计算处理,将行驶的里程送到显示单元并显示出来。
其原理示意图如下:
图4 传感器测距示意图
U18是一种利用霍尔效应做成的半导体集成电路器件,它被设计在交变磁场中运行,特别是能在低电源电压和长时间运行温度范围可达到125℃。这种霍尔IC可用作各种类型的传感器(速度传感器、位移传感器、转速传感器等等),接触开关以及相类似的应用场合。其工作电压比较宽(2.5~20V),可运行在较大的温度范围内(-20℃~125℃), 其输出的信号符合TTL电平标准,可以直接接到单片机的IO 端口上,而且其最高检测频率可达到1MHZ。
霍尔传感器的特性如图4所示,其中BOP为工作点“开”的磁感应强度,BRP为释放点“关”的磁感应强度。当外加的磁感应强度超过动作点BOP时,传感器输出低电平,当磁感应强度降到动作点BOP以下时,传感器输出电平不变,一直要降到释放点BRP时,传感器才由低电平跃变为高电平。BOP与BRP之间的滞后使开关动作更为可靠。
U18集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。
在输入端输入电压VCC,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。这样两次电压变换,使霍尔开关完成了一次开关动作。
图5 U18霍尔传感器和其输出特性
U18霍尔传感器有3个外接口,2个是电源的正负极接口,最后一个是脉冲信号输出口,只要将霍尔传感器的信号输出端接到单片机的端口上便可以实现距离检测。
其中,单片机的P3.2(INT0)引脚作为信号的输入端,采用外部中断0进行计数。车轮每转一圈,霍尔传感器就产生一个脉冲信号,根据霍尔效应原理,当霍尔片处在磁场中时,霍尔传感器的输出端输出低电平。当车轮转动一圈时小磁铁提供一个磁场,则霍尔传感器输出一次低电平完成一次数据采集,从而产生信号。霍尔传感器检测并输出信号到单片机的INT0或INT1计算脉冲输入端,引起单片机的中断,对脉冲计数,当计数达到特定的次数时,里程就会增加,单片机对里程进行计算后,通过接口电路将计算好的结果传送到数码管并显示出来。
3.1.3 按键单元
此设计的按键单元电路(如图下)仅有一个功能按键,也就是是否计价控制键,其功能是开启计价模式,并控制空车指示灯的亮灭。
3.1.4 时钟单元
此设计采用基于DS1302的时钟电路(如图6)对时间进行实时显示,单片机掉电对其没有影响。用数码管表现出来,当网约车空车时就显示时间,给人时间提示。
图6 时钟电路单元
3.1.5 显示单元
本次毕业设计采用的是LCD12864液晶显示屏,其功能十分强大,液晶显示屏(LCD)用于数字型钟表和许多便携式计算机的一种显示器类型。
1、液晶显示器各种图形的显示原理
(1)线段的显示
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,„„(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。
(2)字符的显示
用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可形成汉字的显示。
汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5„„右边为2、4、6„„根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加 1,送第二个字节,换行按列对齐,送第三个字节„„直到32B显示完就可以LCD上得到一个完整汉字。
3.2 软件设计
本系统的软件设计主要分为系统主程序、数据处理子程序、和键盘扫描子程序四个模块,下面对每一块进行介绍。
3.2.1 系统主程序
本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用各个子程序的方法,使程序通俗易懂,我设计了整体程序流程图。
在main函数编写开始,要进行初始化,包括对系统初始化和对硬件设备进行初始化,并使硬件处于就绪状态。
在主程序模块中,需要完成对各接口芯片的初始化、网约车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。系统流程图如下图7。
图7系统主程序流程图
3.2.2 数据处理子程序
每当霍尔传感器输出一个低电平信号就使单片机中断一次,在计数中断服务程序,里程和金额都相应变化,当然等待时间也换算成里程(当速度小于5km/h时5分钟想当于1公里)。计算程序根据里程数分别进入不同的计算公式。如果里程大于3公里,则执行公式:金额=(里程-3)*单价+5;否则,执行公式:总金额=起步价。程序流程图如图7所示。
3.2.3 键盘扫描子程序
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。
3.3 Proteus软件仿真
本设计需要用Keil uVision4对C51程序进行编译,生成“.hex”文件,如图8:
图8 Keil uVision4编译
在Proteus软件中画出仿真电路(如图9),把Keil uVision3编译后生成的“.hex”导入到单片机中,按“运行仿真”键进行仿真。
图9 Proteus仿真
3.3 归纳与总结
在此毕业设计中,我采用AT89S52芯片为核心器件,设计出了简单的网约车计价器,能够实现显示时间、等待时间、金额和里程,按键控制,空车指示。
选题后,我便开始复习单片机方面的知识,也查阅、搜索了很多相关资料,进行总体设计与具体设计,同时也学习仿真软件Proteus和编程软件Keil uVision3。由于以前都采用汇编语言实现编程,对用C语言来实现单片机的编程不太习惯,花费了一些时间来熟悉C语言的编程。在设计开始,要形成流程图,它可以使设计有一定的逻辑性与严密性,使得设计思路明确。采用模块化的设计思想很重要,它方便编写、修改与调试,另外加上必要的注释,便于交流与理解。
这次毕业设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。通过自身的努力以及相关图书资料的帮助,逐渐熟悉了Keil uVision3、PROTEUS和C语言等软件的使用以及硬件焊接与检测过程中的一些小技巧。我学习到不少单片机的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题。所焊实物尚有许多不足,个别功能还不能很好的实现,主要原因是考虑问题不周全,电路设计经验少,实际动手能力不足。恳请各位老师批评指正,以使我在以后的学习和实践中加以改进和提高。
四、致谢
这次毕业设计能够得以顺利完成,感谢曾经指导过我的老师,帮助过我的同学,一直支持着我的家人和对我的教诲、帮助和鼓励的结果。我要在这里对他们表示深深的谢意!
首先,要特别感谢我的指导老师——李果老师。李老师在我毕业设计的过程中,给我提供了极大的帮助和指导。李老师给我提供了许多宝贵建议。老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。感谢李老师对我的报告进行认真的评阅和认真的修改。
其次,感谢我的父母亲,你们是我力量的源泉,只要有你们,不管面对什么样的困难,我都不会害怕,谢谢你们对我的支持与鼓励!
第三,要感谢所有的任课的老师,老师们教会我的不仅仅是专业知识,更多的是对待学习、对待生活的态度。
再次,感谢我的室友及其他好友,因为有你们的帮助,我的毕业设计才能得以顺利完成。谢谢你们在我不懂的时候给我的提点。在作图和写毕业设计的时候每当我遇到什么不会的我都是去找同学,而你每次都会给我满意的答案,我毕业设计的完成绝对有你的一份功劳,谢谢你!在此,我再一次真诚地向帮助过我的老师和同学表示感谢!
[2]李泉溪.单片机原理与应用实例仿真.北京:北京航空航天大学出版社,2012.
[3]王平.单片机应用设计与制作.北京:清华大学出版社, 2012.
[4]彭为等.单片机典型系统设计实例精讲. 北京:电子工业出版社,2007
[7]皮大能等. 单片机毕业设计指导书. 北京:北京理工大学出版社,2010