公交车语音报站.docx
《公交车语音报站.docx》由会员分享,可在线阅读,更多相关《公交车语音报站.docx(40页珍藏版)》请在冰点文库上搜索。
公交车语音报站
信息工程学院
接口技术课程设计论文
(2008~2009学年第2学期)
论文题目:
公交车语音报站
姓名:
___周启超
专业:
_运算机科学与技术
年级班级:
06级2班
指导教师:
李长悦
完成日期:
_2009年7月9日
成绩:
摘要
本论文要紧介绍的是语音报站操纵系统。
硬件部份要紧利用实验箱中的语音模块、825五、12864液晶显示等连接组成的大体电路。
软件部份采纳了汇编语言编写程序代码,通过判定、延时、跳转、循环等大体技术实现语音与显示同步键控,显示屏的正确显示,语音模块的正常录放音,以人为键控实现报站、屏幕显示等功能。
该系统具有工作稳固,操作简单等优势。
关键词:
语音报站操纵,语音模块,12864液晶显示,并行8255
Abstract
Thispapermainlyintroducesthevoicestopscontrolsystemis.Thehardwarepartofspeechusingexperimentalbox,8255module,12864,liquidcrystaldisplay(LCD)thebasiccircuitconnectedcomponentsetc.Softwarepartadoptstheassemblerlanguagewritingcode,throughthejudgment,delay,jump,circulationanddisplaytechnologytoachievethebasicphoneticsynchronouskeying,screendisplay,thecorrectpronunciationofthemodule,adheretothesoundrecordingnormalrealizationkeyingstops,screenetc.Function.Thissystemhasstableoperation,simpleoperation,etc.
Keywords:
voicestopscontrol,12864LCDmodule,speech,8255
引言
最近几年来,随着经济的持续进展,对公走运输也提出更高的要求。
随着我国各大城市公交公司的人员精减,目前各公交公司都在每辆公交车上只配备了一个司机,进行无人售票,同时司机负责报站。
为了公交系统的方便快捷,那么很需要语音报站系统来实现。
本次设计的语音报站系统,利用有开动的公交车上,代替售票员进行报站工作。
该系统通过键盘操纵实现语音报站,同时在液晶屏上显示站名。
该系统设计程序,能够实现人声录音进行报站和预报站,到站状态显示,站名语言信息录入,录音、放音和站名选择操纵。
该设计方便快捷,很适合公交车司机利用,且本钱低廉,值得推行。
1系统概述
.设计目的
通过在微机及STARES598PCI实验仪上完成语音报站系统设计。
在微机及STARES598PCI实验仪上通过语音模块实现录放音,通过液晶屏显示文字。
同时对相关课程内容加以消化,加深明白得。
通过自己动手操作,容易把握微机的大体组成、接口各个部件的结构和彼此之间的联系。
设计要求
利用键控方式实现人声录音进行报站和预报站,到站状态显示,站名语言信息录入,录音、放音和站名选择操纵。
通过在微机及STARES598PCI实验仪上实现语音报站的操纵,加深对接口各大体芯片的功能和原理的了解。
.设计环境
PC机一台、星研集成模拟软件、STARES598PCI实验仪
2设计要求
整体设计
站名语言信息录入,使其在液晶屏上显示,利用语音模块录、放站名信息,通过按键操纵实现。
按键时液晶屏幕上显示站名,同时语音播报站名。
液晶屏幕显示部份
图形点阵液晶显示器可显示8×4个(16×16点阵)汉字。
依照星研电子提供的ZIMO软件能够查找相关汉字的点阵,通过排列,在液晶屏上显示出来。
语音模块录放音部份
可实现20秒录放音长度,具有不掉电存储功能,可分1-160段录放音片段。
在该课题设计进程中,仅用3段录放音。
录放音时采纳MCU操纵方式,通过G6区8个按键操纵录、放音:
1~4号键录音各5秒;然后通过5~8号键放音,放音内容顺序对应1~4号键的录音内容。
3硬件设计
实验设备和器材
本系统利用硬件设备要紧有PC机,STARES598PCI实验仪,STARES598PCI实验仪结构包括:
G6区(发光管、按键、开关)、B4区8255电路、A3区(CPU总线、片选区)、B1区ISD1420语音模块、总线插孔、A1区12864J液晶显示器等。
各部份硬件电路
并行接口8255操纵部份
CS:
片选信号,低电平有效;
A0、A1:
地址信号。
JP52:
PC口;JP53:
PB口;JP56:
PA口。
图8255操纵电路
该部份操纵输入输出,写入操纵字,PA口为输入,与按键电路相连。
PC口为输出,将PC7与蜂鸣器电路操纵端口相连。
CS片选信号与片选区CS1相连,地址范围在0F000H~0FFFFH之间。
地址信号A0,A1别离与CPU总线、片选区的地址线A0,A1相连。
12864液晶显示模块电路
图12864液晶显示模块电路
CS:
片选信号,低有效。
CS1/2:
左右半屏使能选择,H:
左半屏,L:
右半屏。
RS:
选择读写的是指令或数据,L:
指令,H:
为数据。
RW:
读写操纵端,L:
写操作,H:
读操作。
语音模块ISD1420电路
图语音模块ISD1420电路
JP13、JP14、JP15:
设置操作模式,MCU:
CPU操纵方式;MANUAL:
手动(REC、PLAYL、PLAYE)操纵方式。
REC:
录音按键,低电平有效;
PLAYE:
电平放音按键,低电平有效,直到放音内容结束停止放音
PLAYL:
边沿放音按键,下降沿有效,并在下一个上升沿停止放音
硬件设计具体方案
要紧连线说明:
连线A区
连线B区
A1区:
CS、RW、RS、CS1/2
A3区:
CS1、A0、A1、A2
B1区:
REC
B4区:
PC0(8255)录音控制
B1区:
PLAYE
B3区:
PC1(8255)电平放音控制
B1区:
PLAYL
B3区:
PC2(8255)触发放音控制,下降沿触发
B1区:
CP
A3区:
CS1
B4区:
CS(8255)、A0、A1
A3区:
CS2、A0、A1
B4区:
JP56(8255的PA口)
G6区:
JP74
表连线说明
4软件设计
软件操纵方案
第一对8255芯片进行初始设置,对操纵端口写入方式操纵字,A口工作方式为方式一,即大体输入输出方式;A口作为输入,B口不利用,都写0,C口高四位和低四位都设为输出。
为了实现语音与液晶屏显示同步,在程序段中加入按键选择程序,无按键按下,屏幕无显示,不播放语音;有键按下时,跳到相应处置程序。
如按下5键,那么挪用语音子程序中的第一段录音地址,同时挪用液晶显示程序中的第一页屏显内容。
操纵逻辑流程图
开始
初始化ISD1420(语音模块初始化,
关闭录放音功能,允许手动录放音)
调用键盘扫描子程序
有键按下标志=1
调用按键处理子程序
有新的按键按下
N
N
Y
Y
图语音模块流程图
N
P1口=0FFH
将P1口的值转化为键值1
延时40ms
P1口=0FFH
将P1口的值转化为键值
键值1=键值
键值=键值1
P1口=0FFH
1->有键按下标志
0->有键按下标志
Y
Y
N
N
Y
N
Y
开始
返回
图键扫描子程序
取1号键录音首地址
取2号键录音首地址
取3号键录音首地址
取4号键录音首地址
取5号键放音首地址
取6号键放音首地址
取7号键放音首地址
取8号键放音首地址
Y
Y
Y
Y
Y
Y
Y
Y
N
N
N
N
N
N
N
N
开始
返回
键值=1
键值=2
键值=3
键值=4
键值=5
键值=6
键值=7
键值=8
图按键处置子程序
参考程序(见附录)
5系统测试
通过硬件和软件的结合调试,使该系统符合设计的大体要求,并保证靠得住稳固地运行。
在此基础上使系统能够加倍全面地对语音报站进行操纵,正确反映语音报站的工作原理,给用户提供一个可操作观看的界面,以更方便容易操作和检查。
第一将硬件电路进行连接,在连接之前,要先检查各个部件是不是损坏,若是正常方可连接,不然将会阻碍实验进行。
再连接好线路以后配合软件程序进行调试。
按一、二、3键录音,以后按4、五、6键放音,在放音同时,看液晶显示屏上的站名信息是不是与语音对应。
若是没有,那么修改、调试程序,明白达到大体要求,符合打算结果为止。
6设计中碰到的问题
在软硬件调试进程中要紧碰到以下几个问题:
一、起初在录音时只能实现录两段,即按键一、2有效。
后来通过与同窗研究找到问题所在:
代码中寄存录音的地址需要修改。
二、在代码段顶用到jz之类的短跳转,在其间代码过量时会显现跳转不到的问题。
这是因为中距离得代码太多,要采纳双重跳才可跳到指定位置。
3、当液晶屏显示下一页站名时显现花屏现象。
解决方式:
在代码段中应加上清屏代码,不然当现实下一页时,第一页的站名将会仍留在屏幕上。
4、在把语音程序和液晶显示程序归并后显现一些问题
(1)别离按一、二、3键录音后,按5键,放出一、二、3段所有录音(正常只放出第1段录音);按6键,放出二、3段录音(6键对应播放第2段录音);按7键只放出第3段录音。
解决方式:
将代码段寄存录音的地址改大一些而且将每段录音时刻缩短即可实现。
(2)按键后不能实现语音与液晶显示屏上站名信息同步,或是屏上只显示站名而没声音,或是有声音而屏幕上没反映。
解决方式:
在程序中通过判定按键来实现同步。
有键按下时,跳到相应处置程序。
7设计总结
两周的课程设计过去了,这两周感觉自己收成颇丰,通过实践学习将以前把握不是很扎实的基础知识加以巩固。
真正做到理论与实践相结合。
同时也深深体会到做项目的不易,有时侯自己做起来感觉很困难,常常在程序运行时显现错误,在实验仪的液晶显示屏上看不到自己想取得的结果。
可是通过和教师、同窗不断的交流。
最终在自己的尽力和大伙儿的帮忙下仍是顺利的完成了任务。
本次课程设计使我对硬件知识有了进一步的熟悉,尤其是对825五、液晶显示模块、语音模块有了更深的了解。
在做课程设计进程中,老是碰到点问题就去翻书,有些需要把握的知识不了解而去翻书查找是很浪费时刻的。
因此,这次实习使我熟悉到把握基础知识的重要性。
致谢
在整个开发与设计实习中,我从开始学习星研集成模拟软件、电路设计、程序编写到最后的提交论文,自始至终都受到指导教师李长悦教师,张建锋教师、田晶教师的和所有指导教师的悉心指导。
对此,表示忠心的感激!
同时也感激给过我帮忙和鼓舞的同窗,没有他们的帮忙与鼓舞,我是不可能这么快完成系统开发任务的。
借此机遇,我再一次感激给咱们代汇编语言的李长悦教师和微机原理与接口课程的田晶教师,和所有指导教师和我的同窗。
8参考文献
[1]田晶编著《接口技术实验指导书》西北农林科技大学信息工程学院
[2]刘肃,张军,耿恒山著《微机原理与接口》中国水利水电出版社2006
[3]沈美明,温冬婵编著《IBM-PC汇编语言程序设计》清华大学出版社2007
[4]《STARPCI利用说明》星研公司
9附录
系统所用的汇编程序如下:
.MODELTINY
.STACK100;堆栈段
WR_COM_AD_LEQU0d004H;写左半屏指令地址
WR_COM_AD_REQU0d000H;写右半屏指令地址
WR_DATA_AD_LEQU0D006H;写左半屏数据地址
WR_DATA_AD_REQU0D002H;写右半屏数据地址
RD_BUSY_ADEQU0D001H;查忙地址
RD_DATA_ADEQU0D003H;读数据地址
XEQU0B8H;起始显示行基址
YEQU040H;起始显示列基址
FirstLineEQU0C0H;起始显示行
ISD1420_AD1EQU00H;1号键录放音起始地址,每次录音5s
ISD1420_AD2EQU20H;2号键录放音起始地址
ISD1420_AD3EQU40H;3号键录放音起始地址
ISD1420_AD4EQU60H;4号键录放音起始地址
ISDCOMMEQU0F000H;录放音地址/操作模式输入地址,0D000H接CS3
I8255_CtrEQU0E003H;8255控制端口地址
I8255_PAEQU0E000H;键盘数据输入口
I8255_PCEQU0E002H;ISD1420控制输出口
.DATA
bNewKeyDB0;有键按下标志位,清0-无键按下
KEYnoDB0
KeyTabDWKEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8;放音键子程序入口
;--文字:
水--
Line0_1DB00H,10H,10H,10H,90H,70H,00H,0FFH,20H,60H,90H,08H,04H,00H,00H,00H
DB10H,10H,08H,06H,01H,40H,80H,7FH,00H,00H,01H,06H,0CH,18H,08H,00H
;--文字:
运--
Line0_2
DB40H,41H,0CEH,04H,00H,20H,22H,0A2H,62H,22H,0A2H,22H,22H,22H,20H,00H
DB40H,20H,1FH,20H,28H,4CH,4AH,49H,48H,4CH,44H,45H,5EH,4CH,40H,00H
;--文字:
下--
Line4_1
DB00H,02H,02H,02H,02H,02H,02H,0FEH,22H,62H,0C2H,82H,02H,03H,02H,00H
DB00H,00H,00H,00H,00H,00H,00H,7FH,00H,00H,01H,00H,00H,00H,00H,00H
;--文字:
一--
Line4_2
DB00H,80H,80H,80H,80H,80H,80H,80H,80H,80H,80H,80H,80H,0C0H,80H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;--文字:
站--
Line4_3
DB10H,50H,92H,1CH,10H,0F0H,10H,00H,00H,00H,0FFH,10H,10H,10H,10H,00H
DB10H,10H,0BH,0CH,0BH,08H,00H,7FH,21H,21H,21H,21H,21H,7FH,00H,00H
;--文字:
西--
Line2_1
DB02H,0F2H,12H,12H,12H,0FEH,12H,12H,12H,0FEH,12H,12H,12H,0F2H,02H,00HDB00H,7FH,28H,24H,22H,21H,20H,20H,20H,21H,22H,22H,22H,7FH,00H,00H
;--文字:
农--
Line2_2
DB00H,20H,18H,08H,88H,0E8H,1FH,6AH,88H,08H,88H,0C8H,0A8H,1CH,08H,00H
DB08H,04H,02H,41H,0FFH,40H,20H,10H,01H,02H,0DH,18H,70H,20H,20H,00H
;--文字:
南--
Line2_3
DB04H,04H,0E4H,24H,24H,64H,0B4H,2FH,24H,0A4H,64H,24H,24H,0E6H,04H,00H
DB00H,00H,7FH,04H,05H,05H,05H,7FH,05H,05H,05H,25H,44H,3FH,00H,00H
;--文字:
校--
Line2_4
DB08H,88H,68H,0FFH,28H,48H,00H,88H,68H,09H,0EH,08H,0A8H,48H,88H,00H
DB02H,01H,00H,0FFH,00H,40H,42H,21H,26H,18H,18H,26H,61H,0C0H,40H,00H
;--文字火--
Line1_1
DB00H,00H,00H,0F0H,00H,00H,00H,0FFH,02H,40H,20H,18H,10H,00H,00H,00H
DB00H,80H,41H,20H,10H,0CH,03H,00H,03H,04H,18H,30H,60H,20H,00H,00H
;--文字:
车--
Line1_2
DB00H,04H,84H,0C4H,0A4H,9CH,87H,84H,0F4H,84H,84H,84H,84H,84H,00H,00H
DB04H,04H,04H,04H,04H,04H,04H,04H,0FFH,04H,04H,04H,04H,04H,04H,00H
;--文字:
站--
Line1_3
DB10H,50H,92H,1CH,10H,0F0H,10H,00H,00H,00H,0FFH,10H,10H,10H,10H,00H
DB10H,10H,0BH,0CH,0BH,08H,00H,7FH,21H,21H,21H,21H,21H,7FH,00H,00H
;--文字:
北--
Line3_3
DB00H,20H,20H,20H,20H,0FFH,00H,00H,00H,0FFH,40H,20H,30H,18H,10H,00H
DB10H,30H,18H,08H,04H,7FH,00H,00H,00H,3FH,40H,40H,40H,40H,78H,00H
;--文字:
校--
Line3_4
DB08H,88H,68H,0FFH,28H,48H,00H,88H,68H,09H,0EH,08H,0A8H,48H,88H,00H
DB02H,01H,00H,0FFH,00H,40H,42H,21H,26H,18H,18H,26H,61H,0C0H,40H,00H
.CODE;程序段
START:
MOVAX,@DATA
MOVDS,AX
NOP
CALLMainInit;主程序初始化
Main:
CALLScanKey;扫描按键
JNBMain
Main1:
CALLKeyRun
CMPKEYno,4
JZDISPL1
CMPKEYno,5
JZDISPL2
CMPKEYno,6
JZDISPL3
JMPMAIN
DISPL1PROCNEAR
CALLLCD_INIT;液晶初始化
CALLDelayTime
CALLDisLine01;第1行显示”水运“
CALLDelayTime
CALLDisLine00;第2行显示”下一站“
CALLDelayTime
CALLDisLine13;第3行显示“"西农南校"
CALLDelayTime
;CALLTimedelay1
RET
DISPL1ENDP
;液晶屏显示火车站-下一站-西农南校
DISPL2PROCNEAR
CALLLCD_INIT;液晶初始化
CALLDelayTime
CALLDisLine11;第1行显示“火车站"
CALLDelayTime
CALLDisLine00;第2行显示”下一站“
CALLDelayTime
CALLDisLine23;第3行显示"西农南校"
CALLDelayTime
;CALLTimedelay1
RET
DISPL2ENDP
;液晶屏显示西农南校-下一站-西农北校
DISPL3PROCNEAR
CALLLCD_INIT;液晶初始化
CALLDelayTime
CALLDisLine21;第1行显示"西农南校"
CALLDelayTime
CALLDisLine00;第2行显示”下一站“
CALLDelayTime
CALLDisLine33;第3行显示”西农北校"
CALLDelayTime
;CALLTimedelay1
RET
DISPL3ENDP
;主程序初始化
MainInitPROCNEAR
MOVbNewKey,0;有键按下标志位,清0-无键按下
MOVDX,I8255_Ctr;8255初始化
MOVAL,90H;PA为输入,PC的低四位为输出
OUTDX,AL
CALLISD_INIT
RET
MainInitENDP
;第1行显示"水运"
DisLine01PROCNEAR
LEASI,Line0_1
MOVAL,0;A-起始显示行地址,第2行
MOVAH,40;B-起始显示列地址,第40列,以下同
CALLWordDISL;左半屏,显示一个字子程序
LEASI,Line0_2
MOVAL,0
MOVAH,8
CALLWordDISR
RET
DisLine01ENDP
;第3行显示"水运"
DisLine03PROCNEAR
LEASI,Line0_1
MOVAL,6;A-起始显示行地址,第2行
MOVAH,40;B-起始显示列地址,第40列,以下同
CALLWordDISL;左半屏,显示一个字子程序
LEASI,Line0_2
MOVAL,6
MOVAH,8
CALLWordDISR
RET
DisLine03ENDP
;第2行显示"下一站"
DisLine00PROCNEAR
LEASI,Line4_1
MOVAL,3;A-起始显示行地址,第6行
MOVAH,32;B-起始显示列地址,第32列,以下同
CALLWordDISL;左半屏,显示一个字子程序
LEASI,Line4_2
MOVAL,3
MOVAH,49
CALLWordDISL
LEASI,Line4_3
MOVAL,3
MOVAH,16
CALLWordDISR;右半屏,显示一个字子程序
RET
DisLine00ENDP
;第3行显示"火车站"
DisLine23PROCNEAR
LEASI,Line1_1
MOVAL,5;A-起始显示行地址,第6行
MOVAH,32;B-起始显示列地址,第32列,以下同
CALLWordDISL;左半屏,显示一