出租车计费器的设计与发展毕业论文 - 图文

更新时间:2024-03-24 22:26:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

密级:

NANCHANG UNIVERSITY GONGQING COLLEGE

毕业论文

THESIS OF BACHELOR (2011—2015年)

中文题目: 出租车计费器的设计与发展

英文题目: Design and development of the taxi fare

学 院: 系 别: 专业班级: 学生姓名: 学 号: 指导教师:

register 南昌大学共青学院

信息工程系 11级电子信息工程1班

二 ○ 一 五 年 三 月

南昌大学共青学院毕业设计(论文) 学士学位论文原创性声明 学士学位论文原创性声明

本人在此声明:所写论文为在指导老师的指导中单独思考并且独立创作所编写的。除文中其他加以标注援用的知识结论以外,此论文不包括其余的单独或者团体曾经发表或者撰写的成果作品。其中个人和集体研究对本论文的重要贡献,已在论文中明确书写。本人对此产生的法律后果,有责任负责,并由本人承担。

本人签名: 日期:

南昌大学共青学院毕业设计(论文) 摘要

摘 要

由于当今社会科学技术的飞速发展,使汽车工业的快速发展,城市里出租车市场正在增加,但出租车计价器也在不断的发展,而且更加精确化和功能的多样化。这些改变让我们的日常生活习惯有了很大的改善。我们利用单片机的操作来完成该系统,是强化单片机操纵的优秀方法。

出租车计价器是一个键盘电路,时钟电路,复位电路,STC89C52芯片用于出租车计费器的设计。单片机的最初始操纵是复位电路,并且在平常的初始操纵下,为了解决一些问题,我们能够重新开始经过复位电路。

通过按钮可以由自行设置起始价格,调整后的里程,等候时间收费。通过按键模拟出租车开始工作,等待时间所产生的费用。在1602液晶上显示里程数、等待时间,在结束计费时显示白天与晚上的总费用。

关键字: STC89C52;1602液晶;出租车计费器

I

南昌大学共青学院毕业设计(论文) ABSTRACT ABSTRACT

Due to the rapid development of science and technology in today's society, so that the rapid development of automobile industry, the city taxi market is increasing, but the taxi meter is constantly developing, but more precise and functional diversification. These changes make our daily habits have greatly improved. We use the MCU to complete the operation of the system, is a great way to strengthen the microcontroller manipulation.

The taxi meter contains keyboard circuit, clock circuit, reset circuit, is chosen to design a microcontroller chip STC89C52 taxi meter. MCU is reset circuit to manipulate the most original, and in the usual initial manipulated, in order to solve some problems, we can begin again after a reset circuit. 12MHz crystal clock circuit uses, and to as the system clock source, has a very high accuracy rate.

You can set your own buttons by starting price, mileage-adjusted waiting time charges. Taxi to work through the key analog, waiting time costs arising. LCD display mileage in 1602, the waiting time during the day and the total cost of the evening show at the end of the billing.

Keyword: STC89C52;1602 LCD;Taxi devices

II

南昌大学共青学院毕业设计(论文) 目录

目录

摘 要 ............................................................................................................................ II ABSTRACT .................................................................................................................. II 第一章 前 言 ....................................................................................................... 1

1.1 课题背景 ..................................................................................................... 1 1.2 课题研究的目的和意义 ............................................................................. 1 1.3出租车计价器设计的任务与要求 .............................................................. 2

第二章 出租车计价器的方案设计 ...................................................................... 3

2.1方案论证与比较 .......................................................................................... 3 2.2方案选择 ...................................................................................................... 4

第三章 出租车计价器的硬件系统设计 ............................................................. 5

3.1出租车计价器的硬件系统框架 .................................................................. 5 3.2 STC89C52单片机及其引脚说明 ............................................................ 5 3.3 AT24C02引脚图及其引脚功能 ............................................................... 8 3.4 AT24C02 掉电存储单元的设计 .............................................................. 9 3.5 数据显示单元设计 ..................................................................................... 9 3.6 键盘调整单元设计 ................................................................................... 10

第四章 出租车计价器的软件系统设计 ........................................................... 12

4.1 软件设计总流程 ....................................................................................... 12 4.2 按键模块设计 ........................................................................................... 12 4.3显示模块的设计 ........................................................................................ 13 4.4单片机最小系统 ........................................................................................ 14

第五章 出租车计价器的仿真调试 .................................................................... 15

5.1仿真软件介绍 .............................................................................................. 15 5.2仿真结果分析 .............................................................................................. 15

第六章 实物的制作与调试 .................................................................................. 19

6.1电路的安装过程 .......................................................................................... 19 6.2电路的调试过程 .......................................................................................... 19 6.3电路出现的问题及解决方法 ...................................................................... 19

结 束 语 ..................................................................................................................... 21 致谢 ............................................................................................................................... 22 参考文献 ..................................................................................................................... 23

III

南昌大学共青学院毕业设计(论文) 目录 附录A:程序 ............................................................................................................. 24 附录B:出租车计价器的系统原理图 .......................... 33 附录C:实物图片 ........................................... 2 附录D:仿真图片 ...................................................................................................... 2

IV

南昌大学共青学院毕业设计(论文) 第1章 前言 第一章 前 言

1.1 课题背景

随着我国经济发展及道路建设,交通也越来越方便,特别是出租,以迅速,方便的特点盛行在各个城市,成为城市交通出行的重要工具,在现在城市中,出租车以及成为了人们生活中必不可少的一部分,人们的出行也更加需要出租车了,因此作为出租车结算价格的重要的部分,出租车计价器也就在不断的发展了。从90年代初开始迅猛发展出租车已进入繁荣期,随着当今社会的城市化和人民生活水平的提高,出租车的便利性也越来越能体现出来。因此出租车计价器也就产生了。

1.2 课题研究的目的和意义

出租车计价器是顾客与司机间的交易桥梁,计价器的发展是出租车的重要体现,是出租车工作的最重要工具。仪表具有良好的性能,对出租车司机还是乘客,都是非常必要的。于是,出租车计价器的设计与发展同样有着很高的利用及实践必要。模式开关需要应用到机械开关,而长时间使用机械驱动时,它可能会导致发生接触不良的情况,很多作用有可能会实现不了,于是咱们选用了单片机来完成该设计的计划,这比较原来的来说功效更加强大,我们使用比较少的硬件零件与得当的软件彼此利用能够达成该功能设计的需要,而且操作性比原来要强,还可以通过软件的编程来实现更多的其他附加功能。针对模式切换,我们可以通过软件编程就可以较为简单的实现,从而避免了机械开关带来的不能确定的错误。随着生活水平的提高,人们不再满足于衣食住行享受便捷和舒适的旅行,越来越受到人们的重视。因此,出租车计价器是慢慢地发展。

本次设计中主要通过编写程序来做成四个功能模块来组成计费的系统:第一是我们的控制的模块,以及译码用于显示的模块,以及分频的模块,最后还需要计量的模块,我们对程序进行了调试,以此来模拟了出租车的等待时间,开始工作,暂停工作期间,距离的计算和等待时间计算价格的功能。我们可以直观的看到出租车在白天和夜间需要的价格,白天及夜间的等待时间,并且可以自己设置这些价格,这就让计费变得更为简单,对人们的生活也就越来越方便,本次设计通过显示模块,显示出白天及晚上的价格,让乘客也能清晰的看到自己所花费的

1

南昌大学共青学院毕业设计(论文) 第1章 前言 费用,这就显示了一种公平的交易,本次设计并且可以将各功能模块产生的结果通过动态译码来扫描模块输出到显示模块来进行显示。它是通过显示模块可以显示出租车的行驶距离,以及出租车等候时间和等候的出租车费、行驶距离期间计算的价格。

1.3出租车计价器设计的任务与要求

1、起步费用设定。 2、行车里程计费。 3、等待计费。

4、根据白天和黑夜进行不同的计价收费。 主要技术指标:

1、显示:可以显示单价、里程、总金额。

2、停车计费功能:中途因故停车按中途等待的单价收费。 3、自动分时计费功能:白天和夜间应能自动更换单价。 4、扩展功能:可增加时钟功能。 5、 里程误差小于2%。

2

南昌大学共青学院毕业设计(论文) 第2章 出租车计价器的方案设计 第二章 出租车计价器的方案设计

2.1 方案论证与比较

方案一:我们使用数字电子技术,需要的多谐振荡器可以选用定时器芯片来组成,需要的时钟脉冲信号由外围的晶体振荡电路来生成,最后可以利用译码的电路来对数据进行译码操作,最后需要解码电路来对产生的数据进行解码,把经过解码的数据来发送到数码管,使内容能够得以显现,此方案的系统框架,如图2.1所示:

时 钟 脉 冲 等待信号 计时 计费 译码 公里脉冲 数码管显示 方案二:我们采用EDA技术,根据分层理论, 我们可以知道该设计可分为分

频模块,控制模块等,扫描显示的模块,以及需要的译码模块,该方案的框架如图2.2所示:

时钟信号 等待信号 公里脉冲 计费/复位 分频器 计费 译码 计费脉冲 控制器 3

显示 图2.1 基于定时芯片的计价器

计时 计程 图2.2 基于EDA技术的计价器

方案三:我们可以利用单片机技术,以单片机作为主控制器,可以使用1602个字符型液晶作为显示电路,使用外部晶体可以作为时钟脉冲,从而使经过按钮可以更为容易的设置,如下是此计划的系统流程图,如图2.3所示:

南昌大学共青学院毕业设计(论文) 第2章 出租车计价器的方案设计

电源电路 按键电路 复位电路 单 片 机 语音播报 掉电存储电路 液晶显示 里程传感器 时钟电路 图2.3 基于单片机控制的计价器

2.2方案选择

经过这几个方案的对比来考虑,方案三的设计更为符合日常化,性价比较高,使用更为方便,更加适合本次出租车计价器的设计思路,因此采用方案三。

4

南昌大学共青学院毕业设计(论文) 第3章 出租车计价器的硬件系统设计 第三章 出租车计价器的硬件系统设计

3.1出租车计价器的硬件系统框架

该系统的设计电路图如图3.1所示。STC89C52单片机实时访问关键的按键信息,然后进行相应的控制,LCD1602显示,LED灯,AT24C02来做出相应的动作。

键盘控制模块 STC89C52 主控芯片 LCD1602显示模块 AT24C02存储 LED灯指示灯 图3.1 系统设计框架

3.2 STC89C52单片机及其引脚说明

本次出租车设计选用的是STC89C52芯片,此芯片拥有着8KBROM存储大小,并且选用的是Flash ROM,其拥有着8KB ROM的内存存储大小,这相对于本次的设计而言程序的存储空间足够使用。并且它结合CMOS的较低功耗以及高密度技术,高速技术这些特点,并且它是基于标准的指令操作系统以及拥有MCS-51单片机的系统布局, STC89C51的升级版单片机就是它,并且拥有了时钟的输出与向下向上计数器这一类更多的功效,特别适用近似马达操作设置的场合。除此之外,89C52芯片还能够在低功耗的模式,我们可以选择空闲或者掉电模式通过两种软件。在空隙形式停止RAM以及CPU定时器、依旧可以保持它作用的是中断系统及串行口。如果是在掉电的形式下,可以让时钟振荡暂停期间,可以保留RAM数据,并且可以暂停芯片里另外的少许功效。STC89C52芯片的40个引脚配置如图3.2所示。

5

南昌大学共青学院毕业设计(论文) 第3章 出租车计价器的硬件系统设计

图3.2 STC89C52引脚配置

40引脚的AT89S51芯片作用分别为: VCC 电源电压。 GND 接地。

RST 为复位输入。当RST为两个周期而且变成高电平期间,将会复位。 XTAL1 即为在内部时钟电路的输入,反向振荡放大器的输入。 XTAL2 为反向振荡放大器的输出。

P0口 这是一组8位的双向I/O口为漏极开路型的。就是数据总线或者地址复用口。它在作输出口使用期间,当端口为“1”,即可为高阻抗的输入端。当在查看程序存储器又或者外部数据的存储器期间,在访问期间就会让内部上拉的电阻生效。

P1口 是一个有着8位双向口,并且带有上拉电阻,当P1输出缓冲级期间,则可以驱动4个TTL逻辑门电路。当“1”写入端口,可以使端口变为高电平经过上拉的电阻,这个时候就可以做输入口。在程序验证和Flash编程过程中,可以得到的低8位的地址。P1口的其他引脚、端口,还有功能如表3.1所示。

6

南昌大学共青学院毕业设计(论文) 第3章 出租车计价器的硬件系统设计

表3.1 P1口特殊功能

P1口引脚 P1.5 P1.6 P1.7 特殊功能 MOSI(ISP编程) MOSI(ISP编程) SCK(ISP编程) P2口 是一个8位双向口,它的内部有着上拉电阻,当端口为“1”的时候,可以将端口拉至高电平经过内部的上拉电阻,这个时候可以当作输入口。如果作为输入口去使用,那么它存在着上拉电阻,当某个引脚被其他信号降低期间,就会输出电流IIL。当访问外部数据及程序存储器期间,则该口就可以输出高8位的内容。当访问其它数据存储器,那么本次访问的时候都不会改动该口的线上内容。当程序检验及编程的期间,P2也将获得的低8位的地址数据。

P3口 为一个8位双向I/O口带有内部的上拉电阻。对P3口写“1”期间,即可以作为输入来使用,因为内部上拉的电阻电平被拉至了高位。在做输入端口使用期间。除了普通的P3口的I/O口线,更突出的是二次函数的作用,如表3.2所示:

表3.2 P3口特殊功能

P3口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 特殊功能 RXD(串行输入端口) TXD(串行输出端口) INT0(外部中断0) INT1(外部中断1) T0(定时器0外部输入) T1(定时器1外部输入) (外部数据存储器写选通) (外部数据存储器读选通) PSEN当AT89S51芯片数据在被外部存储器读取期间,就会有两个PSEN为有效的在一个机器周期的时候,这是两个脉冲输出。

EA/VPP 为外部访问允许。当CPU访问外部程序存储器的期间,EA必须保持低,要值得考虑的是:当加密LB1修改程序,那么在复位期间,EA端就将会被锁存。在flash编程期间,该引脚将增加+12V编程电压。单片机最小系统如图3.3所示:

7

GND 接地端

VCC 电源端

不能够写高地址;

A2~A0 地址引脚;

SDA、SCL I2C总线接口;

3.3 AT24C02引脚图及其引脚功能

AT24C02芯片各引脚如图3.4所示。

AT24C02芯片有8个引脚,为DIP封装,其中:

图3.3 单片机最小系统

图3.4 AT24C02引脚图

WP 在WP引脚接入VDD,允许写任何地址,在VSS连通了这个引脚的时候,

南昌大学共青学院毕业设计(论文) 第3章 出租车计价器的硬件系统设计 8

南昌大学共青学院毕业设计(论文) 第3章 出租车计价器的硬件系统设计 3.4 AT24C02 掉电存储单元的设计

本次所设计的掉电存储功能单元主要的功能是在断电期间,会自动保存当前所设立的各种单价等信息。我们本次设计所采用了AT24C02芯片是掉电可清除储存芯片,为2KB芯片,这个芯片选用了单片机通信及两线串行的总线,它的最小电压可达到2.5V,其静态电流是10Ua(5.5V),芯片内所输入的各种需要的数据能够储存40年之久在电源没有供电的情况下,并且选用了8脚的DIP封装,使用起来方便。其电路如图3.5所示。

图3.5 掉电存储电路原理图

如图所示R10、R8是上拉电阻,它们的功能是降低静态功耗,我们利用了串口发送数据,因为地址线以及数据线是复用的,所以只有SDA线以及SCL线来与单片机进行数据传输。

当你设定一个价格,系统会自动调用存储过程,把价格信息的当前设置保存到芯片;在重新接上电源的时候,就将会自动的调用了存储器上面的程序,可以把存储器里面设置的各种里程及单价信息,读取到需要的单元中,为主程序提供使用。

3.5 数据显示单元设计

1602液晶也被称为1602字符的液晶显示器,液晶显示模块,用于显示数字,字母和其他符号。由许多5X11或5X7字符位构成,在每个需要显示的字符位都可以显示出一个需要的字符,在每一行都有着一些间隔,每个字符位之中同样也有间隔,所以就有了行间距以及字符之间间距的效果,所以不能很好地显现出图形。

当前市面上大部分的字符液晶都是基于HD44780的来做成的,原理都是一样,所以我们能够很简单地应用于市场绝大多数的字符型液晶,运用写在HD44780上面的各种程序控制。

1602采用标准的16脚接口,其中: 第1脚:GND为电源地

9

南昌大学共青学院毕业设计(论文) 第3章 出租车计价器的硬件系统设计 第2脚:VCC接5V电源正极

第3脚:为使对比最弱的是当连接到正电源,使对比度最高的是当接地电源,所以应当用10k电位器调整对比度,因此V0为对比度的调整端,。

第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:当电平为0的时候我们可以来写入,当电平为1的时候我们就可以来读取,因此RW的功能是作为读与写的信号线。

第6脚:EN(或E)是可以读取信息,当为高电平期间。 第7~14脚:D0到D7是8位的双向数据端口。

第15~16脚:16脚背光的时候为负极,15脚背光的时候为正极,以及背灯电源或者空脚。

显示电路如图3.6所示

图3.6 显示电路

3.6 键盘调整单元设计

出租车计价器需要调整价格的时候,单价的信息就需要修改了,需要使用键盘进行修改,不过由于调节信息不多,所以我们采用6个独立键盘就可以进行操作,这6个按键分别实现开始/结束,设置功能,里程增加,等待时间开始与结束,加减值等作用,在我们需要更改价格的时候,就可以点击设置键,通过操作加值键及减值键来设定我们需要的价格,通过点击开始结束键来使出租车计价器开始工作以及结束,通过点击等待开始结束键,来计算等待的时间,通过点击里程加键来使出租车通过的里程来增加,以此来计算价格,而且白天黑夜的价格也不相

10

南昌大学共青学院毕业设计(论文) 第3章 出租车计价器的硬件系统设计 同,如图3.7所示。

图3.7 按键模块

1、开始/结束计价:计价器开始工作,开始计价及结束控制 2、里程加0.1km: 按一次,出租车里程增加0.1km 3、等待开始/结束:等待时间开始计时及等待时间结束 4、设置键:进入设置模式,可调整单价等数据

5、加值键及减值键:设置模式,增加单价等数据,设置模式,减少单价等数据

通过按键模块可以控制本设计的各种价格,里程,等待时间的调整,以此来达到对本设计的各种操作的实现。

11

南昌大学共青学院毕业设计(论文) 第4章出租车计价器的软件系统设计 第四章 出租车计价器的软件系统设计

4.1 软件设计总流程

软件的主程序流程图如图4.1所示:因为LCD1602,AT24C02的读写数据和指令都是在头文件工作完成,所以在主程序只需要调用即就可以了。这样做能增加程序可读性、易操作性,易修改性。

初始化 开始

按键信息处理 读取按键信息 LCD1602显示信息 图4.1 主程序流程图 设计程序的一种理想的方式是把程序作为结构化的编程设计及操作。结构化程序设计与操作是对所使用到的控制结构这类的程序做适当限制,特别是对语句限制程序(或命令)的操作,就可以控制程序的简练度,争取程序的操作顺序和操作的流程保持为一致,让程序更为的通俗易懂,可以减少逻辑上错误及便于我们修改以及调试整个程序。

4.2 按键模块设计

本此设计共采用了一个开关和六个按键在电路设计中,按键包括开始/结束键、里程增加键、等待时间开始/结束键、设置键、增加键、减少键,开关控制电源的接入,六个按键连接在P32线P37口,表明他们可以独立的实现相应的功能。通过点击按键可以触发相应的功能,点击开始结束键使出租车计价器开始工作以及结束,点击里程加键可以使出租车所走的里程增加,通过点击等待开始结束键,

12

南昌大学共青学院毕业设计(论文) 第4章出租车计价器的软件系统设计 可以控制出租车等待时间的开始以及结束,白天及晚上的价格也不相同,可以通过设置键来调整这些价格,这样即可达到控制出租车计价器的功能作用。

4.3显示模块的设计

单片机控制系统中常用的数字显示(LED),液晶显示器(LCD)。这两种显示器的驱动电路较为简单,并且易于完成且价格低廉,可以显现数字,系统及字符的状况。本设计的出租车计价器需要显示的各种主要内容有运行的里程以及等待的时间,最后总价格等相关的信息,并且里程单价内容需要用户自己来设置,该设计所需要显示的内容类型不多,是由于这个设计需要的内容不得多,因此这使得使设计更为方便,通过显示模块,我们就可以很明显的看到各种价格情况以及里程,等待时间情况,这让与乘客公平的交易起到重要作用。

由以上的分析可知,我们可以使用液晶显示屏就能满足要求。因此本次设计使用LCD1602液晶,因此HD44780所写的控制程序就能够很方便地应用在市面上绝大部分字符型液晶。字符液晶控制原理和14针的LCD都一样,定义如下表3所示:

表4.1 字符型LCD的引脚定义

13

南昌大学共青学院毕业设计(论文) 第4章出租车计价器的软件系统设计 4.4单片机最小系统

我们在设计的微处理器的核心部位。我们通常使用的单片机控制。可以根据

是不是有能够适合的工作能力的单片机CPU、以及是不是含有中断源及定时器、并且是不是有所需求的I/0端口个数、片内是不是有需求的外接口等多方面的各种考虑,因此本设计采用AT89C51单片机,因为其具有电源电压的适应范围宽、并且抗干扰能力及驱动能力强、并且价格便宜这些特点,比较适用于本次设计的各种需求。单片机的最小系统模块就是控制模块,所以在本次设计中主要用于对按键信号的接受以及处理,控制液晶显示处理完之后的各种信息。

14

南昌大学共青学院毕业设计(论文) 第5章出租车计价器的仿真调试 第五章 出租车计价器的仿真调试

5.1仿真软件介绍

Proteus是目前社会流行的EDA仿真软件,可以设计原理图,基本上可以实现从产品的设计思想到产品完成的完整设计开发流程。至今是世界仅有的把PCB设计的软件、电路仿真的软件等这类的仿真软件合为一体的平台,它的模型处理器可以支持HC11、AVR、ARM、8086 、PIC10/12/16/18/24/30/DsPIC33和MSP430等,在2010有了DSP系列处理器的增加,并继续增加其他处理器模型的系列。该软件在编译方面,同样也可以使用MATLAB及IAR等各种使用的编译器。该软件的主要特点是:

① 该软件可以实现电路和单片机仿真模拟。该软件拥有着许多的仿真功能,包括了数字电路模拟电路的仿真以及我们需要的各种系统仿真、以及调试器等等各种作用;拥有各种虚拟仪器,如信号发生器,逻辑分析仪,示波器这一类虚拟仪器。

② 这个软件支持在很多主流的单片来进行仿真设计,现在能够使用的单片机类型有许多,支持目前大多数芯片。

③ 该软件提供这调试功能。拥有着设置全速、断点、单步这类各种调试作用,并且能够观测着各个有区别的变量、以及各种仪器的目前状况,此仿真系统基本具有这些功能;并且能够支持各种调试环境以及第三方软件的编译,比如MPLAB等软件,该软件还支持许多需要的原理布图,自动或手动布线电路板,这些功能的SPICE电路仿真。 ④ 有强大的原理图绘制功能。

该软件也支持仿真AVR、51系列、ARM、PIC等经常使用的单片机。与输出和显示,我们可以看到后的输入输出操作的影响。可以配合系统所带的示波器、虚拟逻辑分析仪这类这些虚拟仪器来分析过程,该软件以及有完善并且稳定的开发环境,而且有了完善的电子设计环境。

5.2仿真结果分析

1、我们需要先新建工程,在项目菜单下,选择新建项目。然后自己输入需要保存的文件名以及路径。

15

南昌大学共青学院毕业设计(论文) 第5章出租车计价器的仿真调试 2、新建项目后弹出一个对话框,我们需要选择我们想要使用SCM模型。下一步点击确定就可以。单击“File”,选择“New”,新建一个文件并在其中输入我们所编辑的程序代码,然后就保存为C语言的文件。

3、下一步我们回到编辑界面,点击“目标1”前的“+”,然后可以选中.c文件。

4、单击“项目”菜单,选择“建立目标”,编译程序,在项目文件夹中找到“.hex”文件即可。

5、然后画整机的电路图在Proteus ISIS中,当画完电路图后,可以双击C51单片机,会弹出一个框,把刚才产生的“.hex”文件添加到项目文件。保存后就能够模拟仿真。

打开出租车计价器仿真图,首先打开电源,如图5.1所示。这里可以看到出租车计价器已经开机,等待下一步操作。

图5.1 出租车计价器开机图

点击开始键,出租车计费器开始工作,这个时候可以通过“按键里程加0.1KM”键手动调整出租车走过的路程,画面所示为1.0KM,即为出租车所行驶的路程为1.0KM,如图5.2所示。

16

南昌大学共青学院毕业设计(论文) 第5章出租车计价器的仿真调试

图5.2 里程图

再次点击“开始/结束”键,出租车计价器即显示当前价格,B:15元为白天价格,W:15元为晚上价格,该键控制着出租车计价的工作开始以及结束,如图5.3所示。

图5.3 计价图

点击设置“界面键”进入设置界面,此界面可以通过点击“加值键”和“减值键”调节起步价、超过起步里程白天每千米价格,晚上每千米价格、白天等待

17

南昌大学共青学院毕业设计(论文) 第5章出租车计价器的仿真调试 每分钟价格,晚上等待每分钟价格,该键控制着出租车计价器的各种价格设置。如图5.4所示。

图5.4 设置界面

18

南昌大学共青学院毕业设计(论文) 第6章实物的制作与调试 第六章 实物的制作与调试

6.1电路的安装过程

1.单片机最小系统的焊接

包括单片机、led显示电路、复位电路、晶振电路。

2.按键电路的焊接

所有和单片机链接的按键(除去复位按键)。

3.显示屏的焊接

显示屏电路及其上拉电阻。

6.2电路的调试过程

1.单片机最小系统的调试过程(最小的系统有没有工作?检查工作的调试就

是使用led灯来实践,写一个控制led的程序去观察led是否工作,如果工作就判断其为最小系统工作成长)。

2.单片机按键调试

按键电路是否正常工作?判断调试就是写一个程序,通过按键来控制led灯,当按键工作时,看相对应的led是否工作。

3.显示器的调试

通过单片机来控制显示屏显示的内容,看是否是程序里说想要实现的内容。

4.出租车计价器总体调试

通过按键和显示器看是否能过实现计价器功能。

6.3电路出现的问题及解决方法

1、最小系统不工作

分析:复位电路的电容电阻焊接反了, 2、显示屏电路无显示

分析:因为使用的io口是p0口 当时没有接上来电阻 3、按键对应的东西加单价,里程等加不对,

分析:可能是因为按键对应的程序错误,把程序改过来就好了 4、显示屏无显示

19

南昌大学共青学院毕业设计(论文) 第6章实物的制作与调试 分析:是焊接电源线路出现错误,有虚焊,导致没有供电 5、显示器显示乱码 分析:程序代码出现错误 6、按键有的点击没有反应

分析:可能是线路连接出现问题,仔细检查焊接发现焊接粗心,焊接错误了

20

南昌大学共青学院毕业设计(论文) 结束语 结 束 语

本次设计的出租车计价器拥有易生产、成本低、电路简单等等优良特质。并且有着通过优化的程序,对目前来说还是比较实用的。

通过这次的毕业设计,让我学到了许多东西,知道了书本上只是理论,主要还是要自己多实践,也让我对单片机有了更加深刻的了解,让我以后对进行单片机的设计打下了很深的基础,并且使我学到了许多书上学不到的单片机知识,了解了单片机的运用广泛度,也让我更为喜欢研究单片机了。

在这次毕业设计中,我学到了许多查找资料的途径,原来只会去图书馆翻书,现在知道了网上有许许多多的资料,只要自己愿意去找,愿意去学,可以多问问老师,这次设计在网上查找了一些关于AT89S51单片机的介绍以及运用,以及AT24C02的功能及运用,这些都为本次课程设计提供了一定的资料。因为实践的次数不多,导致本次设计在充分准备下依旧出现了许多的问题,但是都一一解决了,我相信,在以后的实践设计中,做的只会越来越好,多一些基本的错误也肯定能马上发现马上解决,这次设计让我有了更多的实践经历,让我有信心从事本专业的工作,让自己知道了更多的学习方法,光看书是没有用的,只能多操作,多实践,这样,什么问题也会变得没有问题的,这些都是书本上学不到的,因此说这次的毕业设计对自己以后的影响还是很大的,多自己的帮助是很多的,为以后的工作打下了基础,对设计行业也有了更多的了解,以后从事该行业也会简单一些,对自己的工作有了多个方面的想法。

21

南昌大学共青学院毕业设计(论文) 致谢 致谢

本次毕业设计就要结束了,本人在梅光老师的指导以及同学们的帮助下,对出租车计价器有了更多的了解,有了更深的认识,对该毕业设计的整体过程有了很详细的感觉,经过了这次毕业设计,我对自己四年来所学的知识过了一遍,加深了自己对本专业的认识,也学到了更多的知识。

本次毕业设计,让我总结了自己在大学的收获,看清了自己的不足,学会了许多处理问题的思路,不急不躁,从开始制定计划到设计实施,一步一步的下来,对自己学的知识也是一种积累。

这次本人的毕业设计是在梅光老师的悉心指导下完成的,在他的指导下,我了解了许多原来不懂的知识,遇到问题梅光老师也是悉心解答,让我有了很大的改变,对自己知识的积累有很大的帮助,在此,谨向梅光老师表示衷心的感谢。

在这将要离校的时候,我要感谢本人这四年生活中的各位任课老师及同学们,是他们的帮助让我学到了更多的知识,感谢陪我走过这四年的每一位朋友,希望你们在以后的日子每天开心!谢谢!

22

南昌大学共青学院毕业设计(论文) 参考文献 参考文献

【1】 苏铁力.传感器及其接口技术[M],北京:中国石化出版社.1998. 【2】 中国电子学会.传感器与执行器大全[M],北京:电子工业出版社.1998. 【3】 白雪冰,张延林等.单片机原理及应用[M],哈尔滨:东北林业大学出版

社.2006.

【4】 谢运祥,欧阳森等.电力电子单片机控制技术[M],北京:机械工业出

版.2007.

【5】 王洪业.传感器技术[M],长沙:湖南科学技术出版社.1995.

【6】 李光飞.单片机课程设计实例指导,北京:北京航空航天大学出版社.2004. 【7】 王法能.单片机原理及应用,科学出版社.2004.

【8】 楼然苗,李光飞.51系列单片机设计实例[M],北京:北京航空航天大学

出版社.2003.

【9】 胡汗才.单片机原理与接口技术[M],清华大学出版社.2004. 【10】 王萍.电子技术实验教程,机械工业出版社.2009.

【11】 朱定华,戴淑萍.单片机微机原理与应用[M],清华大学出版社.2003.

23

南昌大学共青学院毕业设计(论文) 附录A:程序 附录A:程序

main.c:

#include #include #include #include

/*****************蜂鸣器、灯、按键引脚定义*******************/ sbit led =P1^5; //LED灯

sbit key_start =P3^2; //开始/结束计价 sbit key_mil =P3^3; //里程数+0.1KM sbit key_Wait =P3^4; //等待开始/结束 sbit key_set =P3^5; //设置 sbit key_jia =P3^6; //加值 sbit key_jian =P3^7; //减值

/************************变量定义***********************/ uint start_price; //起步价

uint white_price,evening_price; //白天单价、晚上单价

uint white_Wait,evening_Wait; //白天、晚上等待超3分钟后每分钟多少钱。

bit start; //开始计价标志位

uint mil,Wait,price1,price2; //里程数、等待时间、白天总价、晚上总价 uchar set_f; //设置标志

/******************************************************** 函数名称:void delayms(uint ms) 函数作用:毫秒延时函数 参数说明:

********************************************************/ void delayms(uint ms) { unsigned char i=100,j; for(;ms;ms--) { while(--i) { j=10; while(--j); } } }

24

南昌大学共青学院毕业设计(论文) 附录A:程序 /******************************************************** 函数名称:void scan(void) 函数作用:按键检测函数 参数说明:

********************************************************/ void scan(void) { //开始/结束计价键 if(key_start==0&&set_f==0) //在设置模式下无效 { delayms(7); if(key_start==0&&set_f==0) { LCD_write_command(0x01);//清除屏幕显示 delay_n40us(100); // start=~start; if(start==0) //计价结束。计算价格 { led=1; if(mil>30) { if(Wait*10/60>30) { price1=start_price+(mil-30)*white_price+(Wait*10/60-30)*white_Wait; price2=start_price+(mil-30)*evening_price+(Wait*10/60-30)*evening_Wait; } else { price1=start_price+(mil-30)*white_price; price2=start_price+(mil-30)*evening_price; } } else { if(Wait*10/60>30) { price1=start_price+(Wait*10/60-30)*white_Wait; price2=start_price+(Wait*10/60-30)*evening_Wait; } else { price1=start_price; price2=start_price; }

25

南昌大学共青学院毕业设计(论文) 附录A:程序 } mil=0; //清除里程数 Wait=0; //清除等待时间 TR0=0; //关闭定时器 } else //计价开始 led=0; //打开LED提示在计价

}

while(!key_start);//检测按键松开

}

//里程键,支持连按

if(key_mil==0&&start==1&&TR0==0) { delayms(7); if(key_mil==0&&start==1) { mil++; } }

//等待开始/结束

if(key_Wait==0&&start==1) //只有在计价开始才有效 { delayms(7); if(key_Wait==0&&start==1) { TR0=~TR0; } }

//设置键,不支持连按

if(key_set==0&&start==0) //只有在结束计价才有效 { delayms(7); if(key_set==0&&start==0) { LCD_write_command(0x01);//清除屏幕显示 delay_n40us(100); // set_f++;

if(set_f==6) //全部参数设置完成 { set_f=0; //清除设置标志

AT24C02_write_date(1,white_price); 26

//将设置好的所有参数写入

南昌大学共青学院毕业设计(论文) 附录A:程序 AT24C02 delay_n40us(1000); AT24C02_write_date(2,evening_price); delay_n40us(1000); AT24C02_write_date(3,white_Wait); delay_n40us(1000); AT24C02_write_date(4,evening_Wait); delay_n40us(1000); AT24C02_write_date(5,start_price/100); delay_n40us(1000); LCD_write_command(0x01);//清除屏幕显示 delay_n40us(100); // } } while(!key_set);//检测按键松开 } //加值键,支持连按 if(key_jia==0) { delayms(7); if(key_jia==0&&set_f==1)//设置起步价 { start_price=start_price+100; if(start_price>9900) start_price=9900; } if(key_jia==0&&set_f==2)//设置白天每加一公里价格 { white_price++; if(start_price>255) start_price=255; } if(key_jia==0&&set_f==3)//设置晚上每加一公里价格 { evening_price++; if(evening_price>255) evening_price=255; } if(key_jia==0&&set_f==4)//设置白天每等待一分钟价格 { white_Wait++; if(white_Wait>255)

27

南昌大学共青学院毕业设计(论文) 附录A:程序

}

white_Wait=255; }

if(key_jia==0&&set_f==5)//设置晚上每等待一分钟价格 { evening_Wait++; if(evening_Wait>255) evening_Wait=255; }

//减值键,支持连按 if(key_jian==0) { delayms(7); if(key_jian==0&&set_f==1)//设置起步价 { if(start_price==0) start_price=100; start_price=start_price-100; } if(key_jian==0&&set_f==2)//设置白天每加一公里价格 { if(white_price==0) white_price=1; white_price--; }

if(key_jian==0&&set_f==3)//设置晚上每加一公里价格 { if(evening_price==0) evening_price=1; evening_price--; }

if(key_jian==0&&set_f==4)//设置白天每等待一分钟价格 { if(white_Wait==0) white_Wait=1; white_Wait--; }

if(key_jian==0&&set_f==5)//设置晚上每等待一分钟价格 { if(evening_Wait==0) evening_Wait=1; evening_Wait--; }

28

南昌大学共青学院毕业设计(论文) 附录A:程序 } }

/******************************************************** 函数名称:void display()

函数作用:计价时的显示函数 参数说明:

********************************************************/ void display() { //显示里程数 lcd1602_write_character(0,1,\ LCD_disp_char(8,1,ASCII[(uchar)(mil)/1000]); LCD_disp_char(9,1,ASCII[mil00/100]); LCD_disp_char(10,1,ASCII[mil0/10]); LCD_disp_char(11,1,ASCII[12]); LCD_disp_char(12,1,ASCII[mil]); lcd1602_write_character(14,1,\ //显示等待时间 lcd1602_write_character(0,2,\ LCD_disp_char(8,2,ASCII[Wait/3600/10]); LCD_disp_char(9,2,ASCII[Wait/3600]); LCD_disp_char(10,2,ASCII[10]); LCD_disp_char(11,2,ASCII[Wait600/60/10]); LCD_disp_char(12,2,ASCII[Wait600/60]); LCD_disp_char(13,2,ASCII[10]); LCD_disp_char(14,2,ASCII[Wait`/10]); LCD_disp_char(15,2,ASCII[Wait`]); }

/******************************************************** 函数名称:void display2()

函数作用:计价结束时的显示函数 参数说明:

********************************************************/ void display2() { //显示白天的计价总价 lcd1602_write_character(0,1,\ lcd1602_write_character(0,2,\ LCD_disp_char(2,2,ASCII[price1/10000]); LCD_disp_char(3,2,ASCII[price1000/1000]); LCD_disp_char(4,2,ASCII[price100/100]); LCD_disp_char(5,2,ASCII[12]); LCD_disp_char(6,2,ASCII[price10/10]); LCD_disp_char(7,2,ASCII[price1]); //显示晚上的计价总价

29

南昌大学共青学院毕业设计(论文) 附录A:程序 lcd1602_write_character(8,2,\ LCD_disp_char(10,2,ASCII[price2/10000]); LCD_disp_char(11,2,ASCII[price2000/1000]); LCD_disp_char(12,2,ASCII[price200/100]); LCD_disp_char(13,2,ASCII[12]); LCD_disp_char(14,2,ASCII[price20/10]); LCD_disp_char(15,2,ASCII[price2]); }

/******************************************************** 函数名称:void display3()

函数作用:设置参数时的显示函数 参数说明:

********************************************************/ void display3() { if(set_f==1) //显示起步价的设置 { lcd1602_write_character(0,1,\ LCD_disp_char(6,2,ASCII[start_price00000/100000]); LCD_disp_char(7,2,ASCII[start_price000/1000]); LCD_disp_char(8,2,ASCII[start_price00/100]); LCD_disp_char(9,2,0x01); } if(set_f==2) //显示设置白天每加一公里价格 { lcd1602_write_character(0,1,\ LCD_disp_char(4,2,ASCII[white_price/100]); LCD_disp_char(5,2,ASCII[white_price0/10]); LCD_disp_char(6,2,ASCII[12]); LCD_disp_char(7,2,ASCII[white_price]); lcd1602_write_character(8,2,\ lcd1602_write_character(11,2,0x01); } if(set_f==3) //显示设置晚上每加一公里价格 { lcd1602_write_character(0,1,\ LCD_disp_char(4,2,ASCII[evening_price/100]); LCD_disp_char(5,2,ASCII[evening_price0/10]); LCD_disp_char(6,2,ASCII[12]); LCD_disp_char(7,2,ASCII[evening_price]); lcd1602_write_character(8,2,\ lcd1602_write_character(11,2,0x01); } if(set_f==4) //显示设置白天每等待一分钟价格 {

30

南昌大学共青学院毕业设计(论文) 附录A:程序 lcd1602_write_character(0,1,\ LCD_disp_char(4,2,ASCII[white_Wait/100]); LCD_disp_char(5,2,ASCII[white_Wait0/10]); LCD_disp_char(6,2,ASCII[12]); LCD_disp_char(7,2,ASCII[white_Wait]); lcd1602_write_character(8,2,\ lcd1602_write_character(12,2,0x01); } if(set_f==5) //显示设置晚上每等待一分钟价格 { lcd1602_write_character(0,1,\ LCD_disp_char(4,2,ASCII[evening_Wait/100]); LCD_disp_char(5,2,ASCII[evening_Wait0/10]); LCD_disp_char(6,2,ASCII[12]); LCD_disp_char(7,2,ASCII[evening_Wait]); lcd1602_write_character(8,2,\ lcd1602_write_character(12,2,0x01); } }

/******************************************************** 函数名称:void main() 函数作用:主函数 参数说明:

********************************************************/ void main() { LCD_init();//LCD1602初始化 T0_init(); //定时器0初始化 white_price=AT24C02_read_date(1);//开机先将所有参数读取出来 delay_n40us(1000); evening_price=AT24C02_read_date(2); delay_n40us(1000); white_Wait=AT24C02_read_date(3); delay_n40us(1000); evening_Wait=AT24C02_read_date(4); delay_n40us(1000); start_price=AT24C02_read_date(5)*100; delay_n40us(1000); lcd1602_write_pic(0x01,pic2); //将自定义字符“¥”写入LCD1602 while(1) { scan(); //按键检测 if(set_f==0) //判断是否在设置模式

31

南昌大学共青学院毕业设计(论文) 附录A:程序 { if(start==1) //判断是否在开始计价模式 display(); else //否则,在结束计价模式 display2(); } else //否则,在设置模式 { display3(); }

}

}

32

南昌大学共青学院毕业设计(论文) 附录B:出租车计价器的系统原理图 附录B:出租车计价器的系统原理图

33

南昌大学共青学院毕业设计(论文) 附录D:实物图片 附录C:实物图片

34

南昌大学共青学院毕业设计(论文) 附录D:仿真图片 附录D:仿真图片

35

本文来源:https://www.bwwdw.com/article/g568.html

Top