单片机原理课程设计公交车报站.docx
《单片机原理课程设计公交车报站.docx》由会员分享,可在线阅读,更多相关《单片机原理课程设计公交车报站.docx(12页珍藏版)》请在冰豆网上搜索。
![单片机原理课程设计公交车报站.docx](https://file1.bdocx.com/fileroot1/2023-3/28/b8806670-ceb0-48a5-b14c-b4e4647565cc/b8806670-ceb0-48a5-b14c-b4e4647565cc1.gif)
单片机原理课程设计公交车报站
单片机原理课程设计
公交车语音报站系统设计
班级:
_______
学号:
_______
姓名:
_______
同组:
_______
日期:
_______
一.工作原理
1.人类语音基本概念
语音即语言的声音,是语言符号系统的载体。
它由人的发音器官发出,负载着一定的语言意义。
语言依靠语音实现它的社会功能。
语言是音义结合的符号系统,语言的声音和语言的意义是紧密联系着的,因此,语言虽是一种声音,但又与一般的声音有着本质的区别.
语音是人类发音器官发出的具有区别意义功能的声音,不能把语音看成纯粹的自然物质;语音是最直接地记录思维活动的符号体系,是语言交际工具的声音形式。
语音的物理基础主要有音高、音强、音长、音色,这也是构成语音的四要素。
音高指声波频率,即每秒钟振动次数的多少;音强指声波振幅的大小;音长指声波振动持续时间的长短,也称为"时长";音色指声音的特色和本质,也称作"音质"。
人对声音的感觉有一定频率范围,大约每秒钟振动20次到20000次范围内,即频率范围是20Hz--20000Hz,如果物体振动频率低于20Hz或高于20000Hz人耳就听不到了,高于20000Hz的频率就叫做超声波,而低于20Hz的频率就叫做次声波。
所以说不是所有物体的振动所发出的声音我们都能听到的。
另外要能听到声音也必须有传播声音的介质。
2.录音、放音基本原理:
ISD1420语音芯片内部结构框图
前置放大器对通过麦克风送入的语音信号进行放大,并受自动增益电路AGC控制,保证输入信号大小变化时不失真。
前置放大器输出的信号可通过电容耦合送入信号放大器,也可通过电容耦合直接输入其他模拟信号,如录音机等的线路输出,输入信号典型值为50mv(峰值)。
信号放大器输出送入滤波器,在采样时钟和模拟收发器控制下进行比较采样,存入不易失真模拟存贮器单元。
(录音)
录入信号输出经滤波器,输出放大器送到扬声器引脚SP+、SP-,从而完成语音的重放。
(放音)
地址线经缓存器、译码器控制管理存储单元,控制逻辑控制芯片的录、放和触发控制以及输出指示等。
内部时钟及定时器、采样时钟为采样等提供时钟脉冲信号。
3.基本设计思想:
(1)手动控制方式,通过B1区按键REC录制四个站的站名,通过按键PLAY、
PLAYL放音
(2)MCU控制方式,通过G6区8个按键控制录放音:
1-4号键录制每个站站名各
5秒;然后通过5-8号键分别放出,放音内容分别对应1-4号键录制的四个站站名。
二.硬件电路设计
1.主要部件的选用及工作原理
ISD1420语音存储模块
IISD1420封装引脚步图
电源(VCCA,VCCD)芯片内部的模拟和数字电路使用不同的电源总线,并且分别引到外封装上,这样可使噪声最小。
模拟和数字电源端最好分别走线,尽可能在靠近供电端处相连,而去耦电容应量靠近芯片。
地线(VSSA,VSSD)芯片内部的模拟和数字电路也使用不同的地线,这两个脚最好在引脚焊盘上相连。
录音(/REC)低电平有效。
只要/REC变低(不管芯片处在节电状态还是正在放音),芯片即开始录音。
录音期间,/REC必须保持为低。
/REC变高或内存录满后,录音周期结束,芯片自动写入一个信息结束标志(EOM),使以后的重放操作可发及时停止。
之后芯片自动进入节电状态。
注:
/REC的上升沿有50毫秒防颤,防止芯片自动进入节电状态。
边沿触发放音(/PLAYE)此端出现下降沿时,芯片开始放音。
放音持续到EOM标志或内存结束,之后芯片自动进入节电状态。
开始放音后,可以释放/PLAYE。
电平触发放音(/PLAYL)此端出现下降沿时,芯片开始放音。
放音持续至端回到高电平,遇到EOM标志,或内存结束。
放音结束后芯片自动进入节电状态。
注:
放音过程中当遇到EOM或内存结束时,如果/PLAYE或/PLAYL仍处在高电平,芯片虽然也进入节电状态(内部震荡器和时钟停止工作),但是由于芯片没有对/PLAYE和/PLAYL的上升沿进行消颤,随后在这两个引脚上出现的下隆沿(例如释放按键时的抖动)都会触发放音。
录音指示(/RECLED)处于录音状态时,此端为低,可驱动LED。
此外,放音遇到EOM标志时,此端输出低电平脉冲。
话筒输入(MIC)此端边至片内前置放大器。
片内自动增益控制电路(AGC)将前置增益控制在-15至24dB。
外接话筒应通过串联电容耦合到此端。
耦合电容值和此端的10KΩ输入阻抗决定了芯片频带的低频截止点。
话筒参考(MICREF)此端是前置放大器的反向输入。
当以差分形式连接话筒时,可减小噪声,提高共模抑制比。
自动增益控制(AGC)AGC动态调节器整前置境益以补偿话筒输入电平的宽幅变化,使得录制变化很大的音量(从耳语到喧哗嚣声)时失真都能保持最小。
响应时间取决于此端的5KΩ输入阻抗和外接的对地电容(即线路图中的C6)的时间常数。
释放时间取决于此端外接的并联对地电容和电阻(即线路图中R5和C6)的时间常数。
470KΩ和4.7uF的标称值在绝对大多数场合下可获得满意的效果。
模拟输出(ANAOUT)前置放大器输出。
前置电压增益取决于AGC端的电平。
模拟输入(ANAIN)此端即芯片录音的输入信号。
对话筒输入来说,ANAOUT端应通过外接电容连至本端。
该电容和本端的3KΩ输入阻抗给出了芯片频带的附加低端截止频率。
其它音源可通过交流耦合直接连至本端。
喇叭输出(SP+、SP-)这对输出端能驱动16Ω以上的喇叭。
单端使用时必须在输出端和喇叭间接耦合电容,而双端输出既不用电容又能将功率提高4倍。
录音时,它们都呈高阻态;节电模式下,它们保持为低电平。
外部时钟(XCLK)此端内部有下拉元件,不用时应接地。
芯片内部的采样时钟在出厂前已调校,保证了标称的最小录音时间。
商业级芯片在整个温度各电压范围内,频率变化在+2.25%内,并保证最小录放时间,所以有些芯片的录放时间比标称的值稍大。
工业级芯片在整个温度和电压范围内,频率变化在+5%内,建议使用稳压电源。
若要求更高精度或系统同步,可从本端输入外部时钟,频率如表2-1“外部钟频”所示。
由于内部的防混淆及平滑滤波器已设定,帮上述持荐的时钟频率不应改变。
输入时钟的占空比无关紧要,因为内部首先进行了分频。
地址(A0~A7)地址端有两个作用,取决于最高(MSB)两位A7、A6的状态。
当A7或A6有一个为0时,所有输入均释放为地址位,作为当前录放操作的起始地址。
地址端只用输入,不输出操作过程的内部地址信息。
地址在/PLAYE、/PLAYL、或/REC的下降沿锁存。
2.电路图
三.汇编语言程序设计
1.程序流程图
2.汇编语言设计
NAMEISD1420;语音模块操作子程序
PUBLICISD_INIT,ISD_MODE,ISD_REC,ISD_PLAY,ISD_STOP
;ISD1420连接设置
RECBITP3.2;录音接口
PLAYEBITP3.3;电平触发放音接口
PLAYLBITP3.4;边沿触发放音接口
ISDCOMMXDATA0F000H;录放音地址/操作模式输入地址,0F000H是接到CS1上的地址
ISD1420_CODESEGMENTCODE
RSEGISD1420_CODE
;录音子程序
;A--存放操作方式设置值,R7--录几秒
ISD_INIT:
SETBREC;语音模块初始化,关闭录放音功能
SETBPLAYE
SETBPLAYL
MOVDPTR,#ISDCOMM
CLRA
MOVX@DPTR,A;允许手动录放音,当A6,A7为高时,无法手动放音
RET
;操作模式,A-操作模式设置值
ISD_MODE:
PUSHACC
LCALLISD_STOP;语音模块初始化,将REC,PLAYE,PLAYL置位,并设置操作模式
MOVDPTR,#ISDCOMM;设置操作模式:
分段录音
POPACC
MOVX@DPTR,A;设置操作模式命令在A中
CLRPLAYL;给一个上升沿,锁存命令
NOP
NOP
NOP
SETBPLAYL
RET
;录音
ISD_REC:
MOVDPTR,#ISDCOMM;设置录音起始地址
MOVX@DPTR,A
CLRREC;REC变低,即开始录音
RET
;放音子程序
;A--放哪段音
ISD_PLAY:
PUSHACC
CALLISD_STOP;暂停之前的录放音操作
POPACC
MOVDPTR,#ISDCOMM;设置放音起始地址
MOVX@DPTR,A
CLRPLAYE;开始放音,边沿放音模式
NOP
SETBPLAYE
RET
;停止录放音
ISD_STOP:
CLRPLAYL;一个负脉冲停止放音
NOP
SETBPLAYL
LCALLDelay50ms
SETBREC;关闭所有操作指令
SETBPLAYE
MOVDPTR,#ISDCOMM
CLRA
MOVX@DPTR,A;允许手动录放音,当A6,A7为高时,无法手动放音
RET
;延时
Delay50ms:
PUSH06H
PUSH07H
MOVR6,#100
Delay50ms_1:
MOVR7,#200
DJNZR7,$
DJNZR6,Delay50ms_1
POP07H
POP06H
RET
MAIN_CODESEGMENTCODE
STACKSEGMENTIDATA
;ISD1420
ISD1420_AD1EQU00H;1号键录放音起始地址,每次录音5s
ISD1420_AD2EQU10H;2号键录放音起始地址
ISD1420_AD3EQU20H;3号键录放音起始地址
ISD1420_AD4EQU25H;4号键录放音起始地址
RSEGSTACK
DS20H;32BytesStack
CSEGAT0000H;定位0
LJMPSTART
RSEGMAIN_CODE;开始程序段
START:
MOVSP,#STACK-1
LCALLMainInit;主程序初始化
Main:
LCALLScanKey;扫描按键
JNCMain
Main1:
LCALLKeyRun;按键处理
JNBF0,Main;是否有新的键按下
CLRF0;清按键标志
SJMPMain1
JMPMAIN;循环进行实验内容介绍与ISD1420功能测试
;主程序初始化
MainInit:
CLRF0;有键按下标志位,清0-无键按下
MOVP1,#0FFH
LCALLISD_INIT;ISD1420初始化
RET
;********************************
;录放音子程序
;********************************
KEY1:
MOVA,#ISD1420_AD1;录音首地址
LJMPKEY_REC
KEY2:
MOVA,#ISD1420_AD2
LJMPKEY_REC
KEY3:
MOVA,#ISD1420_AD3
LJMPKEY_REC
KEY4:
MOVA,#ISD1420_AD4
LJMPKEY_REC
KEY_REC:
MOVR7,#20;录音时间长度,5s
LCALLISD_REC;调用录音子程序
KEY_REC1:
LCALLDelay_025S;延时
JBF0,KEY_REC2;检测按键是否有键按下
DJNZR7,KEY_REC1;录音时间,根据R7的值决定
LCALLISD_STOP;停止录音
KEY_REC2:
RET
;放音子程序
KEY5:
MOVA,#ISD1420_AD1;放音首地址
LJMPKEY_PLAY
KEY6:
MOVA,#ISD1420_AD2
LJMPKEY_PLAY
KEY7:
MOVA,#ISD1420_AD3
LJMPKEY_PLAY
KEY8:
MOVA,#ISD1420_AD4
LJMPKEY_PLAY
KEY_PLAY:
MOVR7,#20
LCALLISD_PLAY;调用录用子程序
KEY_PLAY1:
LCALLDelay_025S;用于进度显示的时间参照
JBF0,KEY_PLAY2;检测按键是否有键按下
DJNZR7,KEY_PLAY1
KEY_PLAY2:
RET
KeyRun:
MOVDPTR,#KeyTab;有键按下,跳到相应处理程序
MOVA,B
RLA
JMP@A+DPTR
KeyTab:
SJMPKEY1;1--4号键,分别各录音5秒,ISD1420可录音20秒
SJMPKEY2
SJMPKEY3
SJMPKEY4
SJMPKEY5;5--8号键,对应分别放音各5秒
SJMPKEY6
SJMPKEY7
SJMPKEY8
;按键扫描
ScanKey:
MOVA,P1;键扫描
CJNEA,#0FFH,ScanKey1
ScanKey4:
CLRC
RET
ScanKey1:
ACALLScanKey2
JNCScanKey4
ScanKey3:
MOVB,A
ACALLDelay20ms;消抖动
ACALLDelay20ms
ACALLScanKey2
JNCScanKey4
CJNEA,B,ScanKey3
ScanKey5:
MOVA,P1
CJNEA,#0FFH,ScanKey5
SETBC
RET
ScanKey2:
CLRA
JNBP1.0,ScanKey21
INCA
JNBP1.1,ScanKey21
INCA
JNBP1.2,ScanKey21
INCA
JNBP1.3,ScanKey21
INCA
JNBP1.4,ScanKey21
INCA
JNBP1.5,ScanKey21
INCA
JNBP1.6,ScanKey21
INCA
JNBP1.7,ScanKey21
CLRC
RET
ScanKey21:
SETBC
RET
Delay20ms:
MOVR6,#10
Delay1:
MOVR7,#100
DJNZR7,$
DJNZR6,Delay1
RET
;延时0.25s
Delay_025S:
PUSH05H
PUSH06H
PUSH07H
MOVR5,#6
DL1S_1:
MOVR6,#100
DL1S_2:
MOVR7,#200
DJNZR7,$
DJNZR6,DL1S_2
DJNZR5,DL1S_1
ACALLScanKey
JNCDL1S_3
SETBF0;F0有键按下标志,F0=1,有键按下
DL1S_3:
POP07H
POP06H
POP05H
RET
END
四.结束语
作为一名电气自动化专业的大二学生,我觉得做课程设计是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是专业课。
我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?
如何把我们所学的专业基础课理论知识运用到实践中去呢?
我想这次的课程设计对我们就是一种很好的锻炼。
在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。
在设计中,由于语音存储模块的存储空间有限,使四个站录音放音时间很短和分配不均,我们通过修改录音放音的起始地址,解决了分配不均的问题,至于录放音的时间与ISD1420语音模块的存储空间有关,所以没有延长其时间。
其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:
Protel画图、模拟数字电路知识等。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
这次课程设计终于完成了,整个设计我基本上还满意,由于水平有限,难免有错误,还望老师批评指正。
希望答辩时,老师多提问些问题,由此我可以更好地了解到自己的不足,以便课后加以补偿,同时也对给过我帮助的所有同学和各位指导老师表示衷心的感谢!
五.参考文献
[1]李全利.单片机原理及应用技术[M].北京:
高等教育出版社,2009
[2]闫飞.用ISD1420P制作语音自动播放器[J].北京:
电子报,2002年4月21日第12版
[3]胡宴如,耿苏燕.模拟电子技术基础[M].北京:
高等教育出版社,2008
[4]陈洪财.单片机C语言和汇编语言实用开发技术[M].哈尔滨工业出版社,2008
[5]柳春锋.Protel99SE实用教程[M].北京:
高等教育出版社,2007
[6]杨志忠.数字电子技术[M].北京:
高等教育出版社,2008
[7]李学海.PIC单片机实用教程—提高篇[M].北京航空航海大学出版社,2007