基于单片机出租车多功能计价器设计

更新时间:2024-05-13 14:33:01 阅读量: 综合文库 文档下载

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

大连理工大学城市学院

本科生毕业设计(论文)

学 院:电子与自动化学院 专 业:自动化

学 生:

指导教师:刁立强

完成日期:

姜美芹 2013年6月6日

大连理工大学城市学院本科生毕业设计(论文)题目

基于单片机出租车多功能计价器设计

总计 毕业设计(论文)32 页 表格 6 表 插图 26 幅

摘 要

随着社会的高度发展,出租车已经成为人们日常生活中必不可少的代步工具,但由于各个地方的生活水平不同,导致物价存在一定的差异,因此出租车的计费标准也不尽相同。这就要求我们设计出简易化、智能化、计价精确、可移植、可靠性高的出租车计价器。

本次设计利用软件设计和硬件设计相结合,设计出具有性能可靠、电路简单、成本低等特点的多功能计价器。由单片机AT89C51控制,使用12MHz 晶振提供时钟信号,利用装在车轮上的霍尔传感器A44E发出的脉冲个数来测速,因为本设计涉及到白天和黑夜的转换,通过AT24C02实现白天和黑夜单价的修改和存储,从而实现白天和黑夜不同的计费标准。另外AT24C02中的数据是不可随意更改的,具有防作弊的效果。通过C语言编程实现记时、里程检测、费用计算,同时通过LED数码管将里从而达到计费的目的。最后将总车费和总金额很直观的在LED数码管中显示出来,达到计价器计价收费的目的。而且,本次设计还通过DS1302,可以在不计价的情况下作为时钟显示时、分、秒,使驾驶员了解实时时间。系统包括控制模块、里程传感模块、掉电保护模块、独立键盘电路、电源电路、时钟显示模块部分。该系统设有五个按键(清除、查询/确认、停止、白天/黑夜、功能选择),进行相应的操作就可实现单程/往返模式选择、停止计费、等待时间查询、清除复位等功能,使操作简单方便。

关键词:单片机; 霍尔传感器A44E; LED数码管;DS1302

I

Abstract

With the high degree of social development, the taxi has become an everyday essential means of transport, but because of the different levels of each of the local life, causing prices there are some differences, so taxis are not the same accounting standards. This requires us to design a simple, intelligent, accurate pricing, portable, high reliability taxi meter.

The design of the software and hardware design using the combination of design with reliable performance, the circuit is simple and low cost multifunction meter. Controlled by the microcontroller AT89C51 using 12MHz crystal oscillator provides the clock signal, the use of a wheel mounted on the Hall sensor A44E number of pulses sent to the gun, as the design involves the conversion of the day and night, night and day to achieve through AT24C02 price changes and storage, day and night in order to achieve different billing standards. The data in another AT24C02 can not be changed, with the effect of anti-cheating. Through the C programming language in mind, the mileage testing, cost calculations, while the inside through the LED digital tube so as to achieve the purpose of billing. Finally, the total amount of the total fare and very intuitive in the LED digital tube display, to achieve the purpose of the meter valuation fees. Moreover, this design also adopted DS1302, can not denominated in the case as the clock displays hours, minutes, seconds, the driver understand real-time. System comprises a control module, mileage sensing module, power protection module, separate keyboard circuit, power circuit, the clock display module section. The system has five buttons (Clear, check / confirm, stop, day / night function selection), the appropriate action can be achieved one way / return

II

mode selection, stop charging, waiting time queries, clear Reset function. make operation simple and convenient.

Keywords: microcontroller; hall sensor A44E; LED digital tube; DS1302

III

目录

第一章 引言 .............................................. 1

1.1出租车简介 ............................................ 1

1.1.1出租车计价器概述 ................................ 1 1.1.2出租车计价器的工作原理 .......................... 1

1.2 单片机简介 ......................................... 2

1.2.1单片机的基础知识 ................................ 2 1.2.2单片机的发展历史、趋势及应用 .................... 2 1.2.3 MCS-51 单片机的应用特性 ......................... 3

1.3设计目的及要求 .............................. 4

1.3.1设计任务 ........................................ 4 1.3.2 设计要求 ........................................ 4 1.3.3系统主要功能 .................................... 5

第二章 计价器硬件设计 .................................... 6

2.1.出租车计价器方案论证 ................................. 6 2.2 系统的硬件构成及功能 ................................. 8 2.3 AT89C51单片机及其引脚说明 ............................ 8 2.4 AT24C02掉电存储电路设计 ............................. 11 2.5里程计算、计价单元的设计 ............................. 13 2.6电源电路设计 ......................................... 15 2.7独立键盘电路设计 ..................................... 16 2.8指示灯电路设计 ....................................... 16 2.9数码管显示电路设计 ................................... 17 2.10 DS1302时钟电路设计 ................................. 20

第三章 系统的软件设计 ................................... 23

3.1 系统主程序设计 ...................................... 23 3.2 定时中断服务程序 .................................... 24

3.3 里程计数中断服务程序 ................................ 25 3.4 中途等待程序 ........................................ 27 3.5 键盘扫描子程序 ...................................... 28 3.6计算程序 ............................................. 30

结束语 ..................................................... 32 致谢 ....................................................... 33 参考文献 .................................................. 34 附录 多功能计价器程序设计 ............................. 35 设计原理图 ................................................ 55

基于单片机出租车多功能计价器设计

第一章 引言

本次毕业设计利用单片机知识作为理论支撑来实现一台多功能出租车计价器设计,使之具有性能可靠、电路简单、成本低、使用方便等特点。

1.1出租车简介 1.1.1出租车计价器概述

计价器显示的总金额是总里程与不同情况下的单价(白天、黑夜、中途等待)的函数。出租车计价器通过里程传感器与车轮连接。出租汽车的实际里程通过传感器的脉冲信号在计价器里按照设定的函数转换成一定的总里程。出租车计价器功能主要有具有数据的复位功能、白天/黑夜转换功能、数据输出功能、计时计价功能等等,在原有功能的基础上增加单价输出、单价调整、路程输出、显示当前的系统时间等功能。

1.1.2出租车计价器的工作原理

当汽车运行起来时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待价格加到总金额里,然后将总金额、里程和单价、白天黑夜价格送数码管显示出来。

1

基于单片机出租车多功能计价器设计

1.2 单片机简介 1.2.1单片机的基础知识

单片机结构包括:输入设备,运算器,输出设备,控制器,内存。 1946年第一台计算机诞生,经历了电子管、晶体管、集成电路、大规模集成电路、超大规模集成电路的过程

1.2.2单片机的发展历史、趋势及应用

①历史:

1974年12月,美国仙童(Fairchild)公司推出了世界上第一台8位单片机F8。单片机的发展过程分为以下几个发展阶段。 1、第一代单片机(1974—1976年)

单片机发展的起步阶段。集成度也较低,并且采用了双片形式。 代表产品有Fairchild公司的F8和Mostek公司的3870等。 2、第二代单片机(1976—1978年) 是单片机的发展阶段。

最典型的产品有Intel公司的MCS-48系列单片机。 3、第三代单片机(1979一1982年) 是8位单片机的成熟阶段。

代表产品有Intel公司的MCS-51系列机、Motorola公司的MC6801系列机、Zilog公司的Z8系列机等。 4、第四代单片机(1983年以后)

1983年以后是16位单片机和8位高性能单片机并行发展的时代。 ②趋势:

目前,单片机正朝着高速度、高性能和多品种方向发展,单片机的发展趋势具体体现在以下四个方面:

(1)4位、8位、16位、32位单片机共存,并各有自己的生存空间。 (2)CPU功能不断增强、运行不断速度提高。

2

基于单片机出租车多功能计价器设计

(3)内部资源增多,增加存储器容量、片内外设如AD、DA、LED/LCD驱动、DMA、PWM、WDT 。

(4)引脚的多功能化 (5)低电压和低功耗

(6)结合ASIC和RISC技术,使单片机的应用范围进一步扩大。 ③应用:

单片机具有集成度高、结构简单、可靠性高、控制功能强、应用灵活方便和价格低等优点,因此广泛应用于国民经济的各个领域。单片机的应用提高了机电设备的技术水平和自动化程度,对各行各业的技术改造和产品更新换代起到了重要的推动作用。

1.单片机特别适用于机、电、仪一体的智能产品 (1)单片机在日常生活中的应用 (2)单片机在数据处理方面的应用 (3)单片机在智能化的仪器仪表中应用 2.单片机在工业控制中的应用

单片机成功地应用于玩具、游戏机、无绳电话、充电器、按摩器、IC卡电话、IC卡水表、IC卡煤气表、IC卡电度表、流量温控仪表、家庭自动化、电子锁、电子秤、步进电机、防盗报警、电子日历时钟等这些日常生活的产品中。

图形终端、彩色黑白复印机、软盘及硬盘驱动器、磁带机、打印机的内部都采用单片机进行控制。

在各类仪器仪表中(包括医疗器械、色谱仪、温度、湿度、流量、流速、电压、频率、功率、厚度、角度、长度、硬度、元素测定等)引入单片机,使仪器仪表数字化、智能化、微型化,功能大大提高。[1]

1.2.3 MCS-51 单片机的应用特性

由于MCS-51系列单片机具有体积小、功能全、价廉、面向控制、应用软件丰富、技术在不断更新、开发应用方便等优点,可以适应各个

3

基于单片机出租车多功能计价器设计

应用领域的不同需要,因而具有极强的竞争力和生命力,应用前景广阔。今后它仍将是科技界、工业界广泛选择应用的8位微控制器,仍将是单片机应用的主流机种。各高校实验室大多都配备了MCS-51系统仿真实验装置。所以,它今后仍将是高等院校教材的首选内容之一。[1]

1.3设计目的及要求 1.3.1设计任务

设计一款基于AT89C51单片机的多功能出租车计价器。

1.3.2 设计要求

1.用前4位数码管实时显示里程数(Z),单位为公里,最后一位为小数位; 用后4位数码管时时显示金额数(J),单位为元,最后一位为小数位。格式:XXX.X 公里 XXX.X元

2.规定出租车白天价格为2元/公里,黑夜则价格为1.5元/公里;白天/黑夜分别由“白天” 按键和“黑夜” 按键设定。

3.(1)不同情况具有不同的收费标准。

白天规定出租车单程价格为2元/公里,黑夜则价格为1.5元/公里起步公里数为3公里,价格为8元;若实际运行大于3公里, 按“设计任务2”计算价格。途中等待 车速<5公里/小时的时间累积为总等待时间T(分钟), 每五分钟等待时间相当于里程加1公里。 (2)能进行手动修改单价。(AT24C02) (3)具有数据的复位功能。 (4)IO 口分配的简易要求 距离检测使用霍尔开关A44E 白天/黑夜收费标准的转换开关 数据的清零开关

单价的调整——起步价、里程计费单价、等待时间计费单价 (5)数据输出

4

基于单片机出租车多功能计价器设计

? 前4位数码管实时显示里程数(Z),单位为公里,最后一位为小数位;

后4位数码管时时显示金额数(J),单位为元,最后一位为小数位。 (6) 按键 功能键P1.0;

白天黑夜切换键P1.1; 停止键P1.2; 清除键P1.3; 查询、确认键P3.0 (7) LED指示灯 空车P1.4;

查询P1.5; 等待P1.6;

黑夜指示灯(仅晚上亮)P1.7 4.发挥部分

(1) 能够在掉电的情况下存储单价等数据。 (2) 能够显示当前的系统时间。 (3) 增加了指示灯提示功能

1.3.3系统主要功能

本课程设计所设计的出租车计价器的主要功能有:数据的复位、白天/晚上转换、数据输出、计时计价、单价输出及调整、路程输出,实现在系统掉电的时候保存单价和系统时间等信息等功能。输出采用8 段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。

5

基于单片机出租车多功能计价器设计

第二章 计价器硬件设计

2.1.出租车计价器方案论证

方案一: 采用数字电路控制。用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现;性能不够稳定,而且使用数字电路实现时整体规模大,使用器件多,难调试,出现故障时,不易发现原因,不利于维修。

里程传感器 电源电路及保护电路 金额显示 单价显示 移位寄存器 图2-1数字电路方案图

电路过于简单,性能不够稳定,而且不能够调节单价,也不能根据白天黑夜中途等待转换计费标准,电路不够实用。

方案二:出租车驱动轮转数与转轴转数的传动比是一定的,磁感应传感器会产生一个大约20 ms的低脉冲,通过计算磁感应传感器产生的低脉冲数来计算出租车跑的里程数及相应的车费。编码器的单片机通过一个I/O口来检测磁感应传感器信号,当确定为传感器产生的信号时,就通过另一个I/O口向解码器的单片机发送一组编码,而解码器的单片机则首先判断当前准备接收的数据是编码器发送的编码还是解码写入器发送的解码。当判断是解码写入器发送的解码时,解码器的单片机接收此解码,并利用12C总线协议将解码保存到EEPROM中去;当判断是编码器发送的编码时,解码器的单片机先接收此编码,然后读出EEPROM中的解码,将其与接收到的编码相比较,如果相同则解码器单片机通过一个I/O口向计价装置发出计价脉冲,否则不发出计价脉冲。

6

基于单片机出租车多功能计价器设计

磁感应传

解码写入器 感器 编码器 解码器 计价脉 冲 计价 装置

图2-2编码器方案图

此方法通常使干扰信号也能产生计数脉冲,分立元件过于复杂,电路稳定性不好。

方案三: 采用单片机控制。利用单片机丰富的I/O 端口来实现基本的里程计价功能和价格调节功能。相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。设计采用AT89C51单片机为主控器, A44E霍尔传感器测距,实现对出租车的基本的计价设计,并采用AT24C02实现掉电保护,输出采用8段数码显示管动态显示。根据按键转换白天/黑夜/中途等待来选择不同的工作模式。

时钟电路 复位电路 按键控制 显示总里程和总金额 89C51 单片机 显示模块 掉电保护

图2-3单片机方案图

通过比较以上三种方案,单片机方案有较大的活动空间,I/O端口丰富,且控制灵活。不但能实现所要求的功能而且能在很大的程度上扩展功能, 而且还可以方便的对系统进行升级, 所以我们采用最后一种方案。

7

基于单片机出租车多功能计价器设计

2.2 系统的硬件构成及功能

本系统的硬件设计主要包括单片机AT89C51、数码管显示、A44E霍尔传感器电路、AT24C02 掉电存储单元的设计、里程计算及计价单元的设计。在硬件设计过程中,充分利用各部件的功能,实现多功能的出租车计价器设计。

利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。总体方案图如图2-4:

电源 键盘控制 AT89C51 数码管显示 里程计量电路 晶振电路 指示灯电路 掉电保护电路 DS1302时钟 复位电路 图2-4 总体方案图

2.3 AT89C51单片机及其引脚说明

AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000

8

基于单片机出租车多功能计价器设计

次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[13]。下面是关于AT89C51的引脚图图2-5。

图2-5 AT89C51的引脚图

AT89C51芯片的40个引脚功能为: VCC 电源电压。 GND 接地。

RST 复位输入。当RST变为高电平并保持2个机器周期时,将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISKRTO位缺省为RESET输出高电平打开状态。

XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2 来自反向振荡放大器的输出。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于

9

基于单片机出租车多功能计价器设计

外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序处理器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能的寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2-1所示。P3口还接收一些用于Flash闪速存储器编程和程序校验期间的控制信号。

10

基于单片机出租车多功能计价器设计

表2-1 P3口特殊功能 P3口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 特殊功能 RXD(串行输入口) TXD(串行输出口) (外部中断0) (外部中断1) T0(定时器0外部输入) T1(定时器1外部输入) WR(外部数据存储器写选通) RD(外部数据存储器读选通) PSEN/ 程序储存允许输出是外部程序存储器的读先通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN/有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN/信号。

EA/VPP 外部访问允许。欲使CPU仅访问外部程序存储器,EA端必须保持低电平,需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。Flash存储器编程时,该引脚加上+12V的编程电压VPP。

2.4 AT24C02掉电存储电路设计

①AT24C02芯片引脚配置如图2-6所示

图2-6 AT24C02引脚配置图

11

基于单片机出租车多功能计价器设计

AT24C02芯片DIP封装,共有8个引脚,管脚描述如下:

表2-2 AT24C02管脚描述 管脚名称 A0、A1、A2 SDA SCL WP Vcc GND 功能 器件地址选择 串行数据/地址 串行时钟 写保护 +1.8V~6.0V工作电压 接地 SCL:串行时钟端,用于对输入和输出数据的同步。在SCL上升沿时,把数据写入EEPROM,在SCL下降沿时,把数据从EEPROM中读出。

SDA:串行数据I/O端,用于输入和输出串行数据。当SCL为高,SDA由高电平变成低电平(下降沿),为起始信号;当SCL为高,SDA由低电平变成高电平(上升沿),为终止信号。

WP:写保护。通过此引脚可提供硬件数据保护。当WP接地时允许芯片执行一般的读写功能。当WP接VCC时,对芯片实行写保护。WP接地是因为WP为写保护引脚,由于AT24C02不具有写保护功能,所以经该引脚接地。采用I2C总线与AT89C51相连[15]。

②AT24C02 掉电存储单元的设计

掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。AT24C02 是ATMEL公司的2KB 字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40 年以上,而且采用8 脚的DIP 封装,使用方便。其电路如图2-7所示。

图 2-7掉电存储电路原理图

12

基于单片机出租车多功能计价器设计

由于在EEPROM内部,SCL和SDA是漏极开路结构的,所以,使用时需要外接上拉电阻。图中R11、R12是上拉电阻,其作用是减少AT24C02 的静态功耗,由于AT24C02 的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。

每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。由于保存在24C02 中的数据是不能随意进行改动的, 因此它具有防作弊功能。此外出租车营运过程中的一些营运数据, 如: 单次出租的营运额和营运里程、一段时间内的营运总额和总路程等, 也存储在24C02 中, 以便出租车公司及司机查询, 使出租车司机更方便的管理营运数据, 出租车行业得到更有效的管理。

2.5里程计算、计价单元的设计

信号采集主要是通过传感器对采集车轴转数,通过主机模块进行计算,从而得出里程,金额等信息。通过对传感器的工作方法研究发现,传感器A44E是比较符合条件。其工作原理图如图2-8所示:

图2-8 霍尔传感器工作原理图

霍尔传感器以霍尔效应为原理,根据霍尔效应原理,当霍尔片处在磁场中时,霍尔传感器的输出端输出低电平。当车轮转动一圈时小磁铁

13

基于单片机出租车多功能计价器设计

数码管接P0口作为段选,接P2口作为位选。空车时显示当前时间,开始计价时前四位显示里程,后四位显示金额。当查询等待时间时显示为等待时间。如图2-17所示。

图2-17数码管显示电路图

由于数码管内部二极管点亮时需要10mA以上的电流,而单片机的输出电流还不到1mA,所以数码管与单片机连接时需加驱动电路,可以使用上拉电阻的方法,也可以使用专门的驱动芯片,考虑到复用单片机I/O接口,节省单片机I/O资源,此次设计采用74HC573锁存器驱动LED数码管段选端,其输出电流较大,电路接口简单且可直接驱动数码管显示。 用三极管驱动LED数码管的位选端。因而本次数码管显示部分用到三极管驱动电路、8位数据锁存器74HC573锁存电路、8位LED数码管显示,74HC573用于连接51单片机和LED数码管,51单片机的P0.0~P0.7分别顺序对应数码管的a~g和dp,当位P0.0为1时,对应A段点亮,以次类推。74HC573的管脚图如图2-18所示:

19

基于单片机出租车多功能计价器设计

图2-18 74HC573管脚图

OE:为三态允许输入端(低电平有效),也可称作输出允许端; 1D-8D为数据输入端; 1Q-8Q为数据输出端; LE为锁存允许端。

本次设计中LE接高电平,OE接低电平。74HC573的真值表如表2-5所示,其中H表示高电平,L低电平,Qo数据保持不变,Z高阻态。 表2-5 74HC573真值表 Dn H L X X LE H H L X

OE L L L H Qn H L Qo Z 2.10 DS1302时钟电路设计

计价器在出租车空车行驶时需要显示实时时钟,因为它的时钟作为白天/晚上单价自动转换的一个基准,且计价器的时钟显示能为司机和乘客提供方便。DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,采用SPI三线接口与CPU进行同步通信;始终可提

20

基于单片机出租车多功能计价器设计

供秒、分、时;通过设置DS1302的控制/状态寄存器选择日历,时钟方式经过初始校准后即可工作使用;工作电压宽2.5~5.5 V,采用双电源供电(主电源和备用电源),并设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力,在没有主电源的情况下启用备用电源能保存时间信息及数据[14]。DS1302的管脚图如图2-19所示:

图2-19DS1302管脚图 表2-6 DS1302管脚说明 管脚名称 VCC1 VCC2 X1、X2 RST I/O SCLK GND

DS1302由VCC1或VCC2两者中的较大 者供电;当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

RST输入有两种功能。首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O

管脚功能 后备电源 主电源 振荡源 复位/片选线 串行数据输入输出端 输入端 外接电源地 21

基于单片机出租车多功能计价器设计

引脚变为高阻态。上电运行时在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),SCLK始终是输入端。本设计连接图如图2-20所示,其中CI和C2起微调晶振的作用[14]。

图2-20 DS1302电路图

22

基于单片机出租车多功能计价器设计

第三章 系统的软件设计

本系统的软件设计主要可分为主程序模块、定时计数中断程序、里程计数中断服务程序、中途等待中断服务程序、显示子程序服务程序、键盘服务程序六大模块。下面对各部分模块作介绍。

3.1 系统主程序设计

本设计中采用了主程序调用各个子程序的方法。在main函数编写开始,要进行初始化,包括对系统初始化和对硬件设备进行初始化,并使硬件处于就绪状态。在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化中断向量的设计以及开中断、循环等待等工作。主程序流程图如图3-1所示:

开始

初始化

数据处理

等待计时

键盘扫描

结束

图3-1 主函数流程图

23

基于单片机出租车多功能计价器设计

void main() {

uchar i=0;

KongChe_Led=0; init_device(); }

SDA = 1; SCL = 1; while(1) { }

data_process(); keyscan();

3.2 定时中断服务程序

在定时中断服务程序中,每 10ms 产生一次中断,当产生 100次中断的时候,也就到了一秒,送数据到相应的显示缓冲单元,并调用显示子程序实时显示。 当选择定时/计数器作为定时器工作时,计数器的加1,信号由振荡器(晶振)的12分频产生,即每经过1个机器周期,计数器增1,直至计数溢出为止。显然,定时器的定时时间与系统的振荡频率有关。 本设计的晶振频率为12MHZ。由于晶振的频率为12MHz,则计数周期为: T=1/(12000000Hz)*12=1us ,本设计选用定时器0,TMOD=0X11, 选用模式1,故T0、T1为16位计数器,计数最大值为65536 。要定时 10 ms,需要计数10000个1us(计数周期) 计数初值=最大值-计数周期数=65536-10000=55536

55536转换为十六进制即为D8F0,计数器从D8F0开始计数,计数到65536溢出,产生定时中断。定时中断服务程序流程图如图3-2所示:

24

基于单片机出租车多功能计价器设计

开始 保护现场 重置计数初值 否 中断100次 是 数据送显示子程序 调用子程序 恢复现场中断返回

图3-2 定时中断服务程序流程图

3.3 里程计数中断服务程序

每当霍尔传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满1000 次时,使微机进入里程计数中断服务程序中。在该程序中,需要完成当前行驶里程数和总额的累加操作,并将结果存入里程和总额寄存器中。

本设计是用外部中断INT0测量从P3.2引脚输出的负跳变信号累计数,要使用外部中断,必须对中断允许控制寄存器IE和定时器/计数器控制寄存器TCON进行如下设计: void int0_init()

25

基于单片机出租车多功能计价器设计

{ EX0=1; }

//外中断0 允许

IT0=1; //外中断0 触发方式设为 下降沿触发 每当车轮转动一圈,车轮的磁铁与霍尔传感器感相遇时,霍尔传感器就会产生一个下降沿的脉冲信号。脉冲信号传到P3.2引脚,外部中断请求源INT0,单片机就会产生一次中断。根据源代码: void int0() interrupt 0 using 1 INT0——霍尔脉冲计数 { EA=0; Count++; EA=1; if(count=1000) {count=0; }}

Count为车轮转动圈数,总路程等于圈数乘以车轮周长,把总路程的数据送到里程相识单元显示。再按照里程收费标准,将价格数据送到计费显示单元。里程技术中断服务程序流程图如图3-3所示:

开始

初始化 N 中断请求? Y开外中断 Count++ N Count=10000? Y Count=0

图3-3 里程计数中断服务程序流程图

26

基于单片机出租车多功能计价器设计

3.4 中途等待程序

当出租车的速度5km/h时,等待时间开始计时,出租车进入中途等待模式时,片内的T0定时启动,中途等待程序流程图如3-4所示:

开始 定时器T0启动 是 1s到了吗? 否 加1处理 否 60s到了吗? 是 分钟数加1 数据送显示子程序 返回 图3-4 中途等待程序流程图

27

基于单片机出租车多功能计价器设计

void timer0() interrupt 1 using 2 T0等待时间计算 {

TH0=0XD8; TL0=0XF0; Count1++;

if(Count1==100) 脉冲记满100 {

Count1=0; 脉冲清零 Second++; 加一秒

if(Second==60) 有60S? {

Second=0; 秒清零 Minute++; 分加一 } } }

3.5 键盘扫描子程序

键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。键盘扫描子程序流程图如图3-5所示:

功能键。按下时进入白天黑夜选择模式,再按回到实时时间显示状态。

切换键。按功能键进入白天黑夜选择模式后再按此键可进行白天和黑夜之间切换。

停止键。运行状态按下此键即停止计程计费。

清除键。按下时清除里程和金额等数据信息,并将此次信息送入存储电路储存。

查询、确认键。功能选择模式时按下此键确认选择,运行时按下此键可查询等待时间,再次按下回到显示里程数、金额状态。

28

基于单片机出租车多功能计价器设计

图3-5 键盘扫描子程序流程图

29

基于单片机出租车多功能计价器设计

3.6计算程序

计算程序根据里程数分别进入不同的计算公式。如果里程大于3公里,则执行公式:总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等待单价;如果进入中途等待模式,每等待五分钟相当于加1公里,因为轮长设为1m,采集脉冲数为n,总里程=n*1/1000+等待分钟/5。计算程序流程图如图3-6所示:

调用计算程序 里程>3? 总金额=起步价 总金额=起步价 总金额+= (里程-3)*单价 总金额+=等待时间*等待单价 总金额+=等待时间*等待单价 返回

图3-6计算程序流程图

30

基于单片机出租车多功能计价器设计

void data_process() {

LiCheng=(uint)(Count*LunChang)/100+Minute*10/5; if(LiCheng<=30) }

{

JinEr=80; } else {

JinEr=80+(DanJia*(LiCheng-30))/10; }

31

基于单片机出租车多功能计价器设计

结束语

本次设计中,遇到了许多问题,有许多以前没有接触过的芯片,霍尔传感器A44E、DS1302、AT24C02以及8位锁存器74HC573,对于他们的管脚和用法还不熟悉,因此查阅了许多相关资料,在了解了各个部件的功能的基础上加以设计,最终完成了出租车计价器的设计。本次设计核心器件是AT89C51,采用软硬件相结合的原理,利用AT89C51的丰富的I/O口,控制灵活的特点,软件设计部分用C语言编程实现,硬件部分把各个模块分别与单片机的I/O口相连接。在设计硬件电路的时候,发现单片机的驱动电流太小,不足以驱动数码管里面的二极管显示,于是采用了三极管驱动电路和8位74HC573数据锁存器驱动,在设计键盘电路的时候,发现键盘在按下和释放的时候容易出现抖动,查阅资料是说可以通过C语言编程去抖,于是在键盘程序部分加入延时,起到了去抖的效果。在指示灯电路设计的时候,加入了空车指示灯,使乘客能够一目了然的知道出租车的运行情况,为乘客和司机提供了便利。在利用PROTUES仿真的时候因为把数码管选成了共阳(CA)的数码管,显示时候出现乱码。后来替换元器件改成共阴数码管(CC),不再出现乱码,但是A段却不显示,排查原因后发现是A段的网络标签没弄好。重新标识之后,数码管能够正常显示示数,切换不同的按键,能模拟不同的工作模式。原先设想再加入语音播报模块和打印机模块,使出租车计价器更具有多功能的特性,但由于本人的能力有限,最终没能有效的使他们衔接在一起,只好舍弃之前的想法,在今后的生活中还要继续学习,完善自己的知识面,不断给自己充电。

32

基于单片机出租车多功能计价器设计

致谢

通过不断努力,我终于完成了此次毕业设计。在此,首先感谢刁立强老师,正是他在百忙之中还抽出宝贵的时间对我进行精心的指导,才使我顺利完成了此次毕业设计。我从设计题目的选择,英文翻译,开题报告,方案确定,硬件电路设计以及软件编写,到仿真和最后论文定稿及重复修改等都得到了刁老师的悉心指导与教诲,感谢刁老师多次地为我指点迷津,帮助我开拓思路,精心点拨,热忱鼓励。同时也感谢各位同学和老师对我提供的帮助,使我在此次设计中学到了许多宝贵的知识和经验。在此,衷心地感谢你们!

最后,我还要也感谢百忙中审阅我论文的老师们,感谢老师们对我的教诲与鼓励!

33

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

Top