基于STC89C52单片机出租车计价器设计毕业设计(论文).doc

上传人:来看看 文档编号:3922094 上传时间:2019-10-10 格式:DOC 页数:73 大小:1.48MB
返回 下载 相关 举报
基于STC89C52单片机出租车计价器设计毕业设计(论文).doc_第1页
第1页 / 共73页
基于STC89C52单片机出租车计价器设计毕业设计(论文).doc_第2页
第2页 / 共73页
基于STC89C52单片机出租车计价器设计毕业设计(论文).doc_第3页
第3页 / 共73页
基于STC89C52单片机出租车计价器设计毕业设计(论文).doc_第4页
第4页 / 共73页
基于STC89C52单片机出租车计价器设计毕业设计(论文).doc_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《基于STC89C52单片机出租车计价器设计毕业设计(论文).doc》由会员分享,可在线阅读,更多相关《基于STC89C52单片机出租车计价器设计毕业设计(论文).doc(73页珍藏版)》请在三一文库上搜索。

1、洛阳理工学院毕业设计(论文)毕业设计论文基于STC89C52单片机出租车计价器设计摘 要随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展。现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展有很好的前景。尽管小城市尚未普及,但计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。出租车计价器是单片机的一种典型应用。基于单片机的计价器是由单片机和外部电路组成。包括检测模块,控制模块,人机模块。里程检测模块由A44E构成,控制模块包括STC89C52单片机和AT24C02,人机模块包括独立键盘和LED动态显示。系统性能指标1.设定价格;2.显示当前单价、行驶

2、里程和总金额;3.里程精确到0.1公里。通过多次调试系统性能达到设计要求。关键词:STC89C52,霍尔传感器A44E ,I2C总线,动态显示Design of Taximeter Based on STC89C52ABSTRACTWith the rapid development of city constriction, the taxi industry which symbolizes the cityscape also has an accelerated progress. Nowadays the automatic taximeter has been widely use

3、d in taxi industry in many cites. Therefore, the development of automatic taximeter is doomed. Although automatic taximeter is not spread in some towns, there is no doubt that it would be popularized. Thus, in future the business of automatic taximeter is still potential. One typical application of

4、single chip computer is automatic taximeter. The hardware of this design is composed of single chip computer and peripheral circuits which consist of Detection Unit, Processing Unit and Human Computer Interaction Unit. The Detection Unit is based on Hall-effect sensor. The Processing Unit contains S

5、TC89C52 and AT24C02. Human Computer Interaction Unit is composed of keyboard and LED.The function of this system includes as follows:1. Set the unit price;2. Display the unit price, total amount and mileage.3. Accuracy: 0.1km. After repeatedly debugging, the performance of this system is reached the

6、 design requirements. KEY WORDS: STC89C52, Hall-effect sensor, A44E, I2C Bus, Dynamic display4目录前言1第1章 系统工作原理31.1功能要求31.2基本原理3第2章 硬件设计52.1 单片机最小系统单元52.2 霍尔传感器单元62.3 掉电存储单元82.4 键盘调整单元92.5 显示单元10第3章 软件设计143.1 系统主程序143.2 里程计数中断程序153.3 中途等待中断程序153.4 计算程序173.5 显示程序183.6 键盘程序18第4章 调试改进过程及运行结果分析214.1 动态扫描的

7、调试和分析214.2 AT24C02的编程与调试214.3 按键查询功能的实现214.4 计算程序的分析与设计224.5 结果分析与性能改进234.6 计价器系统的仿真23结论26谢 辞27参考文献28附 录A 系统原理图30附 录B 仿真图PCB板31附 录C 系统源程序33外文资料翻译55前言单片机是一种可通过编程控制的微处理器,虽其自身不能单独用在某项工程或产品上,但当其与外围数字器件和模拟器件结合时便可发挥强大的功能,现在单片机已广泛应用于众多领域。举例如下:1. 工业自动化。如数据采集、测控技术。2. 智能仪器仪表。如数字示波器、数字信号源、感应电流表等。3. 消费类电子产品。如空调

8、机、微波炉、IC卡、汽车电子设备等。4. 通信方面。如调制解调器、程控交换技术等。5. 武器装备。如飞机、军舰、导弹、鱼雷制导、智能武器等。作为与自动化技术和电子密切相关的理工科学生,掌握单片机是最简单也最基础的要求。为了进一步丰富和巩固单片机知识,也为了能更好的联系实际应用,本次毕业设计选择了基于单片机STC89C52控制的出租车计价器,并力求能做出实物。鉴于电子技术、计算机技术以及各种更先进的仿真软件的出现,使用高级语言如C代替汇编语言进行编程和控制已成为现实,也成为一种发展趋势。单片机C语言编程相对于MC51汇编语言编程有如下优点:1. 对单片机的指令系统不需要有很深的理解就可以编程操作

9、单片机。2. 寄存器分配、不同存储器的寻址及数据类型等细节完全由编辑器自动处理。3. 程序有规范的结构,可分为不同的函数,可使程序结构化。4. 库中包括许多标准子程序,具有较强的处理能力,使用方便。5. 具有方便的模块化编程技术,使已编好的程序便于移植,可极大缩短开发时间,增加程序的可读性和可维护性。事实上,当今许多硬件的开发都已开始用C语言编程,如各种单片机、DSP、ARM等,用C语言进行工业控制也已成为一种趋势,为了更好的适应当今社会形势,为了更好的面对挑战、把握机遇,此次毕业设计决定尝试用C语言编程完成。也希望能在进一步熟悉单片机控制的同时,对数字电子技术、模拟电子技术、计算控制技术以及

10、常用外围芯片有更深层次的了解,提高自己的综合能力。综上:基于单片机STC89C52设计的出租车计价器不仅可方便的用软件代替硬件,降低成本,具备一般计价器的计算里程和显示总金额的功能,还具备了掉电保持,白天、夜晚单价切换,并且还可很方便的扩展为速度测试仪,具有很好市场前景。功能要求1. 设计一个出租车计价器,并利用霍尔传感器和单片机内集成的计数器测试出出租车运行里程。2. 要求单价可调,里程精确到0.1公里,并要求对等待时间进行计时。3. 利用I2C总线通过EEPROM对存储空间进行扩展,使其具备掉电存储功能。4. 有完整的软件仿真结果和硬件电路,并用Protel设计系统原理图。 第1章 系统工

11、作原理1.1 功能要求出租车计价器是根据乘客乘坐汽车行驶距离和等候时间的多少进行计价的,并在行驶中同步显示本次消费、运行里程、运行单价以及等待时间等信息。从起步开始,当汽车行驶里程未满3公里时,均按起步价计算。超过3公里后,实现每1公里单价收费,中间遇到暂停时,计程数不再增加,开始计时收费,计程收费和计时收费的和便构成了一位乘客的车费。同时,白天和夜晚价格不同,可以进行切换。白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节。(默认起步价为5元/3公里,里程单价白天为2.5元/公里,夜晚为3.5元/公里,等待计时单价为1元/1分钟)为提高计时、计价精度,确保乘客对自己消费的知情权,

12、出租车计价器应做到里程数精确到0.1公里,同时为减少司机朋友来回调整单价以及停车后需重设单价的麻烦,计价器应具有掉电保持功能,即当重新启动后维持原有数值(包括总金额、等待时间、行驶里程、单价)不变,直至强制按下清零键,计价器显示起步价(刚起步时对应总金额)、运行单价,为下一次计价做准备。1.2 基本原理 计价器系统主要由五部分组成:分别为基于霍尔传感器A44E的里程检测单元、STC89C52单片机、外扩串行EEPROM-AT24C02、独立键盘和LED显示。霍尔传感器主要用于检测汽车行使的里程数,出租车车轮每旋转一周,霍尔传感器A44E便产生一相应的脉冲输出,并把该脉冲交由单片机进行处理,单片

13、机则根据程序设定,通过计算脉冲个数换算出已行驶里程(里程=脉冲个数*出租车车轮周长),然后再根据从EEPROM-AT24C02中读取的单价等相关数据进行总的消费金额的计算:当里程小于3公里时,总金额=起步价+等待时间*等待单价;当里程大于3公里时,总金额=起步价+(里程-3)*运行单价+等待时间*等待单价;计算好的金额、等待时间、里程和单价等数据信息都可实时地显示在数码管上。其中,等待时间可根据霍尔传感器A44E是否有脉冲输出加以判断,如可设定等待时基为5s,即假如A44E在5s后仍无脉冲输出便认为进入等待时间,并由单片机STC89C52内部计时器对其进行计时。独立键盘可以调整单价等相关数据,

14、当按下某按键,会给单片机相应端口一低电平信号,单片机会通过循环扫描检测到此信号,并根据预先设置好的程序做出相应的处理;调整好的数据存储到EEPROM中,掉电后可以使该数据不丢失,下次得电后直接从EEPROM-AT24C02中读到单片机,并通过数码管实时显示。系统结构图如图1-1所示。图1-1系统结构图 第2章 硬件设计2.1 单片机最小系统单元主控机系统采用STC公司生产的 STC89C52单片机,它含有512 字节数据存储器RAM,内置8K 的电可擦除FLASH ROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。芯片外围电路最高可接入40MHZ的晶振(AT单片机数值一

15、般为24)。复位电路和晶振电路,以及P0口接入的10K的上拉电阻便构成了STC89C52 单片机工作所需的最简外围电路。单片机最小系统电路图如图2-1所示。 图2-1 单片机最小系统STC89C52单片机的复位端接74LS14,它是一个史密特触发输入的芯片,高电平有效,具有稳定波形的作用。RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作;在该复位电路中,按一下复位开关,利用电容冲放电的所产生的延时,就会在RST端产生一段时间的高电平,进而进行复位操作。外接12M的晶振和两个30pF 电容组成系统的内部时钟电路,其中电容主要起到滤波、微调以及利用其充放电过程帮助单片机晶振启振

16、的作用 1 。对于单片机的P0口,可以作为地址/数据总线使用,也可以作为一般的I/O口使用。但当其作为I/O使用时,由于输出属于开漏电路,无上拉电阻故也无法进行高低电平的操作,此时必须接上拉电阻,一般阻值选为10K。但P0口不能同时作为地址/数据总线和I/O使用。本设计利用口的I/O功能 2 。2.2 霍尔传感器单元A44E 属于开关型的霍尔器件,其工作电压范围比较宽(4.518V),其输出的信号符合TTL电平标准,可以直接接到单片机的I/O 端口上,而且其最高检测频率可达到1MHZ3 。 A44E 集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输

17、出E五个基本部分组成。在输入端输入电压Vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。当施加的磁场达到工作点时,触发器输出高电平,三极管导通, OC门输出端输出低电压,这种状态为开;当触发器输出低电平时,三极管截止,OC门输出高电压,这种状态为关 4 。这样两次电压变换,使霍尔开关完成了一次开关动作。A44E霍尔传感器原理如图2-2所示。图2-2A44E霍尔传感器原理里程计算主要通过霍尔传感器A44E

18、检测完成,出租车车轮每旋转一周,霍尔传感器A44E便产生一相应的脉冲输出,并把该脉冲交由单片机进行处理,单片机则根据程序设定,通过计算脉冲个数换算出已行驶里程:里程=脉冲个数*出租车车轮周长。其原理如图2-3所示。图2-3传感器测距示意图本系统选择将A44E的脉冲输出端接到P3.2口,即做为定时器/计数器1的输入端,车轮每转一圈(设车轮的周长是2米),霍尔开关便输出一低电平信号,然后利用单片机定时器1对该脉冲计数,当计数达到500次时,则达到1公里,单片机将自动刷新里程、总金额等信息。2.3 掉电存储单元AT24C02的作用是在电源断开的时候,存储当前设定的总金额,等待时间,运行里程以及单价等

19、信息。AT24C02 是Ateml公司的2KB的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8 脚的DIP 封装,使用方便。AT24C02芯片引脚配置如图2-4所示。图2-4 AT24C02引脚配置图图中R4、R5 是上拉电阻,其作用是减少AT24C02 的静态功耗。由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,只用两根线SCL(时钟脉冲)和SDA(数据/地址)与单片机P3.6和P3.7口连接,进行传送数据时遵守I2C总线协议。每当设定一次单

20、价,系统就调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。事实上AT24C02为典型的支持I2C总线的器件,对其进行编程时需遵守I2C总线的时序要求,以及I2C委员会对各种I2C芯片的地址分配规则。现把I2C总线与AT24C02的通讯时序、通讯规则简要介绍如下:1. I2C总线节点的寻址字节主机产生起始条件后,发送的第一个字节为寻址字节。该字节的头七位为从机地址,对于AT24C02来说高四位为1010,它是I2C总线器件的固有地址,紧接着是A1、A2、A3通过接地或者高电平决定外围器件的地址数据,第八位是读

21、写控制为,当为0是表示主节点向从节点发送数据,当为1时表示要接收数据。2. I2C总线数据传输的格式(1) 主控器的写数据格式:首先由主机发送起始信号当SCL为高电平时,SDA由高到低有跳变;然后发一个寻址字节,当收到应答信号后发送数据,其中应答信号为当SCL为高时SDA传送0,并持续4.7us以上;当主机产生停止信号时,数据传送结束,停止信号是当SCL为高电平时SDA有一个由低到高的跳变。(2)主控器的读数据格式:与写数据的不同之处在于数据发送结束和停止位之间加一个非应答位,表示数据发送结束,格式为当SCL为高时SDA传送1,并持续4.7us以上。 3. 要特别注意的是SDA和SCL都是双向

22、传输线,平时均处于高电平备用状态,只有当需要关闭时才使其钳制在低电平,且仅在SCL为高电平时数据才能传送,而当SCL为低电平时才允许数据发生变化。2.4 键盘调整单元当单价等信息需要进行修改时,就要用到键盘。由于调节信息不多,故采用5个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。电路原理如图2-5所示。图2-5 键盘调整单元接线图图中,键盘从上至下依次为:S0:接P1.0口,对上一次的计费进行清零,为下次载客做准备;S1:接P1.1口,通过对功能键S3按下次数的计数,实现单价数据的增大;S2:接P1.2口,通过对功能键S3按下次数的计数,实现单价数据的减小;S3:接P1.3口,按

23、1次,进入调整白天单价;按2次,进入调整夜晚单价;按3次,进入调整等待单价;按4次,进入调整起步价;按5次,返回。S4: 实现白天单价和夜晚单价的切换。需要注意的时,当按键按下和释放的瞬间都有抖动现象,一般来说,抖动的时间长短与键盘的机械特性有关,大约为5-10ms 5 。所以在实际编程时一定要注意键盘的去抖动。键盘去抖动有专用的延时电路,也有专门的延时芯片,也可以用软件去抖,考虑到电路的难易程度,从简化硬件的角度,本次设计采用软件去抖动,用一个短延时程序,进行键盘去抖操作。 2.5 显示单元显示单元由两个4位8段共阳数码管组成,电路连接时,公共端接高电平,因此我们需要点亮哪个发光二极管只需给

24、哪个二极管阴极送低电平,并采用动态扫描进行显示6。前三个数码管分别接P2.0、P2.1和P2.2,用于显示总金额;第四个接P2.3 ,显示等待时间;第五个和第六个数码管分别接P2.4和P2.5,用于显示里程,由于需精确到小数位,故最多只能显示9.9公里,但经过添加溢出指示,可计到20公里,在现实中已基本够用;后面两个数码管分别接P2.6和P2.7,用于显示单价。由于溢出指示是采用发光二极管是否点亮表示,故必须选好参数以确保发光二极管正常工作。根据元件手册(也可用万用表测量)查得,发光二极管点亮时压降为1.7V,点亮电流为3-20mA,取导通电流为5mA,所以限流电阻可选择为(5-1.7)/5=

25、660,故可选择限流电阻值510。 由于数码管内部二极管点亮时需要5mA以上的电流,而单片机的输出电流还不到1mA,所以数码管与单片机连接时需加驱动电路,可以使用上拉电阻的方法,也可以使用专门的驱动芯片,考虑到复用单片机I/O接口,节省单片机I/O资源,此次设计采用74HC573锁存器,其输出电流较大,电路接口简单且可直接驱动数码管显示。74HC573的引脚分布图2-6如下。图2-6 74HC573的引脚分布:为三态允许输入端(低电平有效),也可称作输出允许端;1D-8D为数据输入端;1Q-8Q为数据输出端;LE为锁存允许端。74HC573所对应真值表2-1如表。表2-1 74HC573真值表

26、INPUTOUTPUT LE DQL H LL L XH X XHQ0Z其中 :H高电平;L低电平;X任意电平;Z高阻态,既不是高电平也不是低电平,其电平状态由与它相连接的其它电气状态决定;Q0上次的电平状态。由真值表可以看出,当为高电平时,无论LE与D端为何电平状态,其输出均为高阻态,此时芯片处于不可控状态。做设计时必须使其处于可控状态,即应该接低电平。当为低电平时,若LE为H,则D与Q同时为H或者L,数据实现直通传送;而当LE为L时,无论D为何状态Q都保持上一次的数据状态,数据被锁存住,利用此特性即可实现对数码管的控制。本次设计中:段选信号LE接P1.5,对应图中标号P1.5;位选信号LE

27、接P1.6,对应图中标号P1.6。控制显示时先给P1.5高电平,使通道打开,接着送字码,然后把P1.5电平拉低,使字码保持住;之后打开P1.6(送高电平),紧接着送位码,控制要显示的位,然后把P1.6拉低,数据被保持。最后延时5ms;依次循环扫描;利用数码管点亮后的余晖和人眼视觉暂留效应即可实现动态显示。数码管动态显示电路如图2-7所示。图2-7 数码管动态显示电路12洛阳理工学院毕业设计(论文)第3章 软件设计3.1 系统主程序在主程序模块中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中断、计算、循环等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和

28、价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。当出租车运行后,就启动计价器,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价值和起步价来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待金额加到总金额里,然后将总金额、里程、等待时间和单价送数码管显示出来。程序流程如图3-1所示。图3-1 主程序流程图3.2 里程计数中断程序每当霍尔传感器输出一个低电平信号,单片机定时器0(工作在计数模式)就对其计

29、数一次,相应的变量设为inter就自加1,当里程计数器inter对里程脉冲计满500次时,对其自身进行清零操作,为下一次计数做准备,同时进入里程计数中断服务程序中,里程变量加1,总金额根据此时所设单价做出相应的变化。里程中断子程序如图3-2所示。图3-2 里程中断服务子程序3.3 中途等待中断程序在中途等待中断程序中,定时器1每50ms计一次数,每计够100次(5sec),便将当前里程值送入某个缓存变量,与前一个5秒的值进行比较,如果两者相同,则表明霍尔传感器没有输出信号,认为出租车停了下来,进入等待计时,计时中间变量dd自加1,计够12次为一分钟,dd自清零,同时根据所设的等待单价刷新总金额

30、。计数初值可有以下公式获得:X=(65536-t)*11.0592*106/12;TH=X/256; TL=X%256;其中:X表示计数初值,TH、TL分别为16位计数器高8位和低8位应装入的初值。用定时器作为基准,可使测试的等待时间更为精确(可以精确到uS级);且每隔5秒比较一次,能有效减小误判率,避免把汽车低速行驶误认为静止等待处理。中途等待子程序流程图如图3-3所示。图3-3 中途等待中断子程序流程图3.4 计算程序计算程序根据里程数分别进入不同的计算公式。如果里程大于3公里,则执行公式:总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等

31、待单价。程序流程图如图3-4所示。图3-4 计算程序流程图3.5 显示程序由于8位数码管所有段选皆有8位的P0口进行控制,因此,在每一瞬间,8位LED会显示同一个数字。要想每位显示不同的字符,就必须采用动态扫描的方法轮流点亮各位LED,即在每一时刻只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字符码),而位选则控制I/O口在该显示的位送入选通电平,以保证该位显示显示相应字符。如此循环操作,使每位分时显示该位应该显示的字符 7 。在本次设计中显示程序利用延时程序,每隔5ms刷新一次,相应的数码管点亮,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼

32、暂留现象,给人看上去每个数码管总是在亮,以实现动态显示。3.6 键盘程序键盘采用查询的方式,放在主程序中,当有按键按下的时候,在相应I/O口产生一次低电平,当单片机查询出该低电平后便转入进行处理,处理结束返回。键盘程序流程图如图3-5。 图3-5 键盘程序按键检测流程图3-6所示。图3-6 按键检测子程序流程图19第4章 调试改进过程及运行结果分析4.1 动态扫描的调试和分析动态扫描是单片机编程中最基本的知识,虽对其原理有比较清晰的掌握,也曾用汇编语言写过程序,但此次用C语言编写还是出现了错误。第一就是把段码和位码顺序送反,结果是只有在延时时间较长时才能显示正常,当然这样的代价是没有静态的效果

33、;第二就是用动态扫描时给八个数码管送了10个数,显然这样做结果必定混乱;最后就是开始时用switch、case语句实现动态扫描,当程序较小时可以正常工作,但当后期程序较大时,出现了时序混乱的问题。最后解决的方法是用了锁存器,显示结果正常为固定的预设的八个数字。4.2 AT24C02的编程与调试对AT24C02编程对我来说是一个比较新知识点,遇到了不少问题, 这里仅把经验教训简要介绍一下。首先是一定要对I2C总线时序有较深刻了解后再尝试编程,第二就是要注意向 AT24C02写一个字和读一个字的区别,当从 AT24C02读数据时一定要注意,当读完时从机 AT24C02一定要发送一个非应答信号表示数

34、据读完。调试的方法是在指定地址写一个数字再看能是否读出,当显示程序编写好后,可以在Ptoteus中用数码管显示看是否与分析一致,也可以把读出的数据赋给某个变量,再通过在keil中执行view/watch&call stack window 调出相应变量观察。4.3 按键查询功能的实现按键查询比较容易实现,只要注意1. 按键结束后注意退出按键处理;2.不要陷入死循环,即避免显示一个数据后退不出来;3.在做实际键盘时要注意按下去抖和释放去抖。按键去抖可通过以下语句实现: if(key=0) delay(5); if(key=0) while(!key); delay(5); while(!key)

35、; 按键处理程序 4.4 计算程序的分析与设计由于里程和单价都精确的小数点后一位,而显示时仍按整数显示,只不过人为的加入 &0x7f(共阳极时加入&0x7f,共阴极时加入 |0x)控制是否显示小数点儿,故实际计算时要做适当改动。改动如下:1. 当里程值大于30(实际对应大于3公里)且无进位时,溢出指示灯不亮,总金额=起步价+(里程十位数字-2)*运行单价+等待单价*等待时间;2. 当里程值小于30(实际对应小于3公里),肯定无进位,溢出指示灯不亮,总金额=起步价+等待单价*等待时间;3. 有进位,溢出指示灯点亮,表示里程一定大于三公里,只需执行总金额=起步价+7*运行单价+(里程十位数字+1)

36、*运行单价+等待单价*等待时间即:总金额=起步价+(里程十位数字+8)*运行单价+等待单价*等待时间;4.5 结果分析与性能改进经过反复调试验证,基于STC89C52单片机控制设计的出租车计价器满足了所有预设性能指标,具有较好的抗干扰性,价格也较为合理,具有很好的工业开发和市场前景。可以改进的地方可能有很多;就我现在所思考的可从以下两个方面加以考虑: 1. 尝试着把两个锁存器74HC573去掉,当然不能影响整个计价器的功能,这样会使硬件电路更简洁,成本也会更低,符合实际中的最大利润空间定理。2. 设计板时把键盘和显示器放在芯片和其它电路的反面,这样封装成实际产品时可把人机接口留在外面,更人性化

37、,也符合人们的习惯。4.6 计价器系统的仿真当各个子模块都实现后,联调则主要是看当把他们融合在一起时是否会有时序上的冲突,以及可能存在的分析不周全的地方。本次设计联调时出现的问题主要有:第一是显示时存在时序上的冲突,详见4.1第三点;第二就是中断设置时出现混乱,即同时用定时器0,定时器1,和外部中断1时,后两者都不再工作(通过编一个方波程序,发现定时器1即P3.5无跳变),解决方法时让定时器1工作在计数方式代替工作在定时方式,如此不但可以完成相应功能,解决了问题,更重要的是省去一个中断,简化了程序设计。调试完成后在Proteus 7.5 上仿真结果如图4-1,4-2,4-3,4-4所示。图4-

38、1里程无溢出时仿真结果(小于三公里)图4-2里程无溢出时仿真结果(大于三公里)图4-3里程溢出时仿真结果(大于十公里)图4-4 单价调整(起步价)69结论经过近几个月的设计,在多位老师和同学的帮助下,全面实现了预先设定的计价器应具有的功能,且满足了所有设计指标。1. 能准确计算出出租车运行里程;2. 实现了单价可调,里程精确到0.1公里,并可以对等待时间进行计时;3.利用I2C总线通过EEPROM-AT24C02对存储空间进行了扩展,使其具备掉电存储功能。4. 有完整的软件仿真结果和硬件电路,并用Protel设计出了系统原理图,制作了PCB板。通过对基于Proteus 7.5的仿真和实际电路的

39、测试结果分析,表明用此方法设计的计价器。实现了单价可调,掉电保持,计程精度达到0.1公里,此外还增加了等待计时功能,白天夜晚单价自动切换,并且能实时显示总金额,等待时间,运行里程,运行单价等详细信息;且能很方便的在不改变硬件电路的情况下通过改变软件实现计价精度的提高,进行功能上的扩展,如可把现有的计价器转变为计速器,完善的功能使得基于STC89C52单片机的出租车计价器的通用性和实用性有着无可比拟的优势,具有很高的现实意义和很好的市场前景。当然设计存在不少缺陷,做如下改进。1. 应尝试着在不影响整个计价器的功能的前提下把两个锁存器74HC573去掉,这样会使硬件电路更简洁,成本也会更低。2.

40、PCB板中如果把键盘和显示器放在芯片和其它电路的反面,这样封装成实际产品时可把人机接口留在外面,更人性化,也符合人们的习惯。 谢 辞在此次设计中,陈文清老师作为我的指导老师,至始至终都给予我了不少帮助,从下任务书开始,就帮我制定规划,提醒我应注意的问题;借给我资料,帮我联系硬件;和我一起调程序,并提出了很多的修改意见以及完善方案;此外还认真批阅了我的论文,指出其中很多瑕疵和不清晰的地方;更重要的是在我遇到困难时对我的鼓励,让我不懈怠、不退缩、也让我更有信心;可以说我的每一点进展都与陈老师的付出是分不开的。当然还在此,我向身边关心我的老师、同学致以诚挚的谢意!最后感谢母校对我这几年的辛勤培养。有

41、其他老师和同学,都帮了我不少忙,在此不再赘述。谨祝老师们工作顺利,万事如意,桃李满天下;同学们学业有成,前程似锦! 参考文献1 李朝青. 单片机原理及接口技术(第三版). 北京: 北京航空航天大学出版社, 20082 郭天祥. 51单片机C语言教程. 北京:电子工业出版社, 20083 单成祥, 牛彦文. 传感器设计基础. 北京: 国防工业出版社, 20074 窦振中. 单片机外围部件实用手册输出通道器件分册. 北京:北京航空航天大学出版社.2003.5 杨素行.模拟电子技术基础简明教程.(第三版).北京:高等教育出版社, 20056 阎石.数字电子技术.(第五版).北京:高等教育出版社, 2

42、0067 张一斌, 余建坤.单片机原理课程设计 .长沙:中南大学出版社, 20088 万隆, 巴奉丽. 单片机原理及应用技术.北京:清华大学出版社, 20089 马淑华, 王凤文, 张美金. 单片机原理与接口技术(第二版). 北京:北京邮电大学出版社, 200710 陈威. 基于单片机的电子密码锁的设计:毕业论文 .浙江:浙江科技学院, 200911 高炎萃, 武一. 基于单片机的电机保护装置设计. 四川理工学院学报, 2009,第23卷第1期12 谭浩强. C程序设计(第三版). 北京: 清华大学出版社, 200513 刘宏,余勤科. Protel电路设计使用指南. 西安: 西安电子科技大学

43、出版社, 200014 赵伟军. Protel99E教程. 北京: 人民邮电出版社, 200415 龙脉工作室. Protel99S入门与典型实例. 北京: 人民邮电出版社, 200816 谭浩强著. C程序设计M. 北京: 清华大学出版社, 200517 张友德, 赵志英,涂时亮著. 单片微型机原理应用与实验M. 上海: 复旦大学出版社, 2006.1018 吴戈李, 玉峰编著. 案例学单片机C语言开发M. 北京: 人民邮电出版社, 2008.1019 孙余凯. 传感器应用电路300例M. 北京: 电子工业出版社,2008.20 田立. 51单片机C语言程序设计快速入门M. 北京: 人民邮电

44、出版社, 200721 Chirs J. Georgopoulos. Interface Fundamentals In MicroprocessorControlled SystemM. D.Reidel Publishing Company, 1985 附 录A 系统原理图附 录B 仿真图PCB板附 录C 系统源程序#include#include #define uchar unsigned char#define uint unsigned intuchar code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/uchar code table2=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/sbit exter=P33; /sbit fangbo=P35;sbit key0=P10; / 清零sbit key1=P11; / +sbit key2=P12; / -sbit key3=P13; / 功能键sbit key4=P14;/ 切换sbit led=P17; /里程溢出指示/sbit dula=P30; /sbit wela=P31 ;sbit dula=P15; sbit wela=P16 ;sbit Sda=P37;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1