您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页出租车计价器论文

出租车计价器论文

来源:好走旅游网
 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

摘 要

出租车现在是我们出行最方便的交通工具,随着科技的进步,出租车的计价方式也发生了巨大的变化。从最早的按公交站牌公里数定价,到按里程表自由计价,再到计价器计算距离计价,现在已经有计价器自动打印的计价方式。

计价器作为出租车的一个重要组成部分,关系着出租车司机和乘客双方利益,起着重要的作用,因此,具有良好性能的计价器对广大出租车司机朋友来说是很必要的。采用单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。 本文介绍了利用凌阳SPCE061A单片机作为制控制器,配合SPLC501液晶模组,设计出租车计价器的过程。该系统可实现出租车计价器的基本功能,并具有友好的语音提示功能,充分发挥了人性化的特点。

关键字:SPCE061A

SPLC501 出租车 计价器

共 38 页 第 1 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

Abstract

Taxi is now the most convenient means of transport, with the advancement of technology, taxi pricing also had a great change. From the earliest kilometers by bus

schedule pricing, to free pricing by odometer, and then pricing by calculating the distance meter, the taximeter is a flat fee subscription which can print the invoice pricing automatically .

Taximeter as an important component of taxi, bearing taxi drivers and passengers interests of the two sides, played an important role, therefore, with good performance by the majority of taxi drivers friends valuation was necessary. Design using microcontroller, relatively powerful, with fewer hardware and the appropriate software interface can be easily achieved design requirements, and flexibility can be accomplished through software programming to more value-added functions.

This paper describes a system by using LingYang SPCE061A singlechip as a

controller, with SPLC501 LCD module to design the process of taxi meter. The system can realize the basic functions of a taxi meter and has a good voice prompt feature, gives full play to the human characteristics.

Keyword:SPCE061A SPLC501 Taxi Taximeter

共 38 页 第 2 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

目 录

第一章 概述………………………………………..........…………............ 4

1.1 课题简介………………………………………….........…….………..... 4 1.2 设计原理与要求………………………………….........……….……..... 4

第二章 SPCE061A工作原理………………….........………………….... 7

2.1 SPCE061A芯片………………………………….........………....…....... 7

2.1.1 总述………………………………………….........………….…... 7 2.1.2 性能………………………………………….........………….…... 7 2.1.3 结构概览……………………………….........…………….……... 8 2.1.4 输入输出接口……………………………........….……….……... 8 2.1.5 PLL锁相环………………………………......…...……….……...10 2.1.6 Timer定时器/计数器……………………......…...……...….…... 10 2.1.7 中断............……………………......…...……………................... 11 2.2 SPCE061A最小系统………………………………..........…….....….. 14

2.2.1 时钟电路……………….......................…….........……...…….... 15 2.2.2 电源接口………………………..................…..........……..…..... 15 2.2.3 外部复位……....................................................................……... 16

第三章 硬件设计………………………………………........................... 17

3.1 系统硬件电路……………………………………………..........…....... 17 3.2 传感器工作电路…………………………………………........…......... 17 3.3 SPLC501控制电路……………………………………….........…....... 18 3.4 系统直流供电电路……………………………………….........…........ 21 3.5 语音输出电路…………………………………………..............……... 21 3.6 键入电路…………………………………………....….......…..…........ 22

第四章 软件设计………………………………………......…...…...…... 23

4.1 系统软件流程……………………………………….......……......…… 23 4.2 液晶驱动程序…………………………………………….........…....… 25 4.3 按键扫描程序…………………………………………….…............… 26 4.4 播放语音程序……………………………………………….............… 26 4.5 计价管理程序……………………………………………….............… 26

4.5.1 模拟速度程序……………………………...……….........…..…..27

共 38 页 第 3 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

4.5.2 里程计量程序…………………………………….........…..…..27 4.5.3 时间管理程序…………………………………......…..…..….. 27 4.5.4 费用管理程序……………………………………….........…... 29 4.5.5 用户界面控制程序………………………………….........…... 32

总 结………………………………………………………................................. 33 致 谢………………………………………………………................................. 34 参考文献………………………………………………………................................. 35 附 录………………………………………………………................................. 36

共 38 页 第 4 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

第一章 概 述

1.1 课题简介

随着社会的不断进步,人们生活水平的不断提高,现在一部分人都拥有了自己的私人汽车,也有很多人,由于经济条件的,还要靠乘坐出租汽车。为此,我们采用单片微型计算机系统(Micro Control Unit 简写为MCU)设计了一款符合大众化的计费系统。 本方案以SPCE061A 单片机为中心、配合SPLC501液晶模组,实现对出租车计价统计。本方案可以实现:

 系统接收里程传感器的脉冲输入(在本方案中使用PWM模拟替代传感器脉冲),并对脉冲进行计数,继而转换为里程。

 采用现行出租车的计价系统的计算方法,并对行驶里程进行计费,提供友好的用户界面,并具有语音提示功能。

1.2 设计原理与要求

利用SPCE061A单片机配合SPLC501液晶模组,实现基本的出租车计价功能,具体设计规格如下: 1. 里程计量

1)单片机对传感器脉冲进行计数(本文传感器使用SPCE061A的IOB9口输出模拟),并将脉冲数换算成公里数。

2)每公里对应的脉冲数PuslePerKM可以调整。

2. 费用计算

1)费用计算包括两部分:

行驶费用和低速等待费用; 2)行驶费用计算如下:

白天行驶里程不足StartMilege(三公里)时,费用按起步价StartPrice(¥10 元)计算;当超出StartMilege时,行驶费用=StartPrice +(行驶里程— StartMilege)*每公里单价。 夜晚行驶里程不足StartMilege(三公里)时,费用按起步价NightStartPrice (¥11 元)计算;当超出StartMilege时,行驶费用=NightStartPrice +(行驶 里程— StartMilege)*每公里单价。

共 38 页 第 5 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

3) 每公里的单价根据时间区分为白天和黑夜两种价格:

白天每公里价格为PricePerKM(¥2.0元); 夜晚每公里价格为NightPricePerKM(¥2.4元); 4) 依靠时间判断白天和黑夜:

晚上NightTimer1(23点)以后,认为进入夜行状态; 早上NightTimer2(5点)以后,认为进入昼行状态; 5) 如果行驶里程超过LongWayLimit(13公里),则超出的里程单价上涨为原单 价的LongWayPrice(1.5)倍,作为空返费用。 6) 上面提到的StartMilege、StartPrice、NightStartPrice、PricePerKM、 NightPricePerKM、NightTimer1、NightTimer2、LongWayLimit、LongWayPrice 等参数要求在程序可调。 7) 低速等待费用计算如下:

① 当车速低于WaitSpeed1(5 Km/h)时,开始计时; 当车速超过WaitSpeed2(10Km/h)时,终止计时。 ② 如果行驶过程中多次发生低速等待,则等待时间累加; ③ 总的等待时间不超过FristWaitTimerLimit(5分钟),则不计算累加; ④ 总的等待时间超过FristWaitTimerLimit(5分钟),则增加WaitPrice(¥2.0) 元,同时超出的时就按照每WaitTimerLimit(3分钟)增加WaitPrice

(¥2.0)元计算,不足WaitTimerLimit(3分钟)的部分不增加费用。即, 等待费用=WaitPrice+WaitPrice * (等待时间—FristWaitTimerLimit) / WaitTimerLimit。

⑤ 上面提到的WaitSpeed1、WaitSpeed2、FristWaitTimerLimit、 WaitTimerLimit、WaitPrice等参数要求在程序中可调。

8) 要求系统可以在行驶期间实时检测并计算总的费用(包括行驶费用和等待费 用)。

共 38 页 第 6 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

第二章 SPCE061A工作原理

2.1 SPCE061A芯片

2.1.1 总述

SPCE061A 是继μ’nSP™s21系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。较高的处理速度使μ’nSP™s21能够非常容易地、快速地处理复杂的数字信号。因此,与SPCE500A相比,以μ’nSP™s21为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。 2.1.2 性能

◆ 16位μ’nSP™s21微处理器;

◆ 工作电压(CPU) VDD为2.4~3.6V (I/O) VDDH为2.4~5.5V ◆ CPU时钟:0.32MHz~49.152MHz ; ◆ 内置2K字SRAM; ◆ 内置32K FLASH; ◆ 可编程音频处理; ◆ 晶体振荡器;

◆ 系统处于备用状态下(时钟处于停止状态),耗电仅为2μA@3.6V; ◆ 2个16位可编程定时器/计数器(可自动预置初始计数值); ◆ 2个10位DAC(数-模转换)输出通道; ◆ 32位通用可编程输入/输出端口;

◆ 14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒; ◆ 具备触键唤醒的功能;

◆ 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据; ◆ 锁相环PLL振荡器提供系统时钟信号; ◆ 32768Hz实时时钟;

◆ 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;

◆ 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; ◆ 具备串行设备接口;

◆ 具有低电压复位(LVR)功能和低电压监测(LVD)功能; ◆ 内置在线仿真电路ICE(In- Circuit Emulator)接口;

共 38 页 第 7 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

◆ 具有保密能力; ◆ 具有WatchDog功能。 2.1.3 结构概览

SPCE061A的结构如图2.1所示:

图2.1 SPCE061A的结构

2.1.4 输入/输出接口

输入/输出接口(也可简称为I/O端口)是单片机与外设交换信息的通道。输入端口负责从外界接收检测信号、键盘信号等各种开关量信号。输出端口负责向

外界传送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等。μ’ nSP™s21内有并行和串行两种方式的I/O口。并行口线路成本较高,但是传输速率 也较高;与并行口相比,串行端口的传输速率较低但可以节省大量的线路成本。 SPCE061A有两个16位的通用并行I/O口:A口和B口。这两个端口的每一位都可通 过编程单独定义成输入或输出口。

A口的IOA0~IOA7作为输入端口时,具有唤醒功能,即当输入电平发生变化时,

会触发CPU中断。在电池供电、追求低耗电的应用场合,可以让CPU进入睡眠 模式(利用软件控制)以降低功耗,需要时才以按键来唤醒CPU,使其进入工作 状态。

SPCE061A提供了位控制结构的I/O端口,每一位都可以单独用于数据输入或

共 38 页 第 8 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

输出。每个的位可通过以下3种控制向量来作设定:

1. 数据向量Data

2. 属性向量Attribution 3. 方向控制向量Direction

每3个对应的控制向量组合在一起,形成一个控制字,用来定义相对应I/O端口位的输入输出状态和方式。

与其它的单片机相比,SPCE061A除了每个I/O口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再外接。 A口和B口的Data、Attribution和Direction的设定值均在不同的寄存器里。I/O端口的组合控制设置如表2.1所示:

表2.1 I/O端口的控制向量组合

Direction Attribution 0 0 0 0 0 1 0 1 1 0 Data 0 1 0 1 0 功能 下拉* 上拉 悬浮 悬浮 高电平输出 (带数据反相器) 低电平输出 (带数据反相器) 低电平输出 是否带唤功能描述 唤醒功能 是** 带下拉电阻的输入引脚 是** 带上拉电阻的输入引脚 是** 悬浮式输入引脚 否 悬浮式输入引脚*** 否 带数据反相器的高电平输出 (当向数据位写入“0” 输出“1”) 否 带数据反相器的低电平输出 (当向数据位写入“1”时输出“0”) 否 带数据寄存器的低电平输出 (无数据反相功能) 否 带数据寄存器的高电平输出 (无数据反相功能) 共 38 页 第 9 页

1 0 1 1 1 0 1 1 1 高电平输出 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

注:

*:端口位预设为带下拉电阻的输入引脚; * *:只有当IOA [7~0]内位的控制字为000,001和010时, 相对应位才具有唤 醒的功能。

***:悬浮输入作为ADC IOA[6~0] 的输入数

B口除了具有常规的输入/输出端口功能外,还有一些特殊的功能,如IOB2与IOB4组成一个RC反馈电路,以获得振荡信号,作为外部中断源EXT1;IOB9也可作为TimerB PWM脉宽调制输出口。 2.1.5 PLL锁相环

PLL锁相环的作用是将系统提供的实时时钟基频(32768Hz)进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz。系统预设的PLL振

[9]

荡频率为24.576MHz。PLL的作用如图2.11所示:

图2.2 PLL锁相环电路图

2.1.6 Timer定时器/计数器

SPCE061A提供了两个16位的计时/计数器:TimerA和TimerB。TimerA为通用计数器;TimerB为多功能计数器。TimerA的时钟源由时钟源A和时钟源B进行“与”操作而形成;TimerB的时钟源仅为时钟源C。定时器发生溢出后,会产生一个溢出信号(TAOUT/TBOUT),它会传送到CPU中断系统以产生定时器中断信号;此外,定时器溢出信号还可以用于触发ADC输入的自动转换过程,和DAC输出的数据锁

[2]

存。定时器结构如下图2.3所示:

共 38 页 第 10 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

图2.3 定时器结构

要启用定时器,要写入一个计数值N到P_TimerA_Data(读/写)(700AH)单元, 或是P_TimerB_Data(读/写)(700CH)单元,然后选择一个合适的时钟源,这时,定时器将在所选的时钟频率下,开始以递增方式计数N,N+1,N+2,⋯s210xFFFE,0xFFFF。当计数达到 0xFFFF后,计时/计数器溢出,产生中断请求信号,被CPU响应后送入中断控制器进行处理。同时,计数值N值将被重新加载计时/计数器并重新开始计数。

时钟源A是一个高频时钟来源,时钟源B是一个低频时钟来源。时钟源A和时钟源B的组合,为TimerA提供了多种计数速度。以时钟源选择器来看,‘1’表示允许时钟源信号通过,而‘0’则表示禁止时钟源信号通过。EXT1和EXT2为外部时

[5]

钟来源。 2.1.7 中断的概述

SPCE061A系列单片机中断系统,是凌阳16位单片机中中断功能较强的一种,它可以提供14个中断源,具有两个中断优先级,可实现两级中断嵌套功能。用户可以用关中断指令(或复位)屏蔽所有的中断请求,也可以用开中断指令使CPU接受中断申请。每一个中断源可以用软件控制为开或关中断状态;但中断级别不可用软件设置。

SPCE061A单片机的中断系统有14个中断源分为两个定时器溢出中断、两个外部中断、一个串行口中断、一个触键唤醒中断、7个时基信号中断、PWM音频

[2]

输出中断。如下表2.2所示:

共 38 页 第 11 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

表2.2 中断源列表

中断源 Fosc/1024溢出信号PWM INT TimerA溢出信号 TimerB溢出信号 外部时钟源输入 信号EXT2 外部时钟源输入 信号EXT1 触键唤醒信号 4096Hz时基信号 2048Hz时基信号 1024Hz时基信号 4Hz时基信号 2Hz时基信号 频选信号TMB1 频选信号TMB2 UART传输中断 中断优先级 FIQ/IRQ0 FIQ /IRQ1 FIQ /IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 中断向量 FFF8H/FFF6H FFF9H/FFF6H FFFAH/FFF6H FFFBH FFFCH FFFDH FFFEH FFFFH 保留字 _FIQ/_IRQ0 _FIQ/_IRQ1 _FIQ/_IRQ2 _IRQ3 _IRQ4 _IRQ5 _IRQ6 _IRQ7

从表中可以看到每个中断入口地址对应多个中断源,因此在中断服务程序中需通过查询中断请求位来判断是那个中断源请求的中断。

定时器溢出中断由SPCE061A内部定时器中断源产生,故它们属于内部中断;在SPCE061A内部有两个16位定时器/计数器,定时器TimerA/TimerB在定时脉冲作用下从预置数单元开始加计数,当计数为“0xFFFF”时可以自动向CPU提出溢出中断请求,以表明定时器TimerA或TimerB的定时时间已到。定时器TimerA/TimerB的定时时间可由用户通过程序设定,以便CPU在定时器溢出中断服务程序内进行计时。另外,SPCE061A单片机的定时器时钟源很丰富,从高频到低频都有,因此,根据定时时间长短可以选择不同的时钟源,定时器A的时钟源比定时器B多,定时器B无低频时钟源。

SPCE061A单片机有两个外部中断,分别为EXT1和EXT2,两个外部输入脚分别为B口的IOB2和IOB3的复用脚。EXT1(IOB2)和EXT2(IOB3)两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断以负跳沿触发方式来输入中断请求信号。如图2.4所示:

共 38 页 第 12 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

图2.4 外部中断结构

时基信号发生器的输入信号来自实时时钟32768Hz;输出有通过选频逻辑的TMB1、TMB2信号和直接从时基计数器溢出而来的各种实时时基信号。当开启时基信号中断后,有时基信号到来,发出时基信号中断申请,CPU查询到有中断请求后,允许中断并置位P_INT_Ctrl中相应的中断请求位,在中断服务程序中通过测试P_INT_Ctrl来确定是那个频率时基信号产生的中断,可以通过在计数不同频率的时基信号来做长时间或短时间的定时控制。

SPCE061A单片机有多个中断源,为了使每个中断源都能地被开放和屏蔽,以便用户能灵活使用,它在每个中断信号的通道中设置了一个中断屏蔽触发器,只有该触发器无效,它所对应的中断请求信号才能进入CPU,即此类型中断开放。否则即使其对应的中断请求标志位置“1”,CPU也不会响应中断,即此类型的中断被屏蔽。同时CPU内还设置了一个中断允许触发器,它控制CPU能否响应中断。 SPCE061A对中断源的开放和屏蔽,以及每个中断源是否被允许中断,都受中断允许寄存器P_INT_Ctrl和P_INT_Clear及P_INT_Ctrl_New控制和一些

[4]

中断控制指令。

共 38 页 第 13 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

2.2 SPCE061A最小系统

最小系统接线如图2.5所示,在OSC0、OSC1端接上晶振及谐振电容,在锁相环压控振荡器的阻容输入VCP端接上相应的电容电阻后即可工作。其它不用的电源端和地

[1]

端接上0.1μF的去藕电容提高抗干扰能力。

图2.5 SPCE061A最小系统

共 38 页 第 14 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

2.2.1 时钟电路

μ’nSP™s21的时钟电路是采用晶体振荡器电路。图2.6为SPCE061A时钟

电路的接线图。外接晶振采用32768Hz。推荐使用外接32768Hz晶振,因RC阻

[1]

容振荡的电路时钟不如外接晶振准确。

图2.6 SPCE061A与振荡器的连接

SPCE061A通过对32768Hz实时时钟来源分频,而提供了多种实时时钟中断。例如,用作唤醒的中断来源IRQ5_2Hz,表示系统每隔0.5秒被唤醒一次,由此可作为精确的计时基准。 2.2.2 电源接口

61 板的内核SPCE061A 电压要求为3.3V,而I/O 端口的电压可以选择3.3V 也可以选择5V。所以,在板子上具有两种工作电压:5V 和3.3V。对应的引脚中15、36 和7必须为3.3V, 对于I/O 端口的电压51、52、75 可以是3.3V 也可以是5V,这两种电平的选择通过跳线J5 来控制。61 板的供电电源系统采用用户多种选择方式: 1. DC5V 电池供电

用户可以用3 节电池来供电。5V 直流电压直接通过SPY0029(相当于一般3.3V 稳压器)稳压到3.3V,为整个61 板提供了4.5V 和3.3V 两种电平的电压。

2. DC5V 稳压源供电

用户可以直接外接5V 的直流稳压源供电。5V 电压再通过SPY0029 稳压到3.3V。

3. DC3V 供电

用户可以提供直流3.3V 电压为实验板进行供电。此时整个板子只有3.3V 电

共 38 页 第 15 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

压,I/O 端口电压此时只有一种选择。

需要注意的是由于SPY0029 最大输出电流为50mA,所以如果需要外接一些模

[2]

组时要先考虑负载是否合适。 2.2.3 外部复位

复位是对61 板内部的硬件初始化。SPCE061A复位电路如图2.7所示,在RESB

[8]

端加上一个低电平就可令其复位。该电路具有手动和上电复位两种功能。

图2.7 复位电路

当电源电压低于2.2V时,系统会变得不稳定且容易出错。导致电源电压过低的原因很多,如电压的反跳、负载过重、电池电量不足⋯。如果电源电压低于2.2V

[2]

时,会在4个时钟周期之后产生一个复位信号,使系统复位。LVR时序如图2.8所示。

图2.8 复位示意图

共 38 页 第 16 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

第三章 硬件设计

3.1 系统硬件电路

下图3.1为出租车计价器的系统框图,采用SPCE061A作为主控制器,通过IOB2接收传感器的脉冲输入(在本方案中使用PWM模拟传感器脉冲模拟),对脉冲进行计数,然后换算成里程数,并按照现行的出租车计价系统的标准进行计费。

IOB2(Ext1 In) IOA 15~8 IOB9(PWM Out) IOB3 IOB4 IOB5 按键操作 D0~D7 A0 SPLC501 R/W EP SPCE61A IOA0~2 J3 图3.1 出租车计价器的硬件连接图

扬声器

1. SPCE061A的IOB2口与IOB9相连,用于模拟传感器脉冲,拔掉后可以 模拟刹车;

2. 将单片机的IOA口高八位IOA15~8口接液晶的D0~7口,IOB3、4、5口分别 接液晶的A0、R/W、EP口;

3. 单片机J2插针处,用跳线将2、3引脚短接,用于输出音频信号,同时喇叭

接J3插针处;

3.2 传感器工作电路

里程计算是通过安装在车轮上的霍尔元件检测到的信号,送到单片机,经过处理计算,送给显示显示单元的。霍尔传感器是一种磁传感器。用它可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍尔传感器以霍尔效应为其工作基础,是由霍尔元件和它的附属电路组成的集成传感器。霍尔传感器分为线性型霍尔传感器和开关型霍尔传感器两种。我们所用的是开关型霍尔传感器。其原理图如图3.2所示:

共 38 页 第 17 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

霍尔传感器

© 车轮

IOB2 SPCE061A 小磁铁 图3.2 传感器工作电路

A44E是开关型的霍尔器件,其工作电压范围比较宽(4.5V~18V),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且最高检测频率可达到1MHZ。

A44E集成霍尔开关由稳压器A、霍尔电势发生器(即硅霍尔片)B,差分放大器C,施密特触发器D和OC门输出E五个基本组成。在输出输入电压CCV,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,再垂直于磁场的方向通过电流,则与这二者相垂直的方向上将会产生霍尔电势HV输出,该HV信号经放大后送至施密特触发器整形,使其成为方波输送到OC门输出。当施加的磁场达到工作点时,触发器输出高电压(相对于地电位),是三极管导通,此时OC门输出端输出低电压,通常称这种状态为开。当施加的磁场达到释放点时,触发器输出低电压,三极管截止,使OC门输出高电压,这种状态为关。这样两次电压变换,是霍尔开关完成了一次开关动作。我们选择IOB2口作为信号输入端,车轮每转一圈(假设车轮周长为1米),霍尔开关就检测并输出信号,引起单片机中断,

[10]

对脉冲计数,当计数达到一千次时,也就是1公里,单片机就控制金额自动增加。

3.3 SPLC501控制电路

1) 主要功能与基本参数

SPLC501液晶显示模组为128X点阵,面板采用STN(Super Twisted

Nematic)超扭曲向列技术制成并且由128 Segment和 Common组成,LCM非常容易通过接口被访问。

模组上的液晶显示器采用凌阳科技的SPLC501芯片作为LCD驱动和控制器,为128X点阵图形液晶显示器。

下表 3.1为SPLC501液晶显示模组的基本参数:

共 38 页 第 18 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

表3.1 SPLC501液晶的基本参数

显示模式 显示格式 输入数据 背光 模块尺寸 视屏尺寸 点大小 像素尺寸

2)结构示意图

SPLC501液晶显示模组上提供了液晶显示器的接口,及其所需的复位等电路;并把对液晶模块进行操作的接口引出,方便用户的使用;此外还提供有背光、电源指示灯。图 3.3为SPLC501液晶显示模组的结构框图。

黄色模式STN液晶 128X点阵地图形液晶显示 兼容68/80系列MPU数据输入 黄绿色LED 72.8(长)×73.6(宽)×9.5(高)mm 58.84(宽)×35.79(长)mm 0.42(宽)×0.51(长)mm 0.46(宽)×0.56(长)

图3.3 SPLC501液晶结构框图

共 38 页 第 19 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

SPLC501液晶显示模组主要有以下几个主要部件: 1. 液晶显示器(带驱动、控制器的液晶面板); 2. 复位按键; 3. 电源指示灯; 4. 模组接口及跳线;

SPLC501液晶显示模组中,接口引脚:“+”、“V3”分别为电源输入端

和高电平引针(供时序选择跳线用),而“-”、“GND”都是接地引脚。各引脚说明如下表3.2所示:

表3.2 液晶引脚说明

接口引脚名 CS1 RES A0 R/W 说明 片选,低有效 复位脚 数据命令选择脚 对于6800系列MPU的读/写信号(R/W) 对于8080系列MPU的写信号(W/R) EP DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 VR C86 PS

3) 液晶接口及跳线

共 38 页 第 20 页 端口输出电压 C86=’H’ 选择6800MPU系列 C86=’L’ 选择8080MPU系列 串、并行时序选择 对于6800系列MPU的时钟信号使能脚(EP) 对于8080系列MPU的读信号(RD) 8位数据总线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

SPLC501液晶显示模组引出了时序操作的接口引脚,还引出了对操作时序进

[2]

行选择的C86和PS接线,图 3.4为液晶模组的接线原理图:

图3.4 液晶原理图

其中LCDDB7~LCDDB0引脚分别接SPCE061A的IOA15~8口;LCDEP引脚接IOB5口;LCDR/W引脚接IOB4口;LCDAO引脚接IOB3口,LCD/RES和LCD/CS1可以短接。

3.4 系统直流供电电路

图3.5为电源电路原理图,电源接J10,通过SPY0029A稳压,提供给单片机。

[2]

图3.5 电源电路原理图

3.5 语音输出电路

SPCE061A为音频输出提供两个DAC通道:DAC1和DAC2,分别由经由DAC1和DAC2引脚输出。

DAC的直流电压必须保证平稳地变化。否则会由于电压的突变引起扬声器产生杂音。采用ramp up/down技术,可以减缓电压变化的幅度,从而输出高品质的音频数据。

共 38 页 第 21 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

用于语音输出时须将J2插针处的2、3引脚短接,电路如下图3.6所示:

[3]

图3.6 语音输出电路

3.6 键入电路

61板中用的是式按键。式按键就是各按键相互,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通

[7]

过检测输入线的电平状态可以容易判断哪个按键按下。如图3.7所示:

图3.7 按键电路

共 38 页 第 22 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

第四章 软件设计

本系统软件中包括下面程序模块:

主 程 序: 初始化系统涉及到的硬件模块,扫描键盘,根据按键启动/停止里

程测量,并调用用户界面程序定时更新日期时间显示,实时更新单价、里程、低速时间、费用等信息显示; 液晶驱动程序:LCD显示驱动程序,实现文本、图形显示等功能。 按键扫描程序:扫描按键,返回扫描结果。

语音播放程序:播放提示音,行驶里程、费用等。

计价管理程序:完成传感器脉冲计量,然后转换为公里数,并根据规则计算对应

的费用,同时,监测行驶速度,统计低速时间,计算低速等待费用,提供液晶显示更新函数,以便主函数可以控制更新用户界面以及行驶里程、费用等信息的显示。该模块包括PWM管理程序、里程计量程序、时间管理程序、费用管理程序、用户界面控制程序等部分。

4.1 系统软件流程

主程序流程如图 4.1:程序运行后首先初始化各个硬件部件,同时打开1KHz和2Hz

时基中断,为键盘扫描和时间管理模块服务。然后,程序进入主循环,不断进行按键扫描,并根据按键启动/停止里程计量,或进入系统设置模式。在主循环中同时还对时间显示进行更新。

共 38 页 第 23 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

N Key3? Y 空车? Y 置为行驶状态 启动里程计量 更新显示 播放欢迎语

开始 系统初始化 N N N Key2? 按键? YKey1? YN 空车? Y置为空车状态 更新显示 N Y 空车? Y N 清除计费记录 停止里程计量 进入系统设置 更新显示 更新LCD显示 更新显示 播放里程费用 更新时间显示 N 行驶? Y 计费服务程序 更新里程费用 图4.1 主程序流程

共 38 页 第 24 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

4.2 液晶驱动程序

LCD显示部分采用SPLC501液晶模组附带的驱动程序。该驱动程序的架构如下图4.2所示

图4.2 驱动程序的架构

驱动程序由5个文件组成,分别为:

底层驱动程序文件:SPLC501Driver_IO.inc、SPLC501Driver_IO.asm; 用户API功能接口函数文件:SPLC501User.h、SPLC501User.c、 DataOSforLCD.asm。

SPLC501Driver_IO.inc:该文件为底层驱动程序的头文件,主要对使用到的寄

存器(如端口控制寄存器等)进行定义,还对SPCE061A与SPLC501液晶显示模组的接口进行配置;用户可以根据自已的需求来配置此文件,但要使端口的分配符合实际硬件的接线。

SPLC501Driver_IO.asm:该文件为底层驱动程序,负责与SPLC501液晶显示模组进行数据传输的任务,主要包括端口初始化、写控制指令、写数据、读数据等函数;这些函数仅供SPLC501User.c调用,不建议用户在应用程序中调用这些函数。

SPLC501User.h:该文件为用户API功能函数文件的头文件,主要对一些记住符

进行定义,以及配置LCD的一些设置,另外该文件里还对SPLC501User.c中的

共 38 页 第 25 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

函数作了外部声明,用户需要使用LCD的API功能函数时,需要把该文件包含在用户的C文件中。

SPLC501User.c:文件中定义了针对LCD显示的各种API功能函数。

DataOSforLCD.asm:该文件中提供了一些供API功能函数调用的数据处理子程

[4]

序,主要完成显示效果的叠加、画圆偏差量的计算等。

4.3 按键扫描程序

键盘实质上是一组按键开关的集合,均利用机械触点的合、断作用。按键在闭合及断开的瞬间均伴随有一连串的抖动,抖动反应在电压上就是呈现出高电平或低电平,为了确保CPU对一次按键动作只确认一次,必须消除抖动的影响。去抖通常有硬

[7]

件去抖和软件去抖两种方法,本程序使用软件延时去抖。如图4.3所示:

图4.3 按键抖动信号波形

系统用1024Hz时基中断对IOA口低八位进行扫描,并进行去抖、长短按键判断等工作。

4.4 语音播放程序

本程序使用SACM-S480 方法对语音进行压缩。S480只有自动播放方式,打开4096HZ时基中断后对语音数据进行解码,再送到DAC通道播放。其中包括初始化S480播放、获取语音资源序号、启动本次播放、等待播放完毕等。

[3]

4.5 计价管理程序

本系统的核心是对IOB2口输入的脉冲进行计数,并转换为公里数,进而根据规则计算行驶费用,同时,还需要对行驶速度进行监测,判断当前车辆是否处于低速运行状态,以实现对低速运行状态的计时,计算等待费用。

计价管理程序包括如下几个组成部分:模拟速度程序、里程计量程序、时间

共 38 页 第 26 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

管理程序、费用管理程序、用户界面控制程序等,各部分共同协调工作,完成计价管理的核心工作以及用户界面的管理工作。

4.5.1 模拟速度程序

本系统中,使用了TimerB产生PWM波,模拟实际的出租车上的里程传感器脉冲。改变PWM的频率,就相当于改变了车速,对PWM波的脉冲进行计数,等同于对里程传感器的脉冲进行计数。

对PWM的管理包括:启动PWM、增大PWM频率、减小PWM频率、停止PWM等。

系统中为TimerB设置了96K的时钟源,以产生一定频率范围的PWM波,改变TimerB的计数初值,将会改变PWM的频率,从而达到管理PWM频率的目的。当然也可以使用信号发生器模拟。 4.5.2 里程计量程序

本系统中使用了外部中断1来实时检测由IOB2口输入的脉冲。在外部中断服务程序中对中断次数进行计数,便可以统计输入脉冲的数量。

一般情况下,运行一段时间后输入单片机的脉冲数量会比较大,容易导致计数结果溢出。故程序中使用了两个变量对脉冲进行计数。uiPulseNum变量用来记录中断次数(脉冲个数),当达到一公里对应的脉冲数量后,使另外一个记录公里数的变量uiDistance加一,并使uiPulseNum归零重新计数。这样,便将公里数的整数部分和小数部分分开统计,使结果不容易溢出,也便于结果转换。

另外,程序中使用了2Hz时基中断用来计算车辆的行驶速度。统计0.5s内的脉冲数量,即可以得到车辆的行驶速度。这一速度将提供给费用管理程序用来判断是否处于低速等待状态。 4.5.3 时间管理程序

系统使用2Hz时基中断实现计时。中断服务程序流程如图 4.4所示。其中,2Hz计数器ulTimer用来为其他模块提供两个2Hz的计数器以方便的实现计时等操作。

共 38 页 第 27 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

开始 2HZ计数器ulTimer加1 Hour=24? Y Hour清0,Day加1 N HalfSecond加1 Day=本月最大天数? N N Halfsecond=120? Y Y Day置1,Month加1 Halfsecond清0,Minutes加1 Month=12? Y Month置1,Year加1 N N Minutes=60? Y

图4.4 中断服务程序流程

Minutes清0,Hour加1 共 38 页 第 28 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

4.5.4 费用管理程序

费用管理程序的作用是监测系统时间、行驶里程和低速等待时间,并根据一定规则换算成费用(费用的具体计算过程请参考出租车计价器礼包的方案简介,在此不做说明)。图 4.5所示的是启动计费的程序流程图。启动计费时,需要判断当前时间是否属于夜行,以便执行夜行起步价和单价。

开始 清除上次计费结果 开始里程计量(脉冲计数) 当前时间是否属于夜行? N Y 置夜行标志 清夜行标志 执行夜行单价、起步价 执行昼行单价、起步价 初始化里程记录变量 初始化里程记录变量 返回

图 4.5 启动计费程序流程图

共 38 页 第 29 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

启动计费后,主程序需要在主循环中不断调用计费服务程序。

计费服务程序是按照规则计算费用的核心程序。在这里,程序记录当前行驶里程,并判断是否出现昼夜行交替现象,以便对单价进行调整;判断行驶里程是否超过规定的空返距离,一旦超过此距离则将价格上涨50%;从里程测量模块得到车辆行驶的速度,判断是否出现低速行驶状态,并利用时钟管理模块提供的2Hz计数器对低速行驶时间进行计时,从而计算低速等待时间。图 4.6所示的是计费服务程序的流程图。

共 38 页 第 30 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

开始 得到当前行驶里程 得到当前时间 Y 低速标志 =1? N N 速度超过 门限2? Y 将2HZ计数器时 间累加到等待时 清除 2HZ计数器 低速标志清0

速度低于门限1? N 夜行标志=1? N Y 累加夜行里程 累加昼行里程 Y 启动2HZ计数器 低速标志置1 进入昼行时间? N N 进入夜行时Y 执行昼行单价 Y 执行夜行单价 夜行标志清0 夜行标志置1 行驶里程>空返 Y 价格上涨50% N N 行驶里程>空返 Y 价格上涨50% 远距标志置1 计算已经行驶费用 行驶里程清0,此后价格上涨50%,对后面里程计费 返回 远距标志置1 计算已经行驶费用 行驶里程清0,此后价格上涨50%,对后面里程计费 图4.6 计费服务程序流程图

共 38 页 第 31 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

根据计费服务程序中统计的低速等待时间长度,可以按照图 4.7所示的流程换算成低速等待费用。其中FWTL(第一次加价的低速等待时间),WTL(第一次低速低速等待加价之后的加价间隔)。

开始 得到等待时间,费用清0 等待时间 = 等待时间 - FWTL N 等待标志=1? Y 费用=1 2Hz计数器计数时间累加到等待N 等待时间>WTL? Y 等待时间图4.7 等待时间换算成费用程序流程图

行驶结束后,停止里程测量模块的测量程序,即可完成此次计费。系统将保留本次的里程、计费结果等数据,直至下一次计费时自动清除。

4.5.5 用户界面控制程序

使用液晶驱动程序提供的功能函数,可以方便的在液晶屏上显示需要的信息或图片。系统上电后首先绘制固定不变的部分,如一些汉字提示等。其他如单价、行驶里程等内容在车辆处于行驶状态时需要实时更新。界面控制程序将从里程计量模块、时间管理模块和计费管理模块得到必要数据进行显示。

共 38 页 第 32 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

总 结

本次毕业设计,主要用C语言配合凌阳单片机设计了一个出租车计价器。在程序编写结束后,对该程序进行了调试,能按预期的效果进行模拟出租车启动、计费、停止等。

本次毕业设计又使我学到许多书本上无法学到的知识,也深刻体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了更多的巩固,同时也对单片机产生了更大的兴趣,也大大加强了我们的动手编程能力,使我们在理论学习和实际应用方面都获得了较大收获。

共 38 页 第 33 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

致 谢

值此论文完成之际,谨向我的导师老师致以深深的感谢和崇高的敬意。导师精心的安排了我的毕业论文进度,耐心的指导着我的学习。细心地解答着我在论文中出现的问题,细心的审阅着我的论文,并关心着我的生活,使得我不断进步。导师渊博的专业知识、严谨的治学风格,平易的待人态度,是我永远学习的方向,是我不断追求的动力,也是我人生的方向。

回首四年,感谢电气信息学院所有在各个方面支持着我帮助过我的老师,谢谢你们多年来的关心和爱护。

在四年的学习生活中,很多同学都给予了我很大帮助,在此向他们表示衷心的感谢并祝愿他们在今后的工作和学习中一帆风顺。

最后也将论文献给我的父母,感谢他们为保证我的学业顺利完成所作的努力和付出的艰辛,感谢他们的理解、支持和帮助。

共 38 页 第 34 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

参考文献

参考文献:

[1] 雷思孝 李伯成、雷向莉 [单片机原理及实用技术——凌阳16位单片机原理及应 用]西安电子科技大学出版社 2004年1月

[2] 罗亚非等 [凌阳16位单片机应用基础]北京航天航空大学出版社2003年12月

[3] 李晶皎 [嵌入式语音技术及凌阳16位单片机应用] 北京航天航空大学出版社 2003年11月

[4] 凌阳大学计划网站www.unsp.com.cn

[5] 凌阳公司 SPCE061A英文数据手册v0.8 DEC.21.2004

[6] Motorola 公司 MC9S12DT128DGV2/D Datesheet V2.15.2005

[7] 李广弟 单片机基础。 北京航空航天大学出版社, 1999.10

[8] 黄再银 带看门狗和电源监控功能的复位芯片MAX813L [电子世界]2003年第三 期

[9] 李朝青 单片机原理及接口技术 北京: 北京航空航天大学出版社, 1994.1

[10] 沙占友 电子技术应用 2002.5 石家庄河北科技大学电子信息工程系 《电子技术 应用》编辑部

共 38 页 第 35 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

附 录

源代码:主程序如下所示 #include \".\\KEY\\Key.h\" #include \"Cal.h\" #include \"Cost.h\" #include \"Speed.h\" #include \"InterFace.h\" #include \"PlayService.h\"

#include \"SetInterruptStatus.h\" #include \"Distance.h\" #include \"PlaySnd.h\"

Status SysStatus; // 系统状态 // Status结构体在InterFace.h中定义 //============================================================= // 语法格式: int main(void) // 实现功能: 主函数 // 参数: 无 // 返回值: 无

//============================================================= int main() { unsigned int Key, KeyType; SysStatus = IDLE; KeyScan_Init(); SetINTStatus(C_IRQ5_2Hz); SetINTStatus(C_IRQ4_1KHz); __asm(\"IRQ ON\"); InterFace_Init(); // 初始化用户界面 InterFace_Normal(); // 显示常规界面 InterFace_UpdateStatus(SysStatus); // 显示当前系统状态(空车) while(1) { Key = KeyScan_GetKey(&KeyType); // 按键扫描 switch(Key) { case C_StartStopKey: if(C_SReleaseKeyState == KeyType) { if(IDLE == SysStatus) { SysStatus = RUN; // 如果是空车状态,则进入行驶状态

共 38 页 第 36 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

Cost_StartRunning(); // 启动计费 InterFace_UpdatePrice(); InterFace_UpdateStatus(SysStatus);// 更新显示 PlaySnd(Cal_GetHello(Cal_GetHour()) + VOICE_MORNING, NO_WAIT); PlaySnd(VOICE_WELCOM, WAIT_OTHER_END); //播放提示音 } else if (RUN == SysStatus) { SysStatus = IDLE; Cost_StopRunning(); //如果是行驶状态,则停止计费 InterFace_UpdatePrice(); InterFace_UpdateStatus(SysStatus); PlaySnd(VOICE_BYE1, NO_WAIT); //播放提示音 PlayDistance(); // 播放行驶里程 PlaySnd(VOICE_BYE2, WAIT_OTHER_END); PlayCost(); // 播放费用 PlaySnd(VOICE_BYE3, WAIT_OTHER_END); } } break; case C_ModeKey: if(C_SReleaseKeyState == KeyType) { if(IDLE == SysStatus) { SysStatus = SYSSET; // 如果是空车状态,则进入日期时间设定模式 InterFace_UpdateStatus(SysStatus); InterFace_SystemSet(); // 显示系统设定界面,并对日期时间进行设定 SysStatus = IDLE; // 设定结束,回到空车状态 InterFace_UpdateStatus(SysStatus); } else if(RUN == SysStatus) { Speed_Down(10); } } break; case C_SetKey: if(C_SReleaseKeyState == KeyType) { if(IDLE == SysStatus) { Cost_ClearCost(); // 清除计费记录

共 38 页 第 37 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)说明书

}

InterFace_UpdateWaitTime(); // 更新显示 InterFace_UpdateDistance(); InterFace_UpdateCost(); InterFace_UpdateStatus(SysStatus); } else if(RUN == SysStatus) { Speed_Up(10); } } break; default: break; } InterFace_UpdateTime(); // 更新时间显示 InterFace_TimeFlash(); // 秒闪烁,同时更新低速等待时间 if(RUN == SysStatus) { Cost_ServiceLoop(); // 计费服务程序(用于监测行驶速度) InterFace_UpdateDistance(); // 实时显示行驶里程 InterFace_UpdatePrice(); InterFace_UpdateCost(); // 实时显示费用 } }

return 0;

共 38 页 第 38 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务