毕业设计(论文)-基于单片机的出租车计价器设计.doc_第1页
毕业设计(论文)-基于单片机的出租车计价器设计.doc_第2页
毕业设计(论文)-基于单片机的出租车计价器设计.doc_第3页
毕业设计(论文)-基于单片机的出租车计价器设计.doc_第4页
毕业设计(论文)-基于单片机的出租车计价器设计.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

镇江技师学院毕业设计说明书(毕业论文) 出 租 车 计 价 器 电 路 姓 名: 班 级: 电07高技3班 专 业:电子与信息技术应用 时 间: 指导老师: 常州信息职业技术学院摘 要随着城市改革开放的进一步深化,出租车行业迅速发展,出租车计价器的市场需求量也大大增加。从加强出租车行业管理及服务质量并且节约成本出发,本设计以at89c52 单片机为中心、附加a44e 霍尔传感器测距,实现对出租车计价统计,采用at24c02 实现在系统掉电的时候保存单价和系统时间等信息,输出采用8段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。关键词:出租车计价器 at89c52 单价调节 软硬件设计目录第一章 引言11.1 概述1第二章 总体方案设计32.1方案论证与比较32.2单片机系统总体设计42.3芯片简介52.3.1 at89c5252.3.2 at24c02112.3.3 74hc164122.3.4 ds130213第三章 硬件电路设计163.1 主程序/cpu模块163.2 电源部分设计173.3 路程测量部分173.4 数据显示部分193.5 时钟部分213.6 掉电存储单元at24c02的设计213.7 按键单元设计22第四章 系统软件设计234.1 主程序设计234.2 定时中断服务程序244.3 里程计数中断服务程序254.4 中途等待中断服务程序254.5 显示子程序服务程序264.6 系统调试27总结29致谢附录(硬件原理图)32参考文献3027第一章 引言1.1 概述凡坐过出租车的人都知道,只要汽车一开动,随着行驶里程的增加,就会看到汽车前面的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如5km)计费数字显示开始从起步价(如6元)增加。当出租车到达某地需要在那里等候时,司机只要按一下“计时”键,每等候一定时间,计费显示就增加一个该收的等候费用。汽车继续行驶时,停止计算等候费,继续增加里程计费。到达目的地,便可按显示的数字收费。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。16第二章 总体方案设计2.1方案论证与比较出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高,国内出租车计价器已经经历了4个阶段的发展。从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器。出租车计价器计费是否正确、出租车司机是否超速才是乘客最关心的问题,而计价器营运数据的管理是否方便才是出租车司机最关注的。方案一:采用数字电路控制。其原理方框图如图 2.1所示。采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价。 图2.1 数字电路方案考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,也不能根据天气调节计费标准,电路不够实用。整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。方案二:采用单片机控制。利用单片机丰富的 i/ o端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。其原理如图2.2所示。 图2.2单片机控制方案通过比较以上两种方案,单片机方案有较大的活动空间,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以采用后一种方案。在过去,出租车采用机械式的计价器,用齿轮比的方式来计算出租车所跑的里程数,并由里程数来换算车费;由于机械的齿轮体积比较大,计算不是很准确,而且容易磨损,所以选用用了传感器的方式,利用传感器接收车的跑动信息,从而计算里程数和车费,这样计价就会非常准确。完成此装置所需期间简单,成本也非常低,技术上也容易实现2.2单片机系统总体设计单片机采集并判断空车灯信号及路程检测传感器信号,当出租车启动时,单片机检测到霍尔传感器的脉冲信号并进行里程计算。当无乘客时,单片机调用实时时间芯片 ds1302程序和74hc164串口显示驱动程序,用led进行时钟显示;当空车灯掰下乘客上车时:通过ds1302获取时间信息分辨白天/晚上,然后调用at24c02程序获取白天/晚上的单价及起始价,便开始计价并显示时间、里程和金额等信息;当空车灯打上乘客下车时:等待出租车再次启动后单次金额与里程等信息清零复位,就此完成一次计价。图2.3 总体设计框图2.3芯片简介本设计采用了4个芯片,分别为at89c52、at24c02、74hc164、ds1302。2.3.1 at89c52图2.4 单片机引脚图at89c52有40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,at89c52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。p0口:p0口是一组8 位漏极开路型双向i/o口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个ttl逻辑门电路,对端口p0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在flash 编程时,p0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。p1口:p1是一个带内部上拉电阻的8位双向i/o口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。与at89c51不同之处是,p1.0 和p1.1 还可分别作为定时/计数器2 的外部计数输入(p1.0/t2)和输入(p1.1/t2ex),flash 编程和程序校验期间,p1接收低8 位地址。p2口:p2 是一个带有内部上拉电阻的8位双向i/o口,p2的输出缓冲级可驱动(吸收或输出电流)4 个ttl逻辑门电路。对端口p2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。flash 编程或校验时,p2亦接收高位地址和一些控制信号。p3口:p3口是一组带有内部上拉电阻的8位双向i/o口。p3口输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对p3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的p3口将用上拉电阻。p3口除了作为一般的i/o口线外,更重要的用途是它的第二功能p3口还接收一些用于flash 闪速存储器编程和程序校验的控制信号。rst:复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位。ale/prog:当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ale 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。对flash 存储器编程期间,该引脚还用于输入编程脉冲(prog)。movx和movc指令才能将ale激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale禁止位无效。psen:程序储存允许(psen)输出是外部程序存储器的读选通信号,当at89c52 由外部程序存储器取指令(或数据)时,每个机器周期两次psen有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次psen信号。ea/vpp:外部访问允许。欲使cpu仅访问外部程序存储器(地址为0000hffffh),ea端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态。xtal1:振荡器反相放大器的及内部时钟发生器的输入端。xtal2:振荡器反相放大器的输出端。特殊功能寄存器:在at89c52片内存储器中,80h-ffh共128个单元为特殊功能寄存器(sfe)。2.3.2 at24c02at24c02是由atmel公司提供的,i2c总线串行eeprom,其容量为1kb,工作电压在1.8v5.5v之间,生产工艺是cmos工艺,其引脚如图2.5所示。图2.5 芯片引脚图各引脚功能如下:a2a0:这3个引脚是器件地址选择引脚。将这3个引脚配置成不同的编码值,在同一串行总线上最多可扩充8片同一容量或不同容量的24系列串行eeprom芯片。sda:串行数据输入输出口,是一个双向的漏极开路结构的引脚,容量扩展时可以将多片24系列的sda引脚直接相连。 scl:串行移位时钟控制端。写入时上升沿起作用,读出时下降沿起作用。wp:硬件写保护控制引脚。当其为低电平时,正常写操作,高电平时,对eeprom部分存储区域提供硬件写保护功能,即对被保护区域只能读不能写。vss:接地。vcc:接+5v电压。2.3.3 74hc164图2.6 74hc164引脚图74hct16是高速硅门cmos器件,与低功耗肖特基型ttl(lsttl)器件的引脚兼容。74hc164、74hct164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(dsa 或 dsb)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟 (cp)每次由低变高时,数据右移一位,输入到q0,q0是两个数据输入端(dsa 和 dsb)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位(mr)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。引脚说明如表2.1表2.1 引脚功能表符号引脚说明dsa1数据输入dsb1数据输入q0q336输出gnd7地 (0 v)cp8时钟输入(低电平到高电平边沿触发)/m/r9中央复位输入(低电平有效)q4q71013输出vcc14正电源2.3.4 ds1302ds1302的引脚排列,其中vcc1为后备电源,vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。ds1302由vcc1或vcc2两者中的较大者供电。当vcc2大于vcc10.2v时,vcc2给ds1302供电。当vcc2小于vcc1时,ds1302由vcc1供电。x1和x2是振荡源,外接32.768khz晶振。rst是复位/片选线,通过把rst输入驱动置高电平来启动所有的数据传送。rst输入有两种功能:首先,rst接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,rst提供终止单字节或多字节数据的传送手段。当rst为高电平时,所有的数据传送被初始化,允许对ds1302进行操作。如果在传送过程中rst置为低电平,则会终止此次数据传送,i/o引脚变为高阻态。上电运行时,在vcc2.5v之前,rst必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。i/o为串行数据输入输出端(双向)。sclk始终是输入端。如图2.7为ds1302的引脚功能图。图 2.7 ds1302 引脚功能图ds1302控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入ds1302中,位6如果为0,则表示存取时钟数据,为1表示存取ram数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 在控制指令字输入后的下一个sclk时钟的上升沿时,数据被写入ds1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个sclk脉冲的下降沿读出ds1302的数据,读出数据时从低位0位到高位7。 此外,ds1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与ram相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。ds1302与ram相关的寄存器分为两类:一类是单个ram单元,共31个,每个单元组态为一个8位的字节,其命令控制字为c0hfdh,其中奇数为读操作,偶数为写操作;另一类为突发方式下的ram寄存器,此方式下可一次性读写所有的ram的31个字节,命令控制字为feh(写)、ffh(读)。 第三章 硬件电路设计3.1 主程序/cpu模块图3.1 at89c52模块该模块主要包括系统初始化、里程的识别和费率的计算及各种功能模块的的组织和管理等。主程序模块在系统中起着重要的作用。at89c52是一个低电压,高性能cmos 8位单片机,片内含8k bytes的可反复擦写的flash只读程序存储器和256 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器和flash存储单元,功能强大的at89c52单片机可为您提供许多较复杂系统控制应用场合。at89c52有40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,at89c52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。9主要功能特性:(1)兼容mcs51指令系统,8k可反复擦写(1000次)flash rom;(2)32个双向i/o口,256x8bit内部ram;(3)3个16位可编程定时/计数器中断,时钟频率0-24mhz;(4)2个串行中断,可编程uart串行通道; (5)2个外部中断源,共6个中断源;(6)2个读写中断口,3级加密位;(7)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能 。3.2 电源部分设计由于计价器的工作环境比较差,它要求有抗振动、抗高低温、抗潮湿、抗电磁干扰等能力,特别是电源方面的干扰,如出租车启动时,发动机打火、电瓶充电等造成输入计价器的+12v电源不稳定。因此采用+12v电瓶电源经过滤波和电源稳压管理芯片 78l05后得到+ 5 v的稳定电压输出,保证整个系统能够正常工作。电路如图3.2所示。图3.2 电源电路3.3 路程测量部分里程计算是通过安装在车轮上的霍尔传感器a44e检测到的信号,送到单片机,经处理计算,送给显示单元的。其原理如图 3.3所示。 图 3.3a44e传感器工作原理图在霍尔电势发生器的两端加上电压vcc后,根据霍耳效应原理,当霍耳片处在磁场中时,霍尔传感器的输出端输出低电平。当车轮转动一圈时小磁铁提供一个磁场,则霍尔传感器输出一次低电平完成一次数据采集。车轮每转一圈,霍尔开关就检测并输出信号,引起单片机的中断,对脉计数。通过计算将脉冲增加体现在金额和里程上。由于a44e属于开关型的霍尔器件,其工作电压范围比较宽(4.518v),其输出的信号符合ttl电平标准,可以直接接到单片机的i/o端口上,而且其最高检测频率可达到1mhz。汽车联轴器按圆周间隔嵌入磁钢,用霍尔传感器集成芯片a44e检测并输出脉冲,霍尔传感器集成芯片a44e有信号转换、电压放大、整形输出等功能。出租车中需要一个能准确获得车轮转动即路程计量信号的装置,以得到标准的脉冲信号送入单片机的p3.3引脚,利用单片机的t1的计数功能完成1000次的计数后产生一中断来完成路程的测量。(设车轮周长为1m,则霍尔传感器每产生1000个脉冲便表示车已行程1km。我们选择了p3.3口作为信号的输入端,内部采用外部中断1,车轮每转一圈(我们设车轮的周长是1米),霍尔开关就检测并输出信号,引起单片机的中断,对脉计数,当计数达到1000次时,也就是1公里,单片机就控制将金额自动的增加,其计算公式:当前单价公里数=金额。费用计算功能:费用计算包括三部分:起步费、行使费和中途等待费用。(1) 起步费用白天6元晚上7元;(2) 行使费用1.6/公里;(3) 中途等待费用0.1/分钟。3.4 数据显示部分由于设计要求有单价(2位)、总金额(4位)显示输出,加上我们另外扩展了时钟显示(包含时分秒的显示),采用 lcd液晶段码显示,在距离屏幕1米之外就无法看清数据,不能满足要求,而且在白天其对比度也不能够满足要求,因此我们采用6位led数码管来显示。本设计的数据显示采用74hc164来驱动(共阳)的方法。74hc164是比较典型的移位寄存器,该移位寄存器有一个数据输入端口、一个时钟信号端口和八个输出端口。这种方法只需要2个i/o端口,而且在锁存器件这2个端口还可以干别的事情。数码管显示是各种仪器设备所不可缺少得重要组成部分,按照显示方法得不同可分为静态显示和动态显示两种这里我们所设计得电路显示属于静态显示,静态数码管显示的优点在于编写程序相对比较简单一旦将欲显示的数据发送出去只要当前显示的数据没有变化就无须理睬它。图3.9 显示电路原理图从单片机串口输出的信号先送到左边的移位寄存器(74hc164),由于移位脉冲的作用,使数据向右移,达到显示的目的。 移位寄存器74hc164还兼作数码管的驱动,插头1(header1)接数据和脉冲输出端,插头2(header2)接电源。3.5 时钟部分计价器在出租车空车行驶时需要显示实时时钟,因为它的时钟是作为白天/晚上单价自动转换的一个基准,而且计价器的时钟显示能为司机和乘客提供方便,所以选择一个好的时钟芯片对计价器很重要。ds1302是美国dallas公司推出的一种高性能、低功耗的实时时钟芯片,采用spi三线接口与cpu进行同步通信;时钟可提供秒、分、时、日、星期、月和年;通过设ds1302的控制/状态寄存器选择日历,时钟方式经过初始校准后即可工作使用;工作电压宽达2.55.5v,采用双电源供电(主电源和备用电源),并设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力,在没有主电源的情况下启用备用电源能保存时间信息及数据。如图3.10所示。图3.10 时钟显示电路原理图3.6 掉电存储单元at24c02的设计掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。at24c02是atmel公司的2kb字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5v,额定电流为1ma,芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的dip封装,使用方便。其电路如图3.11所示。图3.11掉电存储电路由于at24c02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线scl(移位脉冲)和sda(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。3.7 按键单元设计图3.12 按键电路电路共采用了五个按键:s1、s2、s3、s4,其功能分别是:s1查询按键,s2功能设定/确认按键,s3/白天晚上切换按键,s4/中途等待开关。第四章 系统软件设计4.1 主程序设计在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/ 清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。当空车信号灯打下时,表示有乘客上车,并启动计价,将根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。若已超过,则根据里程值、每公里的单价和起价来计算出当前的累计价格,并将结果存于价格寄存器中,然后将当前时间和累计价格送到led 显示电路显示出来。当中途塞车(等待或低速行驶)时,在一定时间内没有检测到传感器的脉冲信号就启动t0定时器进行计时,当超过规定的等待时间后,计价器就根据等待价格进行当前金额的累加与显示,并在计价器上显示等待时间;当到达目的地的时候,由于霍尔开关没有送来脉冲信号,就停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行初始化过程。司机把空车灯打上,就停止计价,显示当前所应该付的金额和对应的单价,等乘客下车后,启动出租车,计价器检测到传感器的脉冲信号,系统自动对显示清零,并重新进行初始化过程,完成1次计价。16图4.1 主程序流程图计价1:起步价+里程每公里价格(1.6元)计价2:起步价+里程1.6元+等待时间等待价格(0.1元/分钟) 计价3;起步价 计价4:起步价+等待时间等待价格(0.1元/分钟) 4.2 定时中断服务程序在定时中断服务程序中,每10ms产生一次中断,当产生100次中断的时候,也就到了一秒,按秒累积60次后恰好为1min,这样就可完成定时1min的功能。4.3 里程计数中断服务程序每当霍尔传感器输出一个低电平信号就使单片机中断一次,里程计数器t1对里程脉冲计满1000次时,就完成当前行驶里程数的累加操作,并将结果存入里程寄存器中。其程序流程如图4.2 所示.图4.2 里程计数流程图4.4 中途等待中断服务程序当中途等待按键s4按下时,就启动t0开始计时,每当计时到达1min,等待时间累加器值就自加,并将结果存入时间寄存器中。当中途等待结束的时候,即再按一下s4键就自动切换到正常的计价。其程序流程如图4.3所示。图4.3 中途等待流程图4.5 显示子程序服务程序显示是检验程序结果最直接也是最简单的硬件设计,采用移位寄存器驱动6位led方式,实行静态显示。静态显示的优点在于,编写程序相对比较简单,一旦将欲显示的数据发送出去,只要当前显示的数据没有变化,就无须理睬它。十进制数显也采用软件方式将bcd码转换成七段码。转换过程:显示的bcd码通过计算、查表、求出存放显示段码单元地址,从该地址单位中取出送显示端口输出。17图4.4 静态显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论