单片机程序控制语音播放
设计背景:用单片机控制语音芯片的地址线、片选线(CS)以及录音/放音信号线(P/R),再把单片机和语音芯片嵌入到通信设备、智能仪器、治安报警及儿童玩具中,就可做成播放的机器,应用范围很广。在工业控制过程中,常用灯光或警笛作故障提示和运行进程的阶段性提示,目前这种提示方式为语音提示的替代,这是因为新型半导体语音芯片性能优越,使用方便。
本次设计涉及的语音芯片ISD25120的介绍:它是ISD公司开发的语音芯片,其主要特点有:可持续、放音,持续录放时间可达120s;可分段录放(最多可分为600段),最小录放的时间单元为0.2s;断电后信息仍然存储,不会丢失,无需后备电池。信息可保存100年之久;录放次数在10万次以上;操作简单,无需专用编程器或语音开发器;单电源供电,典型电压为+5V;易于与单片机接口,内部自带自动音量的控制(AGC)电路及滤波电路,输出音质良好。
主要功能:本设计主要是在熟悉ISD系列语音芯片的电路设计操作及使用方法的基础上,且通过手工操作实现语音芯片ISD25120的录音(其操作过程在操作步骤模块中所述)的前提下,用程序模拟手动操作编程实现ISD系列语音芯片的分段放音过程。
硬件设备及其连线:ISD25120语音芯片及其电路板一套,模块化单片机实验仪一台,10芯电缆一条,直流电源(+5V,1A)一台,喇叭一个,仿真器及计算机一台。
实际操作步骤:
(1)录音过程:
设置S2状态为0,即P/R=0,ISD25120处于录音状态。
以对第1段录音为例:录音地址000H~0A0H,录音时间为32s。
①设置S1的8位拨位开关,使得6位地址(A4~A9)全为0,PD=0,CE=0,S1的8位拨动开关状态为00000000,即00H;
②将PD开关拨到1状态,然后再将开关拨回到0状态,开始录音并计时;
③在不超过32s的时间内停止录音:将PD开关拨到1状态,停止录音。
同样的原理,第2、3、4段录音只需将地址改为相应的0B0H~150H、160H~200H和210H~250H,即通过设置S1的8位拨动开关来实现。
(2)用10 芯扁平电缆将主板的J3插座与语音实验板的J3插座对接;设置语音实验板的开关S2为OFF状态(P/R=1),ISD25120处音状态;在仿真器上编程,执行单步调试及全速运行。
(a)从FIRST地址起始,执行程序,播放第1段音乐:
START:LACALL FIRST
AJMP $
(b)从SECOND地址开始,执行程序,播放第2段音乐
START: LCALL SECOND
AJMP $
(c)从THIRD地址开始,执行程序,播放第3段音乐:
START:LCALL THIRD
AJMP $
(d)从FOURTH地址起始,执行程序,播放第4段音乐:
START:LCALL FOURTH
AJMP $
在单片机程序的控制下,分别将上述4段语音播出。
实验电路原理图:
原理图中包括2部分:一部分是主板上的8位并口输出(74LS374,U14),口地址为8100H,输出插座为J3;另一部分在语音电路实验板上,插座为J3。将主板上J3与实验板的J3用10芯扁平电缆连接。图中MICI为驻极式话筒,LS1为放音喇叭,IC1(MC34119)为语音放大电路,ISD25120为语音录放芯片。S1的8位拨动开关全部设置在OFF位置,使得ISD25120电路脱离手工操作状态,改用程序控制ISD25120工作。ISD25120接收来自主板的控制信号。该信号被锁存在U14(74LS374)的8位输出端上。用拨动开关S2设置P/R在OFF位置上(P/R=1),处于放音状态。地址A0~A3已在电路图中接地。主板上8位并口通过U14输出ISD25120的6位地址(A4~A9)及ISD25120的PD和CE信号,共8位信号。这样单片机通过程序就可以完全控制了ISD25120的分段放音操作。
主板上74LS374与实验板上ISD25120的位地址及PD和CE对接如下表1中所列:
|
74LS374 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
ISD25120 |
PD |
CE |
A9 |
A8 |
A7 |
A6 |
A5 |
A4 |
表1
在线仿真器编程,单片机程序控制ISD25120芯片放音,可将录入的内容播放出来。
程序流程图如下图1、2、3所示:
停止放音(PD=0,CE=1),地址复位(PD上升沿有效),送放音地址,启动放音(CE=0) |
源程序:
ORG 0
AJMP MAIN ;按1、2、3、4段次序播放
ORG 30H ;主程序的首地址:30H
MAIN: LCALL FIRST;
ACALL D30S ;延时30s,等待放音完毕
ACALL ISDCLR ;停止播放
LCALL SECOND ;播放第2段音乐
ACALL D30S ;延时30s,等待放音完毕
ACALL ISDCLR ;停止播放
LCALL THIRD ;播放第3段音乐
LCALL D30S ;延时30s,等待放音完毕
ACALL ISDCLR ;停止播放
LCALL FOURTH ;播放第4段音乐
ACALL D10S ;延时30s,等待放音完毕
AJMP $ ;原地等待
;播放第1段音乐的程序起始地址:FIRST
FIRST:LCALL ISDCLR ;将语音芯片复位,停止播放
MOV R4,#0H ;将ISD25120的放音地址#0H存放在R4中
;放音首地址#000H,因为ISD25120的地址A0~A3已接地
LCALL SPEAKER ;调用播音程序,开始播放
RET
;播放第2段音乐的程序起始地址:SECOND
SECOND:ACALL ISDCLR ;将语音芯片复位,停止播放
MOV R4,#0BH;将ISD25120的放音地址#0BH存放在R4中
;放音首地址#0B0H,因为ISD25120的低4位地址A0~A3
;已接地
LCALL SPEAKER ;调用播音程序,开始播放
RET
;播放第3段音乐的程序起始地址:THIRD
THIRD:LCALL ISDCLR ;将语音芯片复位,停止播放
MOV R4,#16H ;将ISD25120的放音地址#160H存放在R4中
;放音首地址#160H,因为ISD25120的低4位地址A0~A3
;已接地
LCALL SPEAKER ;调用播音程序,开始播放
RET
;播放第4段音乐的程序起始地址:FOURTH
FOURTH:LCALL ISDCLR;将语音芯片复位,停止播放
MOV R4,#21H ;将ISD25120的放音地址#210H存放在R4中
;放音首地址#210H,因为ISD25120的地址A0~A3已接地
LCALL SPEAKER ;调用播音程序,开始播放
RET
SPEAKER:MOV DPTR,#8100H ;#有8100H为ISD25120的端口地址
MOV A,R4 ;将R4中存放的地址A4~A9送到ISD25120
ORL A,#080H ;1->PD(复位),0->CE, 送地址A4~A9
MOVX @DPTR,A
ACALL D50mS ;延时
ANL A,#3FH ;0->PD(启动),0->CE,送地址A4~A9
MOVX @DPTR,A
RET
ISDCLR:MOV DPTR,#8100H ;#8100H为ISD25120的端口地址
ORL A,#40H ;0->PD,1->CE,停止播放
MOVX @DPTR,A
LCALL D50MS
RET
D50mS:MOV R6,#50 ;因晶振为6MHZ,1个机器周期为2,停止播放
SD: MOV R7,#250 ;故延时时间为(4ms×250+2ms)×50=50.1ms
DJNZ R7,$ ;DJNZ指令占有2个机器周期
DJNZ R6,SD
RET
D10S:MOV R5,#200 ;延迟时间为500ms×200=10s
DE1: ACALL D50mS
DJNZ R5,DE1
RET
D30S:MOV R3,#3 ;延迟时间为10s×3=30s
DE2: ACALL D10S
DJNZ R3,DE2
RET
END
课程设计体会
通过本次课程设计,使我增进了对单片机的感性认识,加深了对单片机理论方面的理解。对单片机应用系统的软硬件设计过程、方法及实现有了一定的了解和掌握,是为以后设计和实现单片机应用系统打下良好基础一次练习过程。在设计过程中,参考了许多非常好的单片机设计实例,从中得出了许多实际设计过程中应该特别注意的问题,真正为以后实战操作提供了宝贵的实践经验。
参考文献
万光毅,严义.单片机实验与实践教程(一).北京:北京航空航天大学出版社,2003
李光儿,楼然苗等.单片机课程设计实例指导.北京:北京航空航天大学出版社,2004 |