出租车计价系统-浙理单片机课程设计_第1页
出租车计价系统-浙理单片机课程设计_第2页
出租车计价系统-浙理单片机课程设计_第3页
出租车计价系统-浙理单片机课程设计_第4页
出租车计价系统-浙理单片机课程设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机系统设计及应用浙江理工大学单片机系统设计及应用实验设计报告题 目: 出租车计价系统 专 业: 机械电子工程 班 级: 姓 名: 学 号: 0000000000000 指导教师: 张建义 机械与自动控制学院2016年 7月 3日摘 要随着社会的进步,电子类产品也得到了广泛的发展,尤其是单片机的发展异常迅速。由于单片机的特殊结构形式,在某些应用领域中,它承担了一些通用的微型计算机无法完成的工作,它是一种高性能,低价格的处理器,集成度高,体积小,可靠性又高,控制功能强,电压低。由于单片机具有这些特点,人类的生活应用中十分广泛。本文以AT89C51单片机为中心,附加A44E霍尔传感器测距(本电路

2、中用模拟开关替代),实现对出租车计价,采用AT24C512B实现在系统掉电的时候保存单价,输出采用8段数码显示管,显示行驶总里程和总金额。模拟出租车计价器设计:进行里程显示,预设起步价和起步公里数;行程按全程收费,有复位功能和启动功能,启动后,开始计价。采用单片机进行设计,可以用较少的硬件和适当的软件相互配合来实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,应用前景广阔。关键词:出租车;计价器;AT89C5目 录摘 要第1章、出租车计价系统的设计要求与设计方案11.1 出租车计价器概述11.2 系统主要功能11.3 方案论证与比较1第2 章、系统硬件设计22.1 设计方案与硬件

3、说明22.2 硬件设计说明22.3 硬件电路组成62.3.1 驱动电路62.3.2 显示电路82.3.3 复位电路92.3.4 时钟电路92.3.5 按键电路10第3章、系统软件设计113.1 软件总体设计113.2 系统程序设计11第4章、系统调试12第5章、设计小结18参考文献19附录一20附录二21附录三23附录四26第1章、出租车计价系统的设计要求与设计方案1.1 出租车计价器概述计价器显示的是单价、路程和总价。出租车计价器通过传感器与行驶车辆连接,但在此次课程设计中,因没有传感器,所以用键盘取代,用按键的次数来代表里程数。该课程设计的出租车计价器功能主要有具有数据的复位功能、单价修改

4、功能、数据输出功能、计价功能等。1.2 系统主要功能本课程设计所设计的出租车计价器的主要功能有:数据的复位、单价修改、数据输出、计价、单价输出及调整、路程输出等功能。输出采用8段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能手动来调整单价。1.3 方案论证与比较方案一:采用数字电路控制采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,电路不够实用。方案二:采用单片机控制利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。通过比较以上两种方案,单片机方案有较大

5、的活动空间,不但能实现所要求的功能,而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以采用后一种方案更好些。第2 章、系统硬件设计2.1 设计方案与硬件说明采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。设计采用AT89C51单片机为主控器,以A44E霍尔传感器测距(按键替代),实现对出租车的基本的计价设计,输出采用8段数码显示管。利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的计价功能。其系统结构图如图2-1所示:按键控制 AT89C51单片机复位电路时钟电路显示模块显

6、示单价、总里程和总金额图2-1 系统结构图本电路设计的计价器能实现基本的计价功能,单片机计算总价的公式为:总价起步价+单价×(总里程起步里程)。AT89C51作为一个单片微型计算系统,灵活性高,其强大的控制处理功能和可扩展功能设计电路提供了很好的选择。2.2 硬件设计说明单片机是单片微型计算机的简称,单片机以其卓越的性能,得到广泛的应用,已经深入到各个领域。在这次设计中,我们用到P0口和P2口,P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口的驱动能力较强。 设计中,为了能够让数码管更好的

7、正常显示,我们采用了驱动电路来驱动。在本次硬件设计中,我们考虑采用芯片74LS245来驱动数码管显示。设计电路时,考虑到用里程(霍尔)传感器价格昂贵,且不便于试验检测,在设计中采用一个模拟开关来代替。模拟开关一端接在P3.4口,另一端接地,通过来回高低电平的变化,每按两次,对应的里程数加一。通过在程序中设置的里程和金额的信息,在加上驱动电路的设计,就可以在数码管上分别显示总金额和总里程。在显示方面,可以用液晶显示,也可以用数码管进行显示。由于在这次设计中只需要显示里程和金额信息,我们采用数码管进行显示。这样既节约了成本,又可以达到显示的目的。同时为了减少硬件的复杂度,我们采用了动态显示方式,选

8、用了共阴极数码管。为了焊接方便,我们选用了集成在一起的数码管。我们还设计了控制按键,能够很好的对出租车计价器控制,如启动/停止按键,清零按键等。AT89C51单片机简介:AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4KB的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用 8位微处理器于单片芯片中,具有高性价比,其引脚配置如图2-2所示。图2.2 AT89C51引脚配置AT89C51芯片的40个引脚功能为:VC

9、C 电源电压。GND 接地。RST 复位输入。当RST变为高电平并保持2个机器周期时,将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISKRTO位缺省为RESET输出高电平打开状态。XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 来自反向振荡放大器的输出。P0口 一组8位漏极开路型双向I/O口。也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内

10、部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口 一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,P1接收低8位地址。P1口部分端口引脚及功能如表2-1所示。表2-1 P1口特殊功能P1口引脚特殊功能P1.5MOSI(用于ISP编程)P1.6MOSI(用于ISP编程)P1.7SCK(用于ISP编

11、程)P1口引脚特殊功能P1.5MOSI(用于ISP编程)P1.6MOSI(用于ISP编程)P1.7SCK(用于ISP编程)P2口 一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个访问期间不改变。Flash编程和程序校验期间,P2亦接收低8位地址。P3口 一个

12、带内部上拉电阻的8位双向I/O口。P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写“1”时,它们被内部的上拉电阻把拉到高电并可作输入端口。作输入端口使用时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2-2所示。P3口还接收一些用于Flash闪速存储器编程和程序校验期间的控制信号。表2-2 P3口特殊功能P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6(外部数

13、据存储器写选通)P3.7(外部数据存储器读选通)P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2 (外部中断0)P3.3 (外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通)硬件系统设计说明: 按下计价按键时,显示起步价和起步里程范围,这些在程序中设置;当等于或超过三公里后,按计算总价的公式为:总价起步价单价×(总里程起步里程)进行计价。本设计中,起步价白天为8元,晚上位10元,起步里程为,3公里,白天晚上的切换可以通过(白/黑)键切换,以满足不同时间段价格

14、调整的需要。 2.3 硬件电路组成硬件组成主要包括:驱动电路、显示电路、复位电路、掉电保护电路、时钟电路、按键电路。其整体电路图2-3所示:图2.3 计价器整体电路图2.3.1 驱动电路74LS245是我们常用的芯片,用来驱动led或者其他的设备。总线驱动器74LS244和74LS245经常用作三态数据缓冲器,74LS244为单向三态数据缓冲器,而74LS245为双向三态数据缓冲器。本设计用74LS245作为驱动芯片,双向总线发送器/接收器(3S),管脚图如图2-4所示。 图2-4 驱动芯片管脚图74LS245主要电器特性的典型值如下: A A总线端 B B总线端 三态允许端(低电平有效) D

15、IR 方向控制端 功能表如表2-3所示: 表 2-3 功能表Enable Direction Control DIR OperationL LL HH XB data to A busA data to B busIsolation利用74LS245来驱动数码管显示,单片机的P2.0到P2.7分别接A0到A7管脚,进行数据的传送,其中AB/BA接高电平,控制数据从A到B进行传送,B0到B7分别接数码管的位选端,驱动数码管依次显示。P2.0到P2.7的数据通过A传送到B中的数据送到数码管,以达到显示数据信息的目的。2.3.2 显示电路 多数的应用系统都要配输入和输出,外设LED显示器和LCD显示

16、器,虽然LCD显示效果比较好,已经成为了一种发展趋势,但为了节约成本,我们选用了LED显示器(图2-5)。图2-5 集成数码管在显示方面,我们选用了动态显示。静态显示虽然亮度较高,接口编程容易,但是每位的段码线分别与一个8位的锁存器输出相连。占用的I/O口线比较多,在显示位数较多的情况下,一般都采用动态显示方式。利用动态显示的方法,由于LED显示器的余辉和人眼的视觉暂留现象,只要每位显示的时间间隔足够短,就仍能感觉到所有的数码管都在显示。为了简化硬件,通常将所有位的段码线相应段并联在一起,由一个8位I/O口控制,在同一时刻,只让一位选通,如此循环,就可以使各位显示出将要显示的字符。LED数码有

17、共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC和GND。再把多个这样的8字装在一起就成了多位的数码管了。在本设计仿真中使用的是6个一组的共阴8位数码管(图2-6)。图3-6 LED数码管找公共共阴和公共共阳的方法:首先我们找个电源稳压器(3到5伏)和1个1K(几百欧的也行)的电阻,VCC串接1个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的,找到一个就够了,然后用GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阴的了

18、。共阴极数码管,阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮,对应的就显示。2.3.3 复位电路单片机的复位是由外部的复位电路实现的,复位电路通常采用上电自动复位和按钮复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。除了上电复位外还需要按键手动复位(图2-7)。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源VCC接通而实现的。单片机的复位速度比外围I/O接口电路快,为能够保证系统可靠的复位,在初始化程序中应安排一定的复位延迟时间。图2-7 复位电路2.3.4 时钟电路MCS-51单片机的各功能部件都是以时钟控制信号为基准,内部电路在时

19、钟信号的控制下,严格地按时序执行指令进行工作,单片机本身如同一个复杂的同步时序电路,为了保证其各个部分同步工作,电路要在唯一的时钟信号控制下,严格地按照时序进行工作。其实只需在时钟引脚连接上外围的定时控制元件,就可以构成一个稳定的自激振荡器。为更好地保证振荡器稳定可靠地工作,谐振器和电容应尽可能安装得与单片机芯片靠近。本设计中使用的振荡电路,由12MHZ晶体振荡器和两个约30PF的电容组成,在XTAL1和XTAL2两端跨接晶体,电容的大小不会影响振荡频率的高低。在整个系统中为系统各个部分提供基准频率,以防因其工作频率不稳定而造成相关设备的工作频率不稳定,晶振可以在电路中产生振荡电流,发出时钟信

20、号。如图2-8所示。图2-8时钟电路2.3.5 按键电路当乘客上车之后按下开始键,方可开始计价。“黑白转换”按键用于调节白天晚上的不同起步价“等待按键”设计成可闭合形式,在出租车正常行驶时,等待按钮打开。当应乘客要求需等车等待时按下该按键,每隔一段时间总价显示上增加一定金额,但是路程数并不改变。再次行走时打开此按键。“清零按键”用于上一乘客下车时,需将其数据清零结算,以备下一乘客再次计数。按键电路如图2-9所示。 图2-9 按键电路第3章、系统软件设计3.1 软件总体设计51单片机的程序设计语言主要有两种:一是汇编程序设计;二是C语言编程设计,两种程序设计语言都有各自的优点。用汇编语言编写和高

21、级语言(C语言)比较起来节省空间,这样对于存储空间仅4Kb的芯片来说是极之有利的,51单片机能更高速的运行。C语言编写的程序,虽然不象汇编那样速度快、但程序简单易行、并且需要较小的存储空间。C语言作为一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。此外,C语言程序还具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的主流。本设计就是采用C语言编写的,由于采用模块化操作,使得程序在修改,执行的时候显得方便易行。3.2 系统程序设计本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中

22、采用主程序调用各个子程序的方法,使程序通俗易懂,我们设计了整体程序流程图:在main函数编写开始,要进行初始化,包括对系统初始化和对存储器初始化,要对硬件设备进行初始化,并使硬件处于就绪状态。通过判断是否计费,调价,清零等状态,来分别调用不同的子程序,使程序在设计之前,就有了很强的逻辑关系。这些对应于硬件就是通过按下各个控制开关,来分别进行不同的动作,最后数码管根据输入的信息,来显示不同的数据信息,这就达到了软件控制硬件,同时输入信息控制输出信息的目的。整个程序的流程图如图3-1所示:图3-1系统程序流程图第4章、系统调试系统调试包括软件调试和硬件调试。硬件调试的任务是排除所焊接电路故障。软件

23、调试是利用开发工具进行在线仿真调试。调试的一般过程如图4-1所示:系统调试硬件调试软件调试系统联调现场调试调试结束图4-1 系统调试流程图系统调试的一般过程是上电运行后观察其运行状态,数码管是否点亮等。软件调试先是各个模块、各个子程序分别调试,最后进行系统联机调试。下图是通过在Keil C中编译通过,并生成Hex文件,在PROTEUS中仿真结果如下:通过按键输入信号,8位数码管从左到右分别显示单价、里程数和总价。下图为仿真初始状态:1、按下开始按钮:2、按下公里数加键:3、每按一次公里数加键,数码管显示的公里数加1,单价始终为1元,3公里内总价不变,下图分别为1、2、3公里时的仿真结果:4、继

24、续按公里数加键,以下为4、5、6公里时的仿真结果:5、按下清零键,使回到初始状态,接下来进行黑白转换模拟,按下黑白转换键:6、按下黑白转换键之后,单价有每公里8元调整为每公里10元,重复步骤3、4,结果如下:7、在第6步骤完成的情况下进行,接下来进行停车等待功能的仿真,停车等待功能是考虑到堵车情况每隔一段时间公里数不变而总价增加,按下停车等待使开关闭合:仿真中每过一秒钟,公里数不变,总价加1,仿真结果如下:8、停车等待功能仿真结束后(即汽车重新起步后),再按一下停车等待按钮使开关打开,接下来按公里数加键,回复正常计价,仿真结果如下:9、按下停止键仿真结束第5章、设计小结在本次设计中,我们采用A

25、T89C51芯片为核心器件,设计出了简单的出租车计价器,能够实现显示总金额和总里程,按键控制清零、调价。选题后,我便开始复习单片机方面的知识,也查阅、搜索了很多相关资料,进行总体设计与具体设计,同时也学习仿真软件Protues和编程软件Keil。由于以前都采用汇编语言实现编程,对用C语言来实现单片机的编程不太习惯,花费了一些时间来熟悉C语言的编程。在设计开始,要形成流程图,它可以使设计有一定的逻辑性与严密性,使得设计思路明确。采用模块化的设计思想很重要,它方便编写、修改与调试,另外加上必要的注释,便于交流与理解。这次课程设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经

26、验,达到进步的目的。通过自身的努力以及相关图书资料的帮助,逐渐熟悉了KEIL、PROTEUS和C语言等软件的使用以及硬件检测过程中的一些小技巧。本次设计我学习到不少单片机的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题。恳请各位老师批评指正,以使我在以后的学习和实践中加以改进和提高。参考文献:1何钦铭,颜辉.C语言程序设计(第2版)M.高等教育出版社,2012:3.2张俊谟.单片机中级教程(第2版)M.北京航空航天大学出版社,2006:10.3张靖武.单片机原理应用与PROTEUS仿真M.电子工业出版社,2009:130-132.4 陈明荧.8051单

27、片机课程设计实训教材M.北京:清华大学出版社,2004:303-304.5 华成英.模拟电子技术基础M.北京:高等教育出版社,2006202-203. 附录一原理图附录二PCB图附录三原程序代码#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define Delay4us() _nop_();_nop_();_nop_();_nop_();unsigned char Tempduan8; /存储显示值的全局变量int i=0;sbit KEY

28、_ADD=P34; sbit heibai=P11;sbit qingling=P13;sbit dengdai=P12; sbit SDA=P31;sbit SCL=P30;/定义按键输入端口uchar code duanma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/段码表uchar code weima=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位码表void xianshi(); /函数声明 void Write_Random_Adress_Byte(uchar addr,uchar dat);void DelayMS(uint x) /延时uchar t;while(x-) for(t=0;t<120;t+);/主程序void main()uchar dd,k,qibu=8;unsigned int gl;unsigned int zj;while(1) /黑白计费模式转换if(!heibai) /如果检测到低电平,说明按键按下 xianshi(); /延时去抖,一般10-20ms if(!heibai) /再次确认按键是否按下,没有按下则退出 while(!heibai)xianshi();/如果确认按下按键等待按键释放

温馨提示

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

评论

0/150

提交评论