基于51单片机出租车计价器设计.docx
- 文档编号:12122242
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:40
- 大小:445.70KB
基于51单片机出租车计价器设计.docx
《基于51单片机出租车计价器设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机出租车计价器设计.docx(40页珍藏版)》请在冰豆网上搜索。
基于51单片机出租车计价器设计
课程论文
题目:
基于51单片机出租车计价器设计
学生姓名:
郭恩赐
学生学号:
1214210110
系别:
机械与电气工程学院
专业:
自动化
年级:
12级(3)班
任课教师:
朱士永
机械与电气工程学院制
目录
1概述1
2系统总体方案设计2
2.1总体思路2
2.2系统方案论证2
3硬件设计4
3.1系统硬件结构框图4
3.2AT89C51简介4
3.3晶体振荡电路原理图6
3.4复位电路原理图6
3.5时钟电路原理图7
3.6测距单元7
3.7按键单元10
3.8LCD显示电路原理图10
4软件设计12
4.1系统主程序12
4.2数据处理子程序13
4.3键盘扫描子程序14
5仿真与调试15
5.1编译环境15
5.2仿真环境15
5.3仿真调试结果16
6设计总结17
参考文献18
附录1C程序代码19
基于51单片机出租车计价器设计
学生:
郭恩赐
指导教师:
朱士永
机械与电气工程学院自动化专业
1概述
由于科技的飞速发展,带动汽车行业快速发展,出租车日益普遍,而出租车上的计价器也不断发展,并且更加精确和智能化。
对我们日常生活也有帮助。
而使用单片机实现该系统,是深化单片机应用的良好途径。
我国在70年代开始出现出租车,但那时的计费系统大都是国外进口不但不够准确,价格还十分昂贵。
随着改革开放日益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。
出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打一发票和语音提示、按时间自主变动单价等功能。
随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。
本次设计的目的在于现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。
而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
本系统由单片机AT89C51和一些外围原件组成,具有操作简单,显示明了,功能强大的特点。
整个系统只有两个按键,一个“启动/停止”,一个“复位”;
使用128*64LCD显示屏,可以显示数字、字母和汉字等复杂符号显示更加人性化。
本系统除了里程统计和费用计算以外,还具有万年历功能。
万年历由时钟芯片DS1302实时提供时钟信号,再由单片机调用显示;
本系统涉及到的理论知识有:
AT89C51单片机知识、实时时钟芯片的工作原理及应用、出租车计费系统的原理和实现方法。
2,系统总体方案设计
本次设计是使用单片机技术来实现一个出租车的数字计价器,利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和单双程价格调整、时钟显示功能等等。
具有性能可靠,电路简单、成本低、扩展空间大等特点。
2.1总体思路
设计一款基于AT89C51单片机的出租车数字计价器,通过对传感器的检测,对数值进行处理和显示。
本设计所设计的出租车数字计价器的主要功能有:
金额输出、路程输出、数据复位、计时计价、空车显示等。
输出采用LCD12864液晶显示屏显示。
一、基本要求
(1)能显示里程,单位为公里,最后一位为小数位。
(2)能显示金额数,单位为元,最后一位为小数位。
(3)可设定单程价格和往返价格,单程价格为2元/公里,往返价格为1.5元/公里。
(4)起步公里数为3公里,价格为5元,若实际距离大于3公里,按规则3计算价格。
(5)按暂停键,计价器可暂停计价,按查询键,可显示总等待时间。
二、发挥部分
(1)增加了空车指示功能,当无客人时,按下功能切换按键,空车指示灯亮。
(2)增加实时时间显示,无论计价器工作或者空车,都能显示实时时间,便于时间提醒。
(3)增加信息储存功能。
可以储存等待时间,里程和金额。
2.2系统方案论证
本设计是由软件设计和硬件设计两部分组成的。
软件设计要进行程序的编写和软件仿真;硬件设计要设计电路和硬件仿真。
本系统的硬件设计主要包括单片机AT89C51、数据显示部件、U18霍尔传感器电路、里程计算及计价单元的设计。
在硬件设计过程中,充分利用各部件的功能,实现多功能的出租车计价器设计。
图1电路系统构成框图
主控芯片使用51系列AT89C51单片机,采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性Flash程序存储器。
它是一种高性能、低功耗的8位COMS微处理芯片,市场应用最多。
[8]
时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片DS1302。
采用DS1302作为主要计时芯片、可以做到计时准确。
更重要的是,DS1302可以在很小的电流的后备电源(2.5~5.5V电源,在2.5V时耗电小于300nA)下继续计时,并可编程选择多种充电电流对后备电源进行慢速充电,可以保证后备电源基本不耗电。
采用串行数据传输,与单片机硬件连接简单,如果使用时钟芯片DS12887,将采用并行数据传输,占用更多的硬件资源。
因此为节省单片机端口,时钟芯片采用DS1302。
本设计程序的采取C语言进行编写,使用KeiluVision4编译和Proteus7.8仿真软件进行仿真调试。
其中的里程计算和费用计算方案如下。
一、里程计算
(1)霍尔传感器对车轮进行信号检测,产生并输出脉冲信号到单片机;
(2)单片机对传感器输出的脉冲信号进行计数,并进行km计算:
每一个信号代表轮胎旋转一周,设轮胎的周长为2m;每km产生的信号数为500,里程显示为N×2m=2N(km)
二、费用计算
(1)出租车的起步费为5元,并且3km内不需额外计价;
(2)出租车行驶3km后,单程2元/km,双程1.5元/km。
(3)等待收费的标准为5分钟算一公里;
(4)暂停时计价器暂停计价,不收费用。
3硬件设计
3.1系统硬件结构框图
图2系统硬件结构图
3.2AT89C51单片机简介
AT89C51是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机AT89C51提供了高性价比的解决方案。
[10]
AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。
[9]其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
图3AT89C51单片机
P0口有二个功能:
1、外部扩展存储器时,当做数据/地址总线。
2、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:
其内部有上拉电阻。
P2口有两个功能:
1、扩展外部存储器时,当作地址总线使用。
2、做一般I/O口使用,其内部有上拉电阻。
P3口有两个功能:
除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。
[5]
设计中用到的单片机各管脚(图3-1)功能以及与其他模块连接介绍如下:
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口。
3.3晶体振荡电路原理图
本系统采用AT89C51作为主控芯片,加上一些必要的外围电路构成最小系统才能工作,如图4所示,晶体振荡电路主要为单片机提供时钟脉冲,振荡频率为12MHZ,晶体振荡电路主要由时钟晶体,和微调电容组成,接在单片机的XTAL1、XTAL2(19、18引脚)上。
[7]
图4晶体震荡电路原理图
3.4复位电路原理图
计算机在启动运行时都需要复位,复位是使处理器和内部其他部件出于一个确定的初始状态,从这个状态开始工作。
MCS-51单片机有一个复位引脚RST(9引脚),高电平有效。
在时钟电路工作以后,当外围电路使得RST端出现两个机器周期(24个时钟周期)以上的高电平时,系统内部复位。
单片机复位电路如图5所示,按下复位按钮,开始给电容充电,并使得RST端维持两周期以上的复位高电平,使得单片机成功复位。
图5复位电路原理图
3.5时钟电路原理图
时钟芯片采用DS1302,时钟芯片的复位线与单片机的P3.5相连,时钟线与P3.6相连,数据线与P3.7相连,DS1302的X1和X2接32.768KHZ晶体,VCC2接主电源,VCC1接备用电源,使单片机断电时,时钟芯片依然走时,时钟电路如图5所示。
图5时钟电路原理图
3.6测距单元
本次设计我们选取了霍尔传感器来进行里程测量。
霍尔器件是一种磁传感器。
用它们可以检测磁场及其变化,可在各种与磁场有关的场合中使用。
霍尔器件以霍尔效应为其工作基础。
霍尔器件具有许多优点,它们的结构牢固,体积小,重量轻,寿命长,安装方便,功耗小,频率高,耐震动,不怕灰尘、油污、水汽及盐雾等的污染或腐蚀。
霍尔器件分为:
霍尔元件和霍尔集成电路两大类,前者是一个简单的霍尔片,使用时常常需要将获得的霍尔电压进行放大。
后者将霍尔片和它的信号处理电路集成在同一个芯片上。
本次设计选取了霍尔集成电路来测量里程。
里程测量是通过将霍尔传感器的集成电路安装在车轮上方的铁板上,将磁铁安装在车轮上,旋转的车轮将磁铁对准集成电路时,霍尔传感器会输出一个脉冲信号,送到单片机,经过单片机的计算处理,将行驶的里程送到显示单元并显示出来。
其原理示意图如下:
图6传感器测距示意图
U18是一种利用霍尔效应做成的半导体集成电路器件,它被设计在交变磁场中运行,特别是能在低电源电压和长时间运行温度范围可达到125℃。
这种霍尔IC可用作各种类型的传感器(速度传感器、位移传感器、转速传感器等等),接触开关以及相类似的应用场合。
其工作电压比较宽(2.5~20V),可运行在较大的温度范围内(-20℃~125℃),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可达到1MHZ。
[8]
霍尔传感器的特性如图3-4所示,其中BOP为工作点“开”的磁感应强度,BRP为释放点“关”的磁感应强度。
当外加的磁感应强度超过动作点BOP时,传感器输出低电平,当磁感应强度降到动作点BOP以下时,传感器输出电平不变,一直要降到释放点BRP时,传感器才由低电平跃变为高电平。
BOP与BRP之间的滞后使开关动作更为可靠。
U18集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。
在输入端输入电压VCC,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。
当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。
这样两次电压变换,使霍尔开关完成了一次开关动作。
图7U18霍尔传感器和其输出特性
U18霍尔传感器有3个外接口,2个是电源的正负极接口,最后一个是脉冲信号输出口,只要将霍尔传感器的信号输出端接到单片机的端口上便可以实现距离检测。
其中,单片机的P3.2(INT0)引脚作为信号的输入端,采用外部中断0进行计数。
车轮每转一圈,霍尔传感器就产生一个脉冲信号,根据霍尔效应原理,当霍尔片处在磁场中时,霍尔传感器的输出端输出低电平。
当车轮转动一圈时小磁铁提供一个磁场,则霍尔传感器输出一次低电平完成一次数据采集,从而产生信号。
霍尔传感器检测并输出信号到单片机的INT0或INT1计算脉冲输入端,引起单片机的中断,对脉冲计数,当计数达到特定的次数时,里程就会增加,单片机对里程进行计算后,通过接口电路将计算好的结果传送到数码管并显示出来。
3.7按键单元
本设计的按键单元电路(如图8)仅有一个功能按键,也就是是否计价控制键,其功能是开启计价模式,并控制空车指示灯的亮灭。
图8按键单元
3.8显示单元
本次课程设计采用的是LCD12864液晶显示屏,其功能十分强大,液晶显示屏(LCD)用于数字型钟表和许多便携式计算机的一种显示器类型。
1、液晶和液晶显示
LCD显示使用了两片极化材料,在它们之间是液体水晶溶液。
电流通过该液体时会使水晶重新排列,以使光线无法透过它们。
因此,每个水晶就像百叶窗,既能允许光线穿过又能挡住光线。
液晶显示器(LCD)目前科技信息产品都朝着轻、薄、短、小的目标发展,在计算机周边中拥有悠久历史的显示器产品当然也不例外。
在便于携带与搬运为前题之下,传统的显示方式如CRT映像管显示器及LED显示板等等,皆受制于体积过大或耗电量甚巨等因素,无法达成使用者的实际需求。
而液晶显示技术的发展正好切合目前信息产品的潮流,无论是直角显示、低耗电量、体积小、还是零辐射点,都能让使用者享受最佳的视觉环境。
这种显示器件的最大特点是:
(1) 微功耗,每个显示字符只有几个毫安。
是所有显示器件中功耗最小的。
(2) 低压驱动,一般扭曲向列型(TN)器件阀值电压仅1.5-2V,可以直接与大规模集成电路直接匹配。
(3) 平板形结构,尺寸可以很大,也可以很小。
显示的有效面积相对来说也是比较大的。
显示图案的自由度也相当大
(4) 液晶显示器件属于被动型,不发光,靠调制外界光达到显示目的。
因此,在阳光下也能看的很清楚,既没有刺目感,也不会引起视觉疲劳,更没有射线辐射,伤害视力。
所以它是高信息量信息显示的理想器件。
(5)液晶显示器件虽然所需材料都有特殊、较高的要求,但是其结构简单,而且工艺非常适应现代化规模生产。
所以其生产成本不高。
正因为它具有这些特点,所以在一切小型、便携、数字、智能化仪表中具有最大竞争力;在大信息量、彩色化、微型及巨型显示领域,液晶显示器件也具有很大的潜力。
2、液晶显示器各种图形的显示原理
(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上得到一个完整汉字。
图9LCD显示单元
4软件设计
本系统的软件设计主要分为系统主程序、数据处理子程序、和键盘扫描子程序三个模块,下面对每一块进行介绍。
4.1系统主程序
本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用各个子程序的方法,使程序通俗易懂,我们设计了整体程序流程图。
在main函数编写开始,要进行初始化,包括对系统初始化和对硬件设备进行初始化,并使硬件处于就绪状态。
在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。
系统流程图如下图10。
图10主程序流程图
4.2数据处理子程序
每当霍尔传感器输出一个低电平信号就使单片机中断一次,在计数中断服务程序,里程和金额都相应变化,当然等待时间也换算成里程(当速度小于5km/h时5分钟想当于1公里)。
计算程序根据里程数分别进入不同的计算公式。
如果里程大于3公里,则执行公式:
金额=(里程-3)*单价+5;否则,执行公式:
总金额=起步价。
程序流程图如图11所示。
否
是
图11数据处理子程序
4.3键盘扫描子程序
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。
否
是
图12键盘扫描程序
5仿真与调试
5.1编译环境
本设计需要用KeiluVision4对C51程序进行编译,生成“.hex”文件,如图13:
图13keil编译环境
软件编写完成后就可以编译生成HEX文件,然后将HEX文件加载到Proteus仿真文件中的单片机中,即可进行软硬件仿真,利用Proteus仿真软件可方便的检验硬件和程序错误,降低开发成本,减少不必要劳动。
5.2仿真环境
“Proteus不仅能实现数字电路、模拟电路及数/模混合电路的设计与仿真,而且能为单片机应用系统提供方便的软、硬件设计和系统运行的仿真,Proteus将单片机仿真与电路仿真结合,以其完美的仿真功能,直接在基于电路原理图的虚拟原型上进行单片机程序的编写与调试,并进行功能验证。
”[1]在仿真过程中,用户可以直接用鼠标单击按键,开关,等动态外设模型,使单片机系统根据输入信号做出相应的响应,并将响应处理结果实时的在显示器上显示。
把单片机的程序嵌入到虚拟硬件中,整个过程与真实的软件、硬件、调试过程相似,从而实现其他仿真软件所不能实现的仿真效果。
图14Proteus元器件编辑环境
5.3仿真调试结果
图15开关闭合时
图16开关断开时
6设计总结
总结在本次设计中,我们采用AT89C51芯片为核心器件,设计出了简单的出租车计价器,能够实现显示时间、等待时间、金额和里程,按键控制,空车指示。
选题后,我们便开始复习单片机方面的知识,也查阅、搜索了很多相关资料,进行总体设计与具体设计,同时也学习仿真软件Proteus和编程软件KeiluVision4。
由于以前都采用汇编语言实现编程,对用C语言来实现单片机的编程不太习惯,花费了一些时间来熟悉C语言的编程。
在设计开始,要形成流程图,它可以使设计有一定的逻辑性与严密性,使得设计思路明确。
采用模块化的设计思想很重要,它方便编写、修改与调试,另外加上必要的注释,便于交流与理解。
这次课程设计设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。
通过自身的努力以及相关图书资料的帮助,逐渐熟悉了KeiluVision4、PROTEUS和C语言等软件的使用以及硬件焊接与检测过程中的一些小技巧。
本次设计我学习到不少单片机的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题。
所焊实物尚有许多不足,个别功能还不能很好的实现,主要原因是考虑问题不周全,电路设计经验少,实际动手能力不足。
恳请各位老师批评指正,以使我在以后的学习和实践中加以改
进和提高。
参考文献
[1]朱清慧.Proteus教程[M].清华大学出版社,2008
[2]周润景,等.单片机课程设计实例指导[M].北京航空航天大学出版社,2006
[3]李光飞,等.单片机原理与应用及C51程序设计[M].清华大学出版社,2005
[4]吴延海.微型计算机接口技术[M].重庆大学出版社,1997
[5]李建忠.单片机原理及应用[M].西安电子科技大学出版社,2002
[6]谢维成,杨加国.单片机原理与应用及C51程序设计[M].清华大学出版社,2014
[7]张毅刚.新编MCS-51单片机应用设计[M].哈尔滨工业大学出版社,2003
[8]8-bitMicrocontrollerWith4KBytesFlashAT89C51.ATMEL,2000
[9]8-bitMicrocontrollerWith8KBytesin-systemprogrambleFlashAT89C52.ATMEL,2001
[10]AtmelMicrocontrollerHandbook,2001
附录1C程序代码
#include
#include
#include"lcd12864.c"
#include"code.h"
#include"ds1302.c"
#include"display.c"
sbitP10=P1^0;
sbitP12=P1^2;
floatdistance_km,money;
voidtimer0isr(void)interrupt1using1
{
distance_km+=0.1;
if(distance_km<=3)money=5;
elsemoney=5+(distance_km-3)*1.5;
}
voidmain(void)
{
init_lcd();
clearscreen(0);
setline(0);
TMOD=0x06;
distance_km=0;
TH0=0xCE;
TL0=0xCE;
EA=1;
TR0=1;
Init_DS1302();
while
(1)
{
if(P10==0)
{
ET0=1;
P12=0;
displa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 出租车 计价器 设计