基于单片机的公交车计价器的方案设计书.docx
《基于单片机的公交车计价器的方案设计书.docx》由会员分享,可在线阅读,更多相关《基于单片机的公交车计价器的方案设计书.docx(69页珍藏版)》请在冰豆网上搜索。
基于单片机的公交车计价器的方案设计书
本科毕业论文(设计)
题目:
基于单片机的公交车计价器的设计
学院:
自动化工程学院
专业:
电子信息科学与技术
班级:
2006级1班
姓名:
#############
指导教师:
##############
2010年6月8日
基于单片机的公交车计价器的设计
TheDesignofTheBusMetersBasedonMCU
摘要
针对于现在长线公交车计价器中分段计费所存在的种种问题,本课题对公交车计价器进行改进设计,新的设计理念是使公交车在行进过程中,通过GPS或司机手动按键来对公交车进行定位,使公交车每经过一个站点,定位系统便将一个新的位置信号传递给与之连接的SPCE061A单片机中,通过单片机的程序控制,计价器将给出一个新的更合理的计价表,并且通过液晶显示屏显示出来,供乘客和司机参考。
关键词计价器GPSSPCE061A单片机液晶显示屏
Abstract
Todealwiththeproblemsofthesegmentcharginginthebus-metersystem,arefinedbusmeterisdesignedinordertolocatethebusinprocessingthroughGPSordriver-manual-buttons.Afterthebuspasseseachstation,thepositionsystemwillsendanewlocationsignaltotheSPCE061Aconnected.ThroughtheprogramcontroloftheMCU,thebusmeterwillfigureoutamorereasonablepricing,anddisplayforpassengersanddriversforreferencethroughLCD.
KeywordsmeterGPSSPCE061AofMCULCD
2.1.3SPCE061A的主要结构7
前言
随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理(DSP,DigitalSignalProcccssing)等领域。
凌阳的16位单片机就是为适应这种发展而设计的。
它的CPU内核采用凌阳最新推出的u’nSP(MicrocontrollerandSignalProccssing)16位微处理器芯片(以下简称u’nSPTM)。
围绕u’nSPTM所形成的16位u’nSPTM系列单片机(以下简称u’nSPTM家族)采用的是模块式集成结构,它以u’nSPTM内核为中心集成不同规模的ROM、RAM、和功能丰富的各种外设接口部件。
SPCE061A是继u’nSPTM系列产品SPCE500A等之后凌阳科技推出的又一个16位结构的微控制器。
与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的内存(FLASH)以及较高的处理速度,这些使u’nSPTM能够非常容易地、快速地处理复杂的数字信号。
因此,与SPCE500A相比,以u’nSPTM为核心的SPCE061A微控制器是适用于数字语言识别应用领域产品的一种经济的选择。
SPCE061A具有以下几个特点
(1)体积小、集成度高、可靠性好且易于扩展在SPCE061A把各功能部件模块化地集成在1个芯片里,内部采用总线结构,因而减少了各功能部件之间的连线,提高了其可靠性和抗干扰能力。
另外,模块化的结构易于系列扩展,以适应不同用户的需求。
(2)低功耗、低电压SPCE061A采用CMOS制造工艺,同时增加了软件激发的弱振方式、空闲方式和掉电方式,极大地降低了其功耗。
另外,SPCE061A的工作电压范围大(2.6~3.6V),能在低电压时正常工作,且能用电池供电。
这对于其在野外作业等领域中的应用具有特殊的意义。
(3)高性能价格比SPCE061A片内带有高寻址能力的ROM、静态RAM和多功能的I/O口。
另外,凌阳科技CPU的指令系统提供出具有较高运算速度的16位×16位的乘法运算指令和内积运算指令,使得SPCE061A运用在复杂的数字信号处理方面既很便利,又比专用的DSP芯片廉价。
(4)具有较强的中断处理能力SPCE061A中断系统支持10个中断向量及10余个中断源,适合实时应用领域。
(5)功能强、效率高的指令系统SPCE061A的指令系统,指令格式紧凑,执行迅速。
为缩短开发产品商品化的时间,指令结构提供出对高级语言的良好支持。
第1章绪论
1.1公交车计价器简介
1.1.1发展现状
当前国内外长线无人售票公交车“分段计费”主要有两种方法:
第一种是按某些站为界固定分段计费,如青岛市321路以市政府站为界,过此站交2元否则交1元,若在市政府附近上车,即使乘坐距离很短也要交2元,显然不合理。
第二种方法上下车各刷一次卡,不仅不方便,高峰期人太挤乘客无法到下车刷卡处刷卡,忘记下车刷卡就会在下次刷卡时多扣很多钱,乘客会蒙受较大损失;该计费方式只能刷卡不能投币,忘带卡或外地人无卡就不能乘车;对一家人由一人刷卡这种常见情况也无法处理。
群众对这两种“分段计费”的缺点意见较大,致使大量长线公交车放弃无人售票,仍在沿用人工售票。
1.1.2新方案的设计特点
本课题设计了一种长线公交车“动态分段计费”收费系统,其特色是收费合理,使用方便。
克服了现有“分段计费”的缺点,其创新点为该系统由“公交车计价器”与“多费率收费机”组成:
1、使用“公交车计价器”计算票价,用电子屏给司机和乘客显示“票价表”,司机及熟悉线路的乘客在1至3秒内即可获知应付票价。
由于每到一站“票价表”都会重新计算生成,可以有效解决固定分段产生的收费不合理的问题。
2、若分段收费按1元、2元、3元扣费,现有公交车收费机一般只有一种扣费率,如1元/次,交3元需刷卡3次,若乘客多将使上车时间大大延迟。
为解决分段收费的快速缴费,设计了一种“多费率收费机”,具有几个不同扣费率的刷卡区,各种票价只需上车时在相应刷卡区一次刷卡完成。
1.1.3发展前景
乘客用该系统缴费可刷卡也可选择投币,既解决了固定分段收费不合理的问题,也可避免上下车两次刷卡带来的诸多问题,配上相应监查制度,如不定期查票,逃票罚款等措施,能达到接近人工售票的效果,可替代人工售票,节省开支。
目前一票制无人售票公交线路较短,有的乘客到达目的地要转几次车,解决分段计费问题后有关部门就可以考虑延长线路,方便乘客,节约时间和费用。
现在全国有1600多个县市,以每市、县市内长线公交车加长途公交车平均有15条,每条线有8辆车计算,则有19万辆车,如果使用“动态分段计费”收费系统能节省19万售票员,可从事后勤及其他服务工作。
除公交车,这种计价器也可应用于其他需要分段收费的领域,工程的实施可产生明显的社会效益与经济效益。
1.2公交车计价器设计流程
公交车“动态分段计费”收费系统主要由“公交车计价器”与“多费率收费机”构成,如图1,由GPS或司机按键给出位置信号,公交车计价器计算出票价送显示器显示,乘客根据票价在多费率收费机刷卡完成缴费。
1.2.1多费率收费机
多费率收费机的其特点是:
设置了多个刷卡区,每个区用数码管显示该区扣费率,用多费率读卡模块实现多费率扣费。
设置了语音电路,扣费时报出扣费值,供乘客确认。
设置了上位机接口将扣费数据上传。
1.2.2公交车计价器
公交车计价器设计原理图见图2,单片机根据GPS或司机按键给出的位置信号计算票价表,生成的票价表存于存储器中并送显示器显示,该票价表在车行进过程中不断更新,以保证收费合理。
本课题主要是对公交车计价器进行分析,多费率收费机这里将不再做说明,由上图的公交车原理图我们可以了解这次设计的计价器主要由SPCE61A单片机、GPS、键盘及液晶显示器构成,在下面的章节里将会一一对他们进行解读。
第2章计价器中的硬件设计
2.1SPCE061A单片机
2.1.1总述
SPCE061A是继u’nSPTM系列产品SPCE500A等之后凌阳科技推出的又一个16位结构的微控制器。
与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的内存(FLAH)。
极高的处理速度使u’nSPTM能够非常容易地、快速地处理复杂的而数字信号。
不仅如此,SPCE061A更有以下优点:
1)它整合了多个常用的功能模块,让我们在进行系统开发的时候不用外加过多的硬件就可方面的完成一个系统的设计,这就是人们常说的SoC技术。
2)耗电少,可以满足很多手提设备、掌上设备低能耗的需求,低能耗也是电子技术一直在追求的一个目标。
3)可方便的用来实现录制、播放,Midi音乐合成和语音识别,相比别的单片机比较有特色。
4)可方面的完成一些列乘加的运数,实现一些数据处理比较容易,别的单片机一般都不具备这种功能。
5)芯片里具备在线仿真调试电路,使调试和程序下载更加方便,也把仿真器和烧录器的成本节省下来了。
正是因为这些优点,所以计价器的设计才选择了这种单片机类型。
2.1.2管脚介绍
SPCE061A有PLCC84和QFP80两种封装。
封装形式为PLCC84的共有8个引脚,其中包括空脚15个,其余管脚功能说明如表1所示。
QFP80封装的在引脚方面只是比PLCC84封装的少了4个空脚。
表2.1SPCE061A管脚功能定义
IOA0~IOA15
I/O口A,共16个
IOB0~IOB15
I/O口B,共16个
OSCI
振荡器输入。
在石英晶振模式下,是石英元件的一个输入脚
OSCO
振荡器输出。
在石英晶振模式下,是石英元件的一个输出脚
RES_B
复位输入。
若这个脚输入低电平,会使得控制器被重置复位
ICE_EN
ICE使能端,接在线调试器PROBE的使能脚ICE_EN
ICE_SCK
ICE时钟脚,接在线调试器PROBE的时钟脚ICE_SCK
ICE_SDA
ICE数据脚,接在线调试器PROBE的数据脚ICE_SDA
PVIN
程序保密设定脚
PFUSE
程序保密设定脚
DAC1
音频输出通道1
DAC2
音频输出通道2
AGC
2V参考电压输出脚
OPI
音频输入自动增益控制引脚
MICOUT
Microphone第二运放输入脚
MIIN
Microphone第一运放输出脚
MICP
Microphone的负向输入脚
VRT
A/D转换外部参考电压输入脚。
它决定A/D转换输入电压上限值。
例如该点输入一个2.5V的参考电压,则A/D转换电压输入范围为0-2.5V
VCM
ADC参考电压输出脚
VMIC
Microphone电源
SLEEP
睡眠状态指示脚当CPU进入睡眠状态时,该脚输出一个高电平
VCP
锁相环压控振荡器的阻容输入
XROMT、PVPP、XTEST
出厂测试管脚,悬空即可
VDDH
I/O电平参考。
该点输入一个5V的参考电压则I/O输入输出高电平为5V
VDD(7脚)
PLL锁相环电源
VSS(9脚)
锁相环地
VSS(19、24脚)
模拟地
VSS(38、49、50、62脚)
数字地
VDD(15、36脚)
数字电源
2.1.3SPCE061A的主要结构
1.CPU
SPCE061A配备了凌阳科技开发的最新的16位微处理器,其内部含有8个寄存器,4个通用寄存器R1~R4,1个程序计数器PC,1个堆栈指针SP,1个基址指针BP,1个段寄存器SR,通用寄存器R3和R4结合组成一个32位寄存器MR,MR可以作为乘法运算和内积运算的目标寄存器。
此外,SPCE061A有3个FIQ中断和14个IRQ中断,1个由指令控制的软中断。
2.存储器
SPCE061A拥有2KB的SRAM,还有32kb闪存FLASHROM,可在ICE工作方式下被编程写入或被擦除。
对闪存设置保密设定后,其内容将不能再通过ICE被读写,从而将程序保密。
3.时钟
(1)锁相环(PLL)振荡器PLL的作用为系统提供一个实时时钟的基频(32768Hz),然后将基基频进行倍频,调整至49.152MHz,40.96MHz,32.768MHz,24.576MHz或20.480MHz。
系统默认的PLL自激振荡频率为24.576MHz。
(2)系统时钟其信号源为PLL振荡器。
系统时钟频率(Fosc)和CPU时钟频率(CPUCLK)可通过编程来控制。
默认的Fosc、CPUCLK分别为24576MHz和Fosc/8。
(3)实时时钟32768Hz实时时钟通常用于钟表、实时时钟延时以及其他与时间相关类产品。
SPCE061A通过对32768Hz实时时钟源分频而提供了多种实时时钟中断源。
4.低电压监测和低电压复位
低电压监测功能可以提供系统内电源电压的使用情况。
4级电压监测低限:
2.4V,2.8V,3.2V和3.6V。
可通过编程来控制,系统默认的电压监测低限为2.4V。
低电压复位当电源电压低于2.4V时,系统会变得不稳定且易出故障,导致电源电压过低的原因很多,如电压的反跳、负载过重、电池能量不足等。
如果系统设置了低电压复位(LVR)功能。
当电源电压低于该值时,会在4个时钟周期之后产生一个复位信号,使系统复位。
5.中断
SPCE061A具有2种中断方式:
快速中断请求FIQ中断和中断请求IRQ中断。
中断控制器可处理3种FIQ中断和14种IRQ中断,以及1个由指令BREAK控制的软中断。
6.输入/输出端口(I/O)
I/O是系统与其他设备进行数据交换的接口。
SPCE061A具有2个可编程口:
A口和B口。
A口既是具有可编程唤醒功能的普通I/O口,又可与ADC的多路LINEIN输入共用,B口除了具有普通I/O口的功能外,在特定的管脚上还可以完成一些特殊的功能。
7.定时器/计数器
SPCE061A提供了2个16位的定时器/计数器:
TimerA和TimerB。
TimerA为通用计数器;TimerB为多功能计数器。
TimerA的时钟源由时钟源A(高速时钟源)和时钟源B(实时时钟32768Hz)进行“与”操作而形成,TimerB的时钟源仅为时钟源A。
8.时基
时间基准信号,简称时基信号,来自于32768Hz实时时钟,通过频率选择组合而成。
时基信号发生器的2个选频逻辑TMB1和TMB2为TimerA的时钟源B提供各种频率选择信号并为中断系统提供中断源(IRQ6)信号。
此外,时基信号发生器还可以直接生成2Hz,4Hz,1024Hz,2048Hz以及4096Hz的时基信号,为中断系统提供各种实时中断源(IRQ4和IRQ5)信号。
9.模数转换器(ADC)和数模转换器(DAC)
SPCE061A有8个10位模数转换通道,其中7个通道用于将模拟量信号转换为数字量信号,可能直接通过引线(IOA[0~6])输入。
另外有一个通道只作为语音输入通道,通过内置有自动增益控制放大器的麦克风通道(MICIN)输入。
实际上可以把ADC看作是一个实现模数信号转换的编码器。
SPCE061A为音频输出提供了2个10位的数模转换器,即DAC1和DAC2。
DAC1,DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2管脚输出。
10.串行设备接口
串行输入输出端口SIO提供了1个1位的串行接口,用于与其他设备进行数据通讯。
在SPCE061A内通过IOB0和IOB1这2个端口实现与设备进行串行数据交换功能。
下图为凌阳单片机SPCE061A的总体结构图:
图2.1SPCE061A结构图
在公交车计价器设计原理中,主要用到了SPCE061A单片机中的I/O接口设备,在编程中,也是用到了I/O接口中的相关寄存器,所以着重介绍一下SPCE061A中的I/O接口。
2.1.4I/O接口设备
输入/输出接口是单片机与外设交换信息的通道。
输入端口负责从外界接受检测信号、键盘信号灯个汇总开关信号。
输出端口负责向外界输送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等、SPCE061A内有并行和串行两种的I/O接口、并行口线路成本较高,但是传输速率也很高;与并行口相比,串行口的传输速率较低但可以节省大量的而线路成本。
SPCE061A有两个16位通用的并行I/O接口:
A口和B口。
这两个口的每一位都可通过编程单独定义输入或输出口。
SPCE061A的并行I/O口的每一位均可以单独编程定义成握手型号哦啊的输入或输出端口。
通常,每一个I/O口位会由3个向量位来控制。
一个是方向向量位,控制着I/O口位的输入/输出方向;第二个是属性向量位,控制着I/O口采用什么样的方式进行输入和输出;最后一个则是数据向量位,它一方面用来进行口位数据的输入或输出,另一方面与属性向量位结合在一起可对口位进行复合功能的设置。
1.I/O口的配置
下面进行I/O口的配置的介绍,A口的IOA0~IOA7用作输入口时具有唤醒功能,可将此用于键盘的输入。
B口的某些位除了可以作为普通并行I/O口用以外,还可以有其他一些特殊功能。
其中,向P_IOA_Data单元里写入数据的作用与向P_IOA_Buffer单元里写入功能一样。
同样,向P_IOB_Data单元里写入数据的作用与向P_IOB_Buffer单元里写入功能一样。
只有当读数据时,这两个单元才发挥了各自不同的功能、另外,下表中的P_FeedBack单元可以控制口B的部分口位是作为普通并行I/O口用,还是作为特殊功能口用。
表2.2并行I/O口的配置
A口配置
配置单元
读写属性
存储单元
配置单元功能说明
P_IOA_Data
读/写
7000H
A口的数据口。
当A口为输入口时,写入是将A口的数据写到A口的数据寄存器里;读出则是从A口的管脚上读其输入电平状态、当A口为输出口时,写入输出数据到A口的数据寄存器里。
P_IOA_Buffer
读/写
7001H
A口的数据向量口。
当A口为输入口时,写入是将A口的数据向量写到A口的数据寄存器里;读出则是从A口数据寄存器里读其数值。
当A口为输出口时写入输出数据到A口的数据寄存器。
P_IOA_Dir
读/写
7002H
A口的方向向量口。
写入A口的方向向量到A口的方向向量寄存器里,或者从A口的方向向量寄存器里读出A口的方向向量。
P_IOA_Attr
读/写
7003H
A口的属性向量口。
写入A口的属性向量到A口的属性向量寄存器里,或者从A口的属性向量寄存器里读出A口的额属性向量。
P_IOA_RL
读
7004H
从其读数可激活A口的唤醒功能。
B口配置
配置单元
读写属性
存储单元
配置单元功能说明
P_IOB_Data
读/写
7005H
B口的数据口。
当B口为输入口时,写入是将B口的数据写到B口的数据寄存器里;读出则是从B口的管脚上读其输入电平状态。
当B口为输出口时,写入输出数据到B口的数据寄存器里。
P_IOB_Buffer
读/写
7006H
B口的数据向量口。
当B口为输入口时,写入是将B口的数据向量写到B口的数据寄存器里;读出则是从B口数据寄存器里读其数值。
当B口为输出口时写入输出数据到B口的数据寄存器。
P_IOB_Dir
写
7007H
B口的方向向量口。
写入B口的方向向量到B口的方向向量寄存器里,或者从B口的方向向量寄存器里读出B口的方向向量。
P_IO_Attr
读/写
7008H
B口的属性向量口。
写入B口的属性向量到B口的属性向量寄存器里,或者从B口的属性向量寄存器里读出B口的额属性向量。
P_FeedBack
写
7009H
B口的应用方式控制向量。
2.并行I/O口的组合配置
A口和B口的Data、Attribution、Direction的设定值均在不同的寄存器里,用户在进行I/O口设置时要特别注意这一点。
I/O口的组合控制如下表所示:
表2.3I/O端口的组合控制设置
Direction
Attribution
Data
功能
是否带唤
醒功能
功能描述
0
0
0
下拉
是
带下拉电阻的输入脚
0
0
1
上拉
是
带上拉电阻的输入脚
0
1
0
悬浮
是
悬浮式输入脚
0
1
1
悬浮
否
悬浮式输入脚
1
0
0
高电平(带数
据反相器)
否
带数据反相器的高电平输出(当向数据位写入0时输出为1
1
0
1
低电平(带数
据反相器)
否
带数据反相器的低电平输出(当向数据位写入1时输出为0)
1
1
0
低电平输出
否
带数据缓存器的低电平输出(无数据反相功能)
1
1
1
高电平输出
否
带数据反相器的高电平输出(无数据反相功能)
由上表可以得出如下结论:
Dir位决定了口位的输入/输出方向,即“0”为输入,“1”为输出。
Attr位决定了在口位的输入状态下是为悬浮式输入还是非悬浮式输入,即“0”为带上拉或下拉电阻式输入,而“1”则为悬浮式输入。
在口位的输入状态下,则决定其输入时反相的还是同相的;“0”为反相输出,“1”为同相输出。
Data位在口位的输入状态下被写入时,与Attr位组合在一起形成输入方式的控制字“00”、“01”、“10”、“11”,以决定输入口时带唤醒功能的上拉电阻式、下拉电阻或悬浮式以及不带唤醒的悬浮式输入。
Data位在口位的输入状态下被写入的是输入数据,不过,数据时经过反相器输出还是经过同相换存器输出要Attr位来决定。
单片机SPCE061A在与GPS等连接时,不仅仅用到的单片机的输入输出功能,同时还用到了B端口的某些特殊功能,下表将为大家介绍一下B端口的特殊功能。
表2.4SPCE061A的B端口的特殊功能
端口位
特殊功能
功能描述
IOB0
SCK
SIO端口的时钟信号1
IOB1
SDA
SIO端口的数据传送信号
IOB2
EXT1
外部中断源(下降沿触发)
Feedback_Output1
与IOB4组成一个RC反馈电路,以获得一个振荡信号,作为外部中断源EXT1
IOB3
EXT2
外部中断源(下降沿触发)
Feedback_Output2
与IOB5组成一个RC反馈电路,以获得一个振荡信号,作为外部中断源EXT2
IOB4
Feedback_Input1
IOB5
Feedback_Input2
IOB6
-
端口位
特殊功能
I0B7
Rx
UART串行数据接收端口
I0B8
APWMO
TimerAPWM输出
IOB9
BPWMO
TimerBPWM输出
IOB10
Tx
UART串行数据发送端口
与SPCE061A连接的GPS卫星定位系统可以方便的了解公交车的行进路线,及根据所行进的站点来在显示器上显示新的票价表,来方便顾客投币或刷卡,同时也可进行手动键盘来实现新的票价表的生成,下面分别来介绍两种定位方式。
2.2全球定位系统GPS
2.2.1GPS组成
全球卫星定位系统GPS由3个基本部分组成:
太空部分、监控部分和用户部分。
太空部分包括24颗可操作的卫星,它们以一定倾角分