出租车计费器毕业论文
课程设计任务书学生姓名: xxx 专业: 信息处理与自动化 xxx班级: 自动化 0901 题1. 2. 3.指导教师目: 基于单片机的出租车计价器的设计运用所学的单片机原理与接口技术知识和数字电路知识; 51 单片机应用开发系统一套; PC 机及相关应用软件。要求完成的主要任务:以目前生活中正在使用的出租车计价器为原型进行设计, 要求具有按时 间和里程综合计算车价的功能,能显示时间、里程、单价、总车价等相关信 息。 1. 完成出租车计价器的设计和调试。 2. 撰写课程设计说明书,说明书使用 A4 打印纸计算机打印,用 Protel 等 绘图软件绘制电子线路图纸。时间安排:第 1 周 下达课程设计任务书和日程安排,调研和查找资料,明确设计任务 要求; 第 2 周 完成方案论证、总体设计和硬件设计; 第 3 周 完成软件设计和程序的编写; 第 4 周 调试硬件系统和软件程序,完成整个系统的设计和调试; 第 5 周 结果分析整理、撰写课程设计报告,验收和答辩。摘要出租车计价器是乘客与司机双方的交易准则,它是出租车行业 发展的重要标志,是出租车中最重要的工具。它关系着交易双方的 利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘 客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应 用价值的。 而采用模拟电路和数字电路设计的计价器整体电路的 规模较大,用到的器件多,造成故障率高,难调试,对于模式的切 换需要用到机械开关,机械开关时间久了会造成接触不良,功能不 易实现。而采用单片机进行的设计,相对来说功能强大,用较少的 硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性 强,可以通过软件编程来完成更多的附加功能。针对计费模式的切 换,通过软件编程就可以轻易而举的实现。避免了机械开关带来的 不稳定因素。另外在本方案中那个使用了点阵的液晶,可以实现更 加友好的使用界面。数据信息一目了然,并且即使是成品也可以方 便的修改使用界面,更可根据不同的公司客户使用不同的局面。 关键词:出租车计价器 单片机 控制Abstract Taximeter is both passengers and drivers of the transaction criteria, it is the taxi industry an important symbol, a taxi is the most important tools. It relates to the interests of both transactions. Has a good performance regardless of the meter is a vast number of taxi drivers or passengers are very necessary. Therefore, the car meter is also very much a study of value. The use of analog circuits and digital circuit design of the meter as a whole circuit of a larger scale, using the device, a failure rate is high and difficult to debug, the pattern of switching need to use mechanical switches, mechanical switch will cause a long-time contacts Bad, functions not easy to achieve. SCM used for the design, a relatively powerful, with less hardware and appropriate software can easily coordinate with each other to achieve the design requirements, flexibility and strong, can be programmed by software to complete more of the additional Function. Pricing model for the switch, software programming and can easily cite the achievement. To avoid a mechanical switch the destabilizing factors. Also in this programme that the use of a dot-matrix LCD, can be more friendly to use interface. Data information at a glance, and even the finished product can also facilitate the use of interface changes, according to different customers 0using a different situation.Keywords: Taximeter89 C51 MCUcontrol目录1 绪论 .................................................................................................. 5 2 方案设计 .......................................................................................... 62.1 功能要求 ..................................................................................................................... 6 2.2 方案论证 ..................................................................................................................... 63 系统硬件的设计.............................................................................. 83.1 AT89S52 结构及其功能 ..................................................................................... 8 3.2 LM358 结构及其功能 ....................................................................................... 134 单元电路....................................................................................... 144.1 按键模块................................................................................................................. 14 4.2 显示模块................................................................................................................. 14 4.3 信号采集电路 ................................................................................................... 16 4.4 整体电路................................................................................................................. 175 系统软件的设计............................................................................ 195.1 初始化程序 ........................................................................................................... 19 5.2 主程序 ...................................................................................................................... 196 调试分析 ........................................................................................ 21 7 结论 ................................................................................................ 22 8 致谢 ................................................................................................ 23 参考文献 ............................................................................................ 23 附录 .................................................................................................... 241 绪论步入 21 世纪,出租车已经广泛地出现在我们周围。随着人们 生活水平的不断提高,出租车的使用频率也越来越高,出租车行业 也以高质量的服务给人们带来了出行的享受。 但是由于行业的特殊 性,出租车行业总存在着买纠纷,困扰着行业的发展。而在出租车 行业中解决这一矛盾的最好方法就是改良计价器, 用更加精良的计 价器来为乘客提供更加方便快捷的服务。 30 年前,我国出现了出租车,但是由于当时的经济水平,出 租车并没有普遍在我们生活中出现。随着改革开放的深入,出租车 行业的发展势头已十分突出。 如今出租车在我国的交通运输中承担 着重要的角色,出租车计价器是出租车上必不可少的重要仪器,它 是负责出租车营运收费的专用智能化仪表。随着城市旅游业的发 展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。 我们都知道,只要出租车开动,随着行驶里程的增加,就会 看到汽车前面的计价器里程数字显示的读数从零逐渐增大, 而当行 驶到某一值时(如 5KM)计费数字显示开始从起步价(如 10 元) 增加。当出租车到达某地需要在那里等候时,司机只要按一下“计 时”键,每等候一定时间,计费显示就增加一个该收的等候费用。 汽车继续行驶时,停止计算等候费,继续增加里程计费。到达目的 地,便可按显示的数字收费。 采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要 用到机械开关, 机械开关时间久了会造成接触不良, 功能不易实现。 为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬 件和适当的软件相互配合可以很容易的实现设计要求,且灵活性 强,可以通过软件编程来完成更多的附加功能。22.1 功能要求方案设计利用单片机的软件编写功能,实现以 5.0 元为起步价,根据所行 驶的距离进行计价,区分白天和晚上不同计价,以及采用数码管显示 里程数、起步价、单价、总价及时间。 2.2 方案论证 方案一:采用数字电路控制。其原理方框图如图 2-1 所示。采用传感 器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计 价,但是考虑到这种电路过于简单,性能不够稳定,故障率高,难调 试,而且电路不够实用。电源电路 及保护电路金额 显示单价 显示里程传感器移位寄存器电路图 2-1 数字电路方案方案二:采用单片机控制。利用单片机丰富的 IO 端口,及其控制的灵 活性,实现基本的里程计价功能,途中等待等不同功能。在整个项目 设计开发过程中,先根据控制系统要求设计整个电路的原理图,PCB 电路图绘制,软件编程,再通过仿真器对系统硬件和软件调试,最后 将调试成功的程序固化到单片机中本设计利用单片机丰富的 I/O 端 口,及其控制的灵活性实现基本的里程计价功能和价格调整,时钟显 示功能等等。 最后,通过比较以上两种方案,单片机方案有较大的活动空间,不 但能实现所要求的功能而且能在很大的程度上扩展功能灵活性较强, 还可以通过软件编程来完成更多的附加功能,而且还可以方便的对系 统进行升级,所以我们采用后一种方案。霍尔元件模/数转操作面板主控模块 (AT89C51)换模块(ADC0809)模拟传感器显示模块警告信号输出图 2-2 系统方框图3 系统硬件的设计3.1 AT89C51 结构及其功能 3.11 AT89C51 结构图 3-1 AT89S52 结构3.12 AT89C51 主要性能 与 MCS-51 单片机产品兼容、8K 字节在系统可编程 Flash 存储器、 1000 次擦写周期、 全静态操作:0Hz~33Hz、三级加密程序存储 器 、 个可编程 I/O 口线、 32 三个 16 位定时器/计数器八个中断源 、 全双工 UART 串行通道、 低功耗空闲和掉电模式、掉电后中断可 唤醒、看门狗定时器、双数据指针、掉电标识符。 3.13 功能特性描述 AT89C51 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非 易失性 存储器技术制造,与工业 80C51 产品指令和引脚完 全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于 常规编程器。在单 芯片上,拥有灵巧的 8 位 CPU 和在系统 可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提 供高灵活、超有效的解决 方案。 AT89S52 具有以下标准功能: 8k 字节 Flash, 字节 RAM, 256 32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位 定 时器/计数器,一个 6 向量 2 级中断结构,全双工串行口, 片内 晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻 辑操作,支 持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下, RAM 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下 一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程Flash AT89C52P0 口:P0 口是一个 8 位漏极开路的双向 I/O口。 作为输出口, 每位能驱动 8 个 TTL 逻辑电平。 P0 端口写“1” 对 时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/ 数据复用。在这种模式下, P0 具有内部上拉电阻。 在 flash 编程时,P0 口也用来接收指令字节;在程序校验时, 输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口 是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能 驱动 4 个 TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被 外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此 外 , P1.0 和 P1.2 分 别 作 定 时 器 / 计 数 器 2 的 外 部 计 数 输 入 (P1.0/T2)和时器/计数器 2 的触发输入(P1.1/T2EX),具体如 下表所示。 在 flash 编程和校验时,P1 口接收低 8 位地址字节。 引脚号第二功能 P1.0 T2(定时器/计数器 T2 的外部计数输入), 时钟输出 P1.1 T2EX(定时器/计数器 T2 的捕捉/重载触发信号和 方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为 输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电 流(IIL)。在访问外部程序存储器或用 16 位地址读取外部数据 存储器(例如执行 MOVX @DPTR)时,P2 口送出高八位地址。在这 种应用中, 口使用很强的内部上拉发送 1。 P2 在使用 8 位地址 (如 MOVX @RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容。 在 flash 编程和校验时,P2 口也接收高 8 位地址字节和一些 控制信号。 口: 口是一个具有内部上拉电阻的 8 位双向 I/O P3 P3 口, 输出缓冲器能驱动 4 个 TTL 逻辑电平。 P3 端口写“1” p2 对 时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为 输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电 流(IIL)。P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如 下表所示。 flash 编程和校验时, 口也接收一些控制信号。 端 在 P3 口引脚第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断 0) P3.3 INT1(外中断 1) P3.4 TO(定时/计数器 0) P3.5 T1(定时/计数器 1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通)此外,P3 口还接收一些用于 FLASH 闪存编程和程序校验的控 制信号。 RST——复位输入。当振荡器工作时,RST 引脚出现两个机器 周期以上高电平将是单片机复位。 ALE/PROG——当访 问外 部程 序 存储 器或 数据 存 储器 时, ALE (地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。一般情 况下,ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它 可对外输出时钟或用于定时目的。要注意的是:每当访问外部数 据存储器时将跳过一个 ALE 脉冲。 对 FLASH 存 储 器 编 程 期 间 , 该 引 脚 还 用 于 输 入 编 程 脉 冲 (PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元 的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机 执行外部程序时,应设置 ALE 禁止位无效。 PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选 通信号,当 AT89C51 由外部程序存储器取指令(或数据)时,每 个机器周期两次 PSEN 有效,即输出两个脉冲,在此期间,当访问 外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP——外部访问允许,欲使 CPU 仅访问外部程序存储器 (地址为 0000H-FFFFH),EA 端必须保持低电平(接地)。需注 意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 Vcc 端),CPU 则执行内部程序存储器 的指令。 FLASH 存储器编程时,该引脚加上+12V 的编程允许电源 Vpp,当 然这必须是该器件是使用 12V 编程电压 Vpp。 3.2 LM358 结构及其功能 3.21 LM358 结构图 3-2 LM358 结构3.22 LM358 功能特点 1.内部频率补偿 2.低输入偏流 3.低输入失调电压和失调电流 4.共模输入电压范围宽,包括接地 5.差模输入电压范围宽,等于电源电压范围 6.直流电压增益高(约 100dB) 7.单位增益频带宽(约 1MHz)8.电源电压范围宽:单电源(3—30V); 9.双电源(±1.5 一±15V) 10.低功耗电流,适合于电池供电 11.输出电压摆幅大(0 至 Vcc-1.5V)44.1 按键模块单元电路这个模块的作用是调试单价、起步价及时间的。其中模式 1 中 的转换键是转换单价、起步价及时间,模式 2 中的转换键是转换 时间的时与分。图如下。图 4-1 按键模块 4.2 显示模块 这个部分是用数码管显示显示里程、单价、起步价及时间。根据不同的要求和实践中的方便应用等结合,其中起步价和总价 钱在同一个数码管里显示,总价是在起步价上再根据单价往上面 加。如图 4-2 所示。图 4-2 显示模块4.3信号采集电路 该电路是用于车轮转过次数的信息收集, 通过车轮转过的次数来计算行驶路程。在此,我用的是秒脉冲信号代替霍尔传感器的信息 采集。如图 4-3 所示。图 4-3 信号采集信息4.4 整体电路 本设计以 AT89C51 单片机为核心,采用 LED 数码管实时显示实际 计得的价钱,以秒脉冲作为基本行程信息的采集工具,此系统硬件设 计简单, 主要通过软件编程, 实现工作状态的定义和等待情况的处理, 系统另外还留有 P1.2~P1.7 以及 P2.3~P2.7 口的全部资源,使得系统 具有一定的可升级性和可扩展性。图 4-4 系统电路图5 系统软件的设计5.1 初始化程序 系统上电时,初始化程序将 R1~R5 储存单元清 0. 5.2 主程序 主程序中通过循环在车轮计数中,车轮每转过 1 周调用计数子 程序对计数器加 1。通过计数器中的累加值,判断数值并调用显示。 通过显示器显示时间,路程,单价和总的金额。且计数子程序是通过对工作寄存器的循环累加实现的。 秒定时子程序通过 20 循环调用定时器的 50 毫秒定时实现,对 应调用相应子程序。 码管显示子程序通过动态扫描实现。 毫秒定时是通过软件延时来实现的。 系统初始化后,判断是否进行车轮计数, 若没有进行车轮计数则返回 初始化,若进行车轮计数,则由计数器加 1,然后判断计数器是否加 到 20,若不到 20,则由数码管显示,若到了 20 则由到 20 方式处理, 最后由数码管显示计算的价钱。开始初始化否 是否车轮计数是 计数器加 1是否计数到 20否不到 20 处理是 到 20 处理数码管显示图 5-1 主程序流程图6调试分析采用 KeilC51 编译器进行源程序编译及仿真调试如下图:且在常温下,实验室里面,起步价为 5 元的情况下,测得的若干 组数据用于与理论数据对比分析,如下图表所示:实测次数 时间(分) 里程(公里) 单价(元) 测试总价(元) 1 2 3 4 5 5 10 12 15 20 5 11.5 13 15 20 1.8 1.8 1.8 1.8 1.8 14.1 24.8 28.6 32.2 41.4理论总价(元) 14 25.7 28.4 32 41经分析上图所示的数据可以看到测试值于理论值之间的差距均 7结论经过这几个个月来不懈的努力与奋斗,我终于在老师的指导下完 成了我的毕业设计,虽然它还有诸多需要完善的地方,但是拿着这件 设计,我仍然有止不住的兴奋。高兴之余,我仍需深思: 这件作品虽能初步解决出租车计算价钱的问题,但它仍有它的局 限性,首先它不能自动调整黑天和白夜的单价转换,这个功能我需要 以后的设计中努力完善,另外,如果配上语音效果那就更方便了司机 和乘客,更加显的人性化和快捷化。 通过这次设计,我最大的收获就是自己的动手能力和独立解决问 题的能力得到了很大的提高。虽然遇到了不少困难,但当我通过查资 料和翻阅书籍的同时也学到了不少的知识,扩大了知识面,提高了知 识水平经过单元设计和系统设计巩固了以前所学的专业知识,从方案 形成到准备电路图, 到软件设计, 到联机调试„„每一个小小的步骤, 我都得到了很好的锻炼。我学会了怎样有效的收集整合资料;我学会 了怎样细心地检查电路; 我学会了怎样虚心地寻求帮助; 我学会了„„ 我也明白了,很多书本上的东西光靠趴在书本上学是学不到其中的精 髓的,我们必须亲自去试着实践了,亲自去经历失败了才能对它们真 正的掌握。理论必须联系实际,而实践试检验真理的唯一标准,我真 正的懂得了这句话的真谛。在我以后的工作和生活中,我从此可以汲 取很多经验,凡事都要自己去动下手,去实践一下,遇到困难,要有 耐心,有信心,有细心,有恒心,有虚心,只有这样,我才会在逆境 中不断前进。8致谢首先我要特别感谢我的指导老师,不管在选题阶段,还是在设计 阶段,在制作阶段,正是他给予我不断的指导与鼓励,我才能顺利地 完成我的毕业设计,他那种对待学生和蔼亲切,对待工作一丝不苟的 品质和精神值得我们每一个人学习。借此机会,向我的指导老师周老 师表示衷心的感谢。然后我要感谢我的同学,在软件设计和联机调试 过程遇到困难时,正是由于同学们的帮助我才能顺利的克服困难,我 毕业设计的完成离不开同学们的帮助。 最后通过这次设计不仅增强了自己的动脑能力和动手能力,也提 高了我的思考问题,分析问题,解决问题的能力,通过这次设计我也 看到了自己的不足,当然我也会努力提高自己,为将来的工作打好最 坚实的基础。参考文献[1]张友德.赵志英.涂时亮.单片微型机原理应用与实验 上海: 复旦大 学出版社 2005.12 全书 [2] 徐光翔.单片机原理接口及应用 南京大学出版社 [3] 张淑清等. 单片微型计算机接口技术及其应用 北京: 国防工业出 版社 [4] 王晓君等. MCS-51 及兼容单片机原理与选型 北京:电子工业出 版社 [5] http://www.baidu.com附录参考程序 #include ; P0=duanma[shuju[kkk-2]]; }}kkk++; if(kkk==10) {kkk=0;}} void time1()interrupt 3 { static unsigned char i=0,aa=0; uchar jj=0; TH1=(65535-5001)/256; TL1=(65535-5001)%256; i++; aa++;if(aa==100) {aa=0; P1_4=~P1_4; } if(i==200){i=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) shi=0; } } }}void init() {TMOD=0X11; TR1=1; ET1=1; TR0=1; ET0=1; PT1=1; PX0=1; PT0=0; IT0=1; EX0=1; EA=1;P2_3=1;P2_4=1; TH0= TL0=0XF0; TH1=(65535-5000)/256; TL1=(65535-5000)%256; danjia=18;} void main() { uint temp=0; init();while(1) { key(); shuju[1]=fen/10; shuju[0]=fen%10; shuju[3]=shi/10; shuju[2]=shi%10; //shuju[5]=miao/10; //shuju[4]=miao%10; shuju[6]=danjia/10; shuju[7]=danjia%10;shuju1[0]=licheng/1000; shuju1[1]=(licheng%1000)/100; shuju1[2]=(((licheng%1000)%100)/10); shuju1[3]=licheng%10; temp=licheng; if(temp>=10) { if(temp%10==0) jiner=(((licheng/10-1)*danjia))+qibujia;//整数里程数计费 else jiner=(((licheng/10)*danjia))+qibujia;//不足一公里算一公里计费 } else jiner=qibujia; //起步价 shuju1[4]=jiner/1000; shuju1[5]=(jiner%1000)/100; shuju1[6]=(((jiner%1000)%100)/10); shuju1[7]=jiner%10; P2_2=0;}}