电子信息工程毕业设计(有源代码和完整文档、程序,要的百度信息我)--毕业设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子信息工程毕业设计(有源代码和完整文档、程序,要的百度
信息我)--毕业设计
目录
1 系统总体方案 (3)
1.1 公交车报站器可选方案 (3)
1.2 设计方案的可行性分析和选择 (5)
1.3 公交车报站器的硬件框图 (5)
2 系统硬件设计 (6)
2.1 SPCE061A简介 (6)
2.2 系统电源设计 (10)
2.3 语音存储电路设计 (10)
2.4 音频输出电路设计 (12)
2.5 显示电路设计 (13)
2.6 键盘电路设计 (14)
3 系统软件设计 (15)
3.1 语音处理 (15)
3.2 主函数流程图 (17)
3.3 初始化函数 (24)
3.4 语音播放的实现 (29)
3.5 更新时间 (32)
3.6设置时间 (33)
参考文献 (46)
谢辞 (47)
附录一公交车报站器电路图 (49)
附录二公交车报站器程序 (50)
在当今社会,即使在私家车越来越多的今天,公交车仍然是人们出行的首选,因为公交车具有方便、快捷、车票便宜等优点。

传统的公交车报站主要由售票员报站,但是有些售票员有着浓重的地方口音,给外地人乘坐公交车造成了困难,另外,随着无人售票车逐渐增多,
公交车报站器就越显得重要了。

目前我国公交车辆己从原有的人工语音报站发展到现在的自动语音报站。

就报站语音而论,绝大多数报站装置都采用IsD系列的语音芯片,部分报站产品也有采用最新的数字语音处理合成技术,两者各有优缺点。

前者成本低,但音质较差,且更改报站信息不灵活,当公交车辆临时改道时必须重新对语音芯片编程;后者受信息容量、语音音质的限制,且更换信息仍需专业设备。

因此设计一款能够方便地更换报站信息、播放高音质语音信息的公交车报站器愈显重要。

本方案利用单片机的语音处理功能,以及其强大的处理能力,完成语音的合成技术,再配合存储器,扩大存储容量,很容就可以实现公交车报站器,从而为市民提供了更加人性化的服务。

这些优点使得本方案成为制作公交报站器一种最经济实用的选择。

1 系统总体方案
公交报站系统的设计要求报站系统可以完整地播放一条公交线路的站名。

可以在显示屏上显示当前的时间,具有时间日期的设置功能,还可以播放音乐或广告。

经过查阅资料,可选方案有基于MP3/U 盘的公交车报站设计,基于GPS 的公交车报站器系统设计和基于SPCE061A 的公交车报站系统设计等.
1.1 公交车报站器可选方案
1.1.1 基于MP3/U 盘的公交车报站设计方案
采用AT89C51SND1C 单片机(内部集成MP3解码器)作为主控CPU 及解码MP3数据,实现对报站信息播放、点阵字符显示、文件存储以及用作优盘功能时USB 与PC 机联机的控制。

利用FAT16在K9F1208上实现文件系统,形成一个Windows 可识别访问的64MB 寻址区域。

结合USB 控制器,系统可作为优盘在Windows 下使用,从而实现在Windows 下对文件的管理以及数据存储功能。

这样通过程序的设定,公交车可通过键盘实现MP3格式声音信号的报站以及各种信息的广播。

列表文件在系统对闪存初始化时生成,系统在对闪存进行格式化的同时生成该名为SCHED-ULE.LST 的列表文件。

该列表文件可在Windows 下利用记事本打开,编辑所需播放的MP3名称。

播放报站信
息的同时通过16个16×16的LED 点阵显示相应的播放内容。

系统框图如图1.1所示。

图1.1 方案一系统框图 MP3解码及DAC 电
语音输入电路
功放电路 USB 接口电
路 MCU
LED 点阵显示电路
键盘
指示电路
闪存电路
1.1.2 基于GPS 的公交车自动报站系统设计方案
GPS 的公交车自动报站系统利用GPS ,通过GPS 接收单元接收卫星发送的信号确认车辆的动态位置(经度、纬度)、时间、状态等信息,与公交线路信息库中存储的车站的位置进行比较,根据预先设定的距离和规则向乘客通报车站和线路的语音信息;并且能把车辆运行的详细情况记录下来,对公共汽车的运营状况进行全程监控并记录。

系统的组成见图1.2。

天线
图1.2 方案二系统框图
1.1.3 基于SPCE061A 的公交车报站系统设计方案
系统以SPCE061A 为核心,可以划分为键盘输入、数码管显示、SPR4096资源存储与语音播放等部分,如图1.3所示。

SPCE061A 作为整个系统的核心控制,并且负责语音的输出。

SPR4096 作为语音资源的存储介质。

LED 键盘显示模组作为时间显示与用户输出设备.使用SPCE061A 可以非常方便灵活的实现语音的录放。

两路10位精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。

GPS
电源
CPU
语音
合成
音频功放
光耦
键盘
喇叭
图 1.3 方案三系统框图
1.2 设计方案的可行性分析和选择
这三种方案各有各的优势。

基于MP3/U 盘的公交报站系统能够作为U 盘与电脑连接,可自行下载报站器的播放内容,也可方便地更改播放内容,播放高品质的音乐,无报站播放时可作为MP3播放器,提高公交车服务质量。

但是MP3操作页面对于司机来说太小,分散过多的注意力,实用性不够。

基于GPS 的公交报站系统用先进的卫星定位,进站、出站自动播报站名及服务用语,准确、及时、完全不需要人工介入,实现了公交车报站器的完全智能化。

国内GPS 语音自动报站系统处于试验阶段,可行性太小。

基于SPCE061A 公交报站系统,SPCE061A 芯片有语音处理能力使得系统设计简化,外围电路较少;另外具有一套指令系统和集成开发环境易学易用效率较高。

SPR4096能够存储大量语音数据,符合任务书所给要求。

1.3 公交车报站器的硬件框图
查阅各种相关资料,设计出公交报站系统。

系统电路原理图见附录一。

单片机控制系统语音输出电

显示电路
语音存储电

键盘电路
2 系统硬件设计
硬件电路设计可以分为单片机控制系统设计;语音存储电路设计;音频输出电路设计;显示电路设计。

2.1 SPCE061A简介
SPCE061A型单片机是凌阳科技公司推出的一款16位微处理器,具有体积小、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点,内嵌32K字闪存FLASH,处理速度高,能够很方便的完成普通单片机的功能,尤其适应于数字语音播报和识别等应用领域,是数字语音识别与语音信号处理的理想产品,得到广泛的应用。

SPCE061A单片机的主要性能有:
●16位u’nSP 微处理器
●工作电压(CPU)VDD 为 3.0~3.6V,(I/O)VDDH为
3.0~5.5V
●CPU时钟:0.32~49.152MHz
●内置 2K字 SRAM
●内置 32K字FLASH
●可编程音频处理
●晶体振荡器
●系统处于备用状态下(时钟处于停止状态),耗电仅为2uA/3.6V
● 2 个16 位可编程定时器/计数器(可自动预置初始计数值)
● 2 个10位 DAC(数/模转换)输出通道
●32 位通用可编程输入/输出通道
●14 个中断源可来自定时器A/B、时基、2 个外部时钟源输入和键唤醒
●具备触键唤醒的功能
●使用凌阳音频编码 SACM_S480 可以播放压缩的语音资源
●锁相环 PLL 振荡器提供系统时钟信号
●32768Hz 实时时钟
●7 通道10 位电压模/数转换器(ADC)和单通道声音模/数转换器
●声音模/数转换器输入通道内置麦克风放大器,并具有自动增益
控制
(AGC)功能
●具备串行设备接口
●具备低电压复位功能和低电压检测功能
●内置在线仿真电路接口
●具有 WatchDog 功能
图2.1为 SPCE061A单片机的内部结构框图:
图 2.1 SPCE061A 内部结构图
SPCE061A引脚排列如图2.2所示,引脚功能如表2.1所示
图2.2 SPCE061A引脚图
表 2.1 SPCE061A引脚功能表
引脚名称类型引脚功能
IOA[15:8] 输入输出OA[15:8]:双向 IO 端口
IOA[7:0] 输入输出IOA[7:0]:通过编程,可设置成唤醒管脚IOA[6:0]:与 ADC Line_In 输入共用
IOB[15:11]
IOB10
IOB9
IOB8
IOB7
IOB6
IOB5
IOB4 输入输出
输入输出
输入输出
输入输出
输入输出
输入输出
输入输出
输入输出
IOB[15:11]:双向 IO 端口。

IOB10-0 除用作普通的 IO端口,
还可作为如下功能:
IOB10:通用异步串行数据发送管脚 Tx
IOB9:TimerB 脉宽调制输出管脚 BPWMO
IOB8:TimerA 脉宽调制输出管脚 APWMO
IOB7:通用异步串行数据接收管脚 Rx
IOB6:双向 IO 端口
IOB5:外部中断源 EXT2 的反馈管脚
IOB4:外部中断源 EXT1 的反馈管脚
IOB3 IOB2 IOB1 IOB0 输入输出
输入输出
输入输出
输出
IOB3:外部中断源 EXT2
IOB2:外部中断源 EXT1
IOB1:串行接口的数据传送管脚
IOB0:串行接口的时钟信号
DAC1 输出DAC1 数据输出管脚
DAC2 输出DAC2 数据输出管脚
OSCI 输入32768Hz晶振输入管脚
OSCO 输出32768Hz晶振输出管脚
VCP 输入PLL的 RC 滤波器连接管脚
AGC 输入AGC 的控制管脚
MICN 输入麦克风负向输入管脚
MICP 输入麦克风正向输入管脚
VREF2 输出电压源 2.0V产生5mA 的驱动电流,可用作外部 ADC Line_In
通道的最高参考输入电压,不可作为电压源使用
MICOUT 输出麦克风1 阶放大器输出管脚,管脚外接电阻决定AGC增益倍数OPI 输入麦克风 2 阶放大器输入管脚
VRTPAD 输入ADC Line_In 通道的最高参考输入电压管脚
VMIC 输出麦克风电源
VCM 输出AD 参考电压(由内部 ADC 产生)
VDD 输入逻辑电源的正向电压
VSS 输入逻辑电源和 IO 口的参考地
VDDIO 输入IO 端口的正向电压管脚
VSSIO 输入IO 端口的参考地
AVDD 输入模拟电路(A/D、D/A 和 2V 稳压源)正向电压
AVSS 输入模拟电路(A/D、D/A 和 2V 稳压源)参考地
RSETB 输入低电平有效的复位管脚
SLEEP 输出睡眠模式(高电平激活)
ICE 输入激活 ICE(高电平激活
ICECLK 输入ICE 串行接口时钟管脚
ICESDA 输入输出ICE 串行接口数据管脚
TEST 输入测试模式时接高电平,正常模式时接地 GND 或悬浮
ROMT 输入测试闪烁存储器,正常模式时悬浮
NC 输入正常使用时接地
2.2 系统电源设计
图2.3是电源部分的电路,61单片机的内核工作电压是3.3V,而IO 口电压可以是3.3V也可以是5V。

公交蓄电池12V直流电压经过7805产生5V电压,再经过SPY0029后产生3.3V电压分别给系统供电。

LM7805是常用的三端正电源稳压电路,使用的是TO-220封装,能提供直流电源5V的输出电压,内含短路和热过载保护电路,应用范围非常广泛。

带散热片时能持续提供1A的电流,如果使用外围器件,它还能提供不同的电压和电流。

它有三个引脚,引脚1为输入电压,引脚2为+5V输出电压,引脚3接地。

SPY0029是凌阳公司设计的电压调整IC,采用CMOS工艺,具有静态电流低,驱动能力强,线性调整出色等特点。

它有三个引脚,
引脚1接地,引脚2为输入电压,引脚3为输出电压。

图2.3 单片机电源电路
2.3 语音存储电路设计
因为SPCE061A的FLASH只有32K字,要存放大量的语音资源,就要外扩存储器。

本次设计选用SPR4096芯片。

2.3.1 SPR4096芯片简介
SPR4096是一个高性能的4M-bit(512K×8-bit)FLASH,分为256个扇区(Sector),每个扇区为2KB。

SPR4096还内置了一个4K×8bit的SRAM。

SPR4096内置了一个总线存储器接口和一个串行接口,它允许单片机通过
8bit并行模式或者1bit串行模式访问FLASH/SRAM存储区。

本设计使用品行模式,串行接口的工作频率可达5MHz.有两个电源输入端VDDI和VDDQ.VDDI是给内部FLASH和控制逻辑供电的;VDDQ 是专门为I/O供电的。

最大读电流为2mA。

SPR4096按串行接口模式工作,要把CF2~CF0 均接高电平。

CF7为低电平时选中FLASH,高电平时选中SRAM.
3.3.2 语音存储电路
图2.4是SPR4096与单片机的硬件连接图。

SPR4096 的SCK接SPCE061A的IOB0,SDA接 SPCE061A的IOB1。

CF0~CF2 接高电平,CF7 接低电平,选中FLASH。

图2.4 SPR4096电路图
2.4 音频输出电路设计
SPCE061A内置2路10位精度的DAC,芯片输出的音频信号功率较小,在报站时要求比较大的声音,就要对芯片输出的声音信号进行功率放大,因此电路选用了SPY0030音频功率放大电路。

图2.5为音频输出电路。

SPCE061A的音频输出采用双通道数/模转换DAC 方式,即数字信号通过10位DAC转换成3mA驱动的电
流模拟信号输出。

语音提示输出直接采用DAC通道,经信号放大后,由SPEAKER(扬声器)输出。

图2.5 音频输出电路
SPY0030芯片是一个音频驱动,其增益可以通过外部电阻(最长增益调整为20)。

它的输出功率约700mW,电压可调范围很广(2.4V-6.8V),具有双端输出模式,低失真,低待机电流等特点。

简单易用,仅需2.4V(两颗电池)即可工作。

图2.6为SPY0030芯片的引脚图。

表2.2为引脚功能表。

图 2.6 SPY0030芯片引脚图
表2.2 SPY0030芯片引脚功能表
引脚名称引脚号类型引脚功能
VDD 8 输入电源的正向电压
VSS 3 输入电源地
SPP 2 输出音频输出正极
SPN 1 输出音频输出负极
ACIN 5 输入信号输入正极
INN 4 输入信号输入负极
CE 7 输入芯片使能
VREF 6 输出参考电压
2.5 显示电路设计
图2.7为显示电路图。

整个显示过程中采用动态显示,即六位显示器逐一轮流显示,每位持续1ms,10ms或20ms之内循环一遍,刷新速度不要小于每秒三十桢。

由于视觉暂留,我们看到的便是6只显示器同时在显示。

图2.7 显示电路图
显示电路中只要有ULN2003A、WD0521CX和WD05643CX等元器件组成。

ULN2003A:其内部为三极管阵列,它的IN 脚相当于三极管的B 极,OUT较相当于三极管的C极。

若IN脚输入高电平,对应的OUT 脚接地;IN脚输入低电平,
对应的OUT脚截止输出。

WD0521CX:共阴极2位数码管.a~dp为数码管的段信号,G1、G2为2位数码管的位信号。

段信号高有效,位信号低有效。

WD05643CX:共阴极4位数码管.a~dp为数码管的段信号,d1、d2为时钟冒号的段信号;G1~G4 为4位数码管的位信号,G5为时钟冒号的位信号。

段信号高有效,位信号低有效。

2.6 键盘电路设计
键盘输入电路如图2.8所示。

各按键功能不同,根据各按键功能列出表2.3.
图 2.8 键盘输入电路
表2.3 键盘各按键功能表
按键公交车报站状态时间设置状态
S0 逐次播放上行各站提示语,每按一次按顺序播放一个无效
S1 逐次播放下行各站提示语,每按一次按顺序播放一个无效
S2 播放警告用语“车辆拐弯,请注意安全”无效
S3 播放提示语“车上有老弱病残孕乘客,请让座”无效
S4 播放娱乐音乐或广告无效
S5 进入设置时间状态设置切换
S6 显示在时间/日期/年之间切换增加
S7 打开或关闭数码管减小
3 系统软件设计
3.1 语音处理
语音处理是建立在语言学和数字信号处理基础之上的综合学科。

语音处理大致可以分为A/D 采样输入、编码处理、存储、解码处理以及 D/A 等。

SPCE061A 是16位单片机,有2个16位定时/计数器;CPU 时
钟最高达
49MHz ,16 位乘法器和内积运算,有能力执行复杂压缩算法,有完善的语音处理函数库支持等。

这些都无疑为语音的播放、录放、合成及识别提供了条件。

3.1.1 压缩存储
采样输入是指音频采样和量化,将模拟的(连续的)声音波形数字化(离散化);语音信号的时域分析,直接利用语音信号的时域波形进行分析;语音信号的频域分析,对语音信号的频谱、功率谱等进行分析;语音信号的线性预测分析,把语音信号用一个模型来表示,利用模型的参数来描述语音信号的波形和频谱特性。

编码处理采用压缩编码,它具有高效存储和高速传输等特点。

压缩编码可分为三类:
1.波形编码:sub-band即SACM_A2000。

特点:高质量、高码率,适于高保真
语音/音乐。

2.参数编码:声码器(vocoder)模型表达,抽取参数与激励信号进行编码。

如:SACM_S240。

特点:压缩比大,计算量大,音质不高,廉价!
3.混合编码:CELP即SACM_S480。

特点:综合参数和波形编码之优点。

本次系统设计方案采用混合编码方式。

压缩分无损压缩和有损压缩。

无损压缩一般指:磁盘文件,压缩比低:2:1~4:1。

而有损压缩则是指:音/视频文件,压缩比可高达100:1。

凌阳音频压缩算法根据不同的压缩比分为以下几种:
SACM_A2000:压缩比为8:1,8:1.25,8:1.5 SACM_S480:压缩比为80:3,80:4.5 SACM_S240:压缩比为80:1.5 按音质排序:A2000>S480>S240
压缩算法中SACM_A2000、 SACM_S480、 SACM_S240 主要是用来放音,可用于语音提示,而DVR 则用来录放音。

3.1.2 语音识别
语音的识别可分为下列几个部分:预处理,语音信号数字化;特征提取,抽取反应语音本质的特征参数,形成特征矢量序列;语音模型库,从一个或多个讲话者多次重复讲话中提取的语音参数模板;模式匹配,把输入语音的特征参数与语音模型库进行比较分析,得到识别结果。

识别的过程可用图3.1表示。

预处理
特征提取
模式匹配
后处理
语音模型库
识别
识别结果
训练
输入语音
初步
识别结果
图3.1 语音的识别
3.1.3 语音合成
语音合成是将以其他方式表示或存储的信息转换成语音。

最常见的语音合成技术是将文本转换为语音(TTS )。

文本转换成语音如图3.2所示。

图3.2 文本转换成语音图
文本处理韵律处理
语音合成
词典及语言规范
语音数据库
文本输入语音输出
3.2 主函数流程图
在主函数中完成SPR4096 的初始化、键盘、显示的初始化,并且
进行显示时间与播报公交车报站的站点,然后进入循环根据键盘的值执行相关的操作。

主函数流程图如图3.3所示。

图3.3 主函数流程图
主函数程序: int main(void) {
开始
初始化局部变量初始化SPR4096,键盘,时间播报所有站点,行车路线
根据变量进行显示
显示年
显示月日显示时间
获取键值
根据键值执行操作
逐次播放上行站提示
逐次播放下行站提示
播放警告用语
播放提示语
播放娱乐音乐或广告
进入设置时间状态
时间日月年之间切换
打开或关闭数码管
清看门狗
unsigned int uiKey; //键盘值
unsigned int uiOn_Off; //数码管显示或不显示标志unsigned int uiKey1_Count; //key1按下次数unsigned int uiKey2_Count; //key2按下次数unsigned int uiflag; //按键key1、key2的奇偶标志unsigned int uiTemp; //临时变量
uiOn_Off = 0; //局部变量初始化
uiKey1_Count = 0; //
uiKey2_Count = 16; //
uiflag = 0;
SP_SIOInitial(); //初始化SPR模组,SPR4096 DIG_Init(); //初始化数码管
Key_Init(); //初始化键盘
Time_Init(); //初始化显示时间
DIG_Set(1,0);
DIG_Set(2,0);
DIG_Set(3,Data[uiHour_H]);
DIG_Set(4,Data[uiHour_L]);
DIG_Set(5,Data[uiMinite_H]);
DIG_Set(6,Data[uiMinite_L]);
Broadcast(52); //播放站点
while(1)
{
if(uiDisp == 0) //显示时间
{
DIG_Set(1,0);
DIG_Set(2,0);
DIG_Set(3,Data[uiHour_H]);
DIG_Set(4,Data[uiHour_L]);
DIG_Set(5,Data[uiMinite_H]);。

相关文档
最新文档