| 
 
 
   ISD1420使用的单片机控制                            *********编写人: 杜洋 *********
 ISD1400系列芯片是较为常用了语音录放集成电路,一般多用于语音电话、留言机等设备。更可于单片机实现接口,进行语音分段录放音的功能,可用于自动报时器,汽车自动报站器等设备,如果采用具有语音处理的16位或32位处理器实现同样的功能将会增大开发的周期和成本,会使本来简单的系统更加的复杂。
 开发简单的语音录放系统时,ISD的芯片(或者台湾巨华APR系列芯片)将成为开发工程师的必然选择。
 下面让我们来了解一下ISD系列芯片吧!
 ISD1420为美国ISD公司出品的优质单片语音录放集成电路,由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成。一个最小的录放系统仅由一个麦克风、一个喇叭、两个按钮、一个电源、少数电阻电容组成。录音内容存入永久存储单元,提供零功率信息存储,这个独一无二的方法是借助于美国ISD公司的专利——直接模拟存储技术(DAST TM)实现的。利用它,语音和音频信号被直接存储,以其原本的模拟形式进入EEPROM存储器。直接模拟存储允许使用一种单片固体电路方法完成其原本语音的再现。不仅语音质量优胜,而且断电语音保护。
 目前,ISD1420录放时间为20秒,(APR9301录放时间为20秒-30秒,RPR9600录放时间为50秒-60秒)
 。。。。
 
 我了解的ISD芯片是PDIP(双列直插)封装形式,其分为软封装和硬封装两种。软封装的芯片是在一个电路板上嵌入芯片内核,它是比较便宜的,而且还可以剪裁的更小嵌入到电路里。(合能单片机软封装的单价为12元,硬封装为17元)
 下面我将以ISD1420为例,说说我对ISD芯片的理解和使用,希望可以给大家一个参考。
 一、ISD最小化系统的录放音:
 ISD1400芯片可以和少量的外围元件构成一个最小化的录放音电路。下面是经典的最小化录放音电路图:
 。。。。。
 
 这个最小化系统有一个LED指示灯、三个微动开关,可以对芯片的录音、播放、停止进行控制。S3(RECORD)为录音键,按住它时LED灯点亮,此时为录音状态,当录放达到最大时间值或中途放开S3录音按键即停止录音。S2(PLAYL)为放音键,按一下它就可以播放录音,当放音达到录音的尾声时或中途按下了S1停止键则停止放音。S1为停止键,当放音过程中按下S1停止键停止放音。如果有待机时按住S1则开始放音,放音直到录音的尾声或中途放开S1键。
 当芯片处于录音状态时LED点亮,当芯片放音结束时LED会闪亮一下。
 只要按电路图接好电路,一般不用调试就可以使用。
 
 二、用微处理器对ISD芯片的分段录放音控制:
 用微处理器对ISD芯片的分段录放音控制时,才算是发挥了芯片的优势。ISD芯片通过8位并行地址线实现分段录放音,地址线的功能如下表:
 。。。。。
 
 ISD1420地址输入端具有双重功能,根据地址中的A6、A7的电平状态决定A0~A7的功能。如果A6、A7有一个低电平,A0~A7输入全解释为地址位,作为起始地址用,此时地址线仅作为输入端,在操作过程中不能输出内部地址信息。根据PLAYE、PLAYL或REC的下降沿信号,地址输入被锁定。如果A6、7同为高电平时,它们即为模式位。
 在这里我们只用到地址功能来分段控制,所以我们需要保证A6、A7不可同时为1,这里我们可以用软件进行保护。
 地址输入端A0~A7有效值范围为00000000~10011111,这表明最多可被划分为160个存贮单元,可录放多达160段语音信息。由A0~A7决定每段语音的起始地址,而起始地址又直接反映了录放的起始时间。其关系见公式:
 TQ=0.125s×(128A7+64A6+32A5+16A4+8A3+4A2+2A1+0)
 例如:
 第一段语音从0秒开始,地址设置为00000000;
 第二段语音从2秒开始,地址设置为00010000;
 第三段语音从5秒开始,地址设置为00100000;
 第四段语音从12秒开始,地址设置为01010000;
 
 。。。。。
 ISD芯片与微处理器(单片机)的硬件接口电路:A0~A7接单片机的一组I/O口上,再用3个I/O口分别作录音使能(接REC[27脚])、放音使能(接PLAYL[23脚])和停止反馈(接RECLED[25脚])。此时就可以用单片机对ISD分段录放音了。
 为了方便录音工作,我设计了一个录音专用电路板。CPU采用89S51,由两位静态数码管显示十六进制数据,还据有选择录音起始位,清除上一次录音等功能。非常适用于分段放音电路的前期录音与调试。下面就是录音板的电路图及源程序(汇编),供大家参考:
 。。。。。
 以下是程序(汇编):
 
 /*-------------------------------------------
 项目号:   212-0001
 项目名:   家电中央控制系统工程
 程序名:   ISD1402语音芯片分段录放音调试
 编写人:    杜洋
 初写时间:  2005年9月4日
 程序功能:    实现对ISD1420语音芯片的分段录放音
 实现方法:  用定时器产生最小125MS的录音长度值
 CPU说明:   89S52 24-PC  12MHZ晶振
 接口说明:  (详见初定义)
 信息说明:
 修改日志:
 NO.1-2005.9.19 增加了地址极限保护功能,防止录音出错。
 
 -------------------------------------------*/
 
 ;------------------------------------------初定义
 
 ISDDAT       EQU   P1                                     ;语音地址线
 
 KEYRED       EQU   P3.3                                 ;录音按键
 
 ISDRED       EQU   P3.0                                 ;录音使能(低有效)
 
 KEYPLAYL     EQU   P3.4                                 ;长放音键
 
 ISDPLAYL     EQU   P3.2                                 ;长放音使能
 
 KEYPLAYS     EQU   P3.5                                 ;短放音按键
 
 ISDPLAYS     EQU   P3.1                                 ;短放音使能
 
 KEYSET       EQU   P3.6                                 ;
 
 XX         EQU   P1.7                                 ;调试用灯
 
 STOPIN       EQU   P3.7                                 ;放音停止脉冲输入
 
 LED1         EQU   P0      ;静态数码管第一位                               ;数码管显示第一位(十位)
 
 LED2         EQU   P2      ;静态数码管第二位                               ;数码管显示第二位(个位)
 
 WRAM         EQU   20H      ;录音地址寄存器                               ;数码管显示值寄存器
 
 WBIT1       EQU   21H      ;放弃此次录音寄存器                               ;
 
 WW         EQU   22H   ;
 
 WBIT3       EQU   23H   ;
 
 
 ;-------------------------------------------------------------------程序入口
 ORG   0000H
 
 JMP   ISD_START
 
 ORG   000BH
 
 JMP   TT0
 
 ORG   0030H
 
 ;----------------------------------------------程序开始
 ISD_START:
 MOV   R1,#8
 MOV   R0,#WRAM
 RAM1:
 MOV   @R0,#0
 INC   R0
 DJNZ   R1,RAM1
 
 SETB   ISDPLAYL
 SETB   ISDRED
 SETB   ISDPLAYS
 SETB   KEYSET
 MOV   R2,#3
 MOV   TMOD,#01H       ;定时计数器工作方式
 MOV   TH0,#9EH       ;初值(9E58H--25MS)
 MOV   TL0,#58H       ;
 SETB   ET0               ;开T0允许
 SETB   EA               ;开总中断
 
 MOV   ISDDAT,#0FFH
 MOV   WRAM,#00H
 CALL   DISPLAY
 MOV   WBIT1,#0
 LOOP:                                             ;录音部分
 JB   KEYRED,N1
 CALL   DL20MS
 JB   KEYRED,N1
 MOV   ISDDAT,WRAM
 MOV   WBIT1,WRAM
 MOV   WBIT3,WRAM
 CLR   ISDRED
 SETB   TR0               ;启动定时器
 M0:
 JNB   P1.6,M1                  ;地址极限值保护
 JNB   P1.7,M1
 JMP   M2
 M1:
 JNB   KEYRED,M0
 M2:
 SETB   ISDRED
 CLR   TR0
 N1:                                                ;回放刚才录音
 JB   KEYPLAYL,N2
 CALL   DL20MS
 JB   KEYPLAYL,N2
 MOV   ISDDAT,WBIT1
 CLR   ISDPLAYS
 CALL   DL60MS
 SETB   ISDPLAYS
 N2:                                                ;加地址功能,设定放音地址
 JB   KEYPLAYS,N3
 CALL   DL20MS
 JB   KEYPLAYS,N3
 INC   WBIT1
 MOV   ISDDAT,WBIT1
 CALL   DISPLAY2
 CALL   DL60MS
 N3:                                                ;清除刚才录音
 JB   KEYSET,N4
 CALL   DL20MS
 JB   KEYSET,N4
 MOV   ISDDAT,WBIT3
 MOV   WRAM,WBIT3
 MOV   WBIT1,WBIT3
 CALL   DISPLAY
 N4:
 JMP   LOOP
 ;-------------------------------------------数码管显示程序
 DISPLAY:
 MOV WW,WRAM
 JMP GO
 DISPLAY2:
 MOV WW,WBIT1
 GO:
 MOV A,WW                                           ;静态数码管显示
 MOV DPTR,#TAB1
 ANL A,#0F0H
 SWAP A
 MOVC A,@A+DPTR
 MOV LED1,A
 MOV A,WW
 ANL A,#0FH
 MOVC A,@A+DPTR
 MOV LED2,A
 RET
 ;----------------------------------LED数码管显示表(0-F) TAB1
 TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
 DB 88H,83H,0A7H,0A1H,86H,8EH
 ;---------------------------------------------------------T0中断
 TT0:
 MOV   TH0,#9EH       ;重装初值(25MS)
 MOV   TL0,#58H       ;
 DJNZ   R2,TT0EXIT     ;1位的录音时长(125MS)
 MOV   R2,#3         ;
 INC   WRAM
 CALL   DISPLAY
 TT0EXIT:
 RETI               ;T0中断结束
 ;-----------------------------------延时子程序
 DL20MS:                                             ;20毫秒延时,主要用于去抖动。(100,100)
 MOV   R6,#100
 DL20MS_1:
 MOV   R7,#100
 DJNZ   R7,$
 DJNZ   R6,DL20MS_1
 RET
 DL60MS:                                           ;60毫秒延时
 CALL   DL20MS
 CALL   DL20MS
 CALL   DL20MS
 RET
 DL05S:                                             ;1秒延时,用在了开始等待。(50)
 MOV   R5,#50
 DL05S_1:
 CALL   DL20MS
 DJNZ   R5,DL05S_1
 RET
 ;---------------------------------------结束
 END
 
 在录音板上按一下录音键,并录入第一个段音。完成后LED上显示了第二段的起始地址,按重放键放音,感觉满意后记下这个数据,开始下一段录音。如果感觉不满意则按清除键回到上次的地址位重新录音。录好后,在放音时只要给出放音的起始地址即可放音,当放音结束后RECLED将输出一个低电平脉冲。程序查寻此脉冲并停止放音或开始另一段放音。程序如下:
 PLAY     EQU   P3.3                   ;语音播放__
 
 STOPIN   EQU   P3.0                   ;语音停止信号输入__
 
 MOV   SPDAT,#00H;放入放音地址
 CLR   PLAY ;开始放音
 JB   STOPIN,$;查寻停止反馈
 SETB   PLAY;有停止信号,停止放音
 CALL   DL20MS;延时等待芯片恢复
 MOV   SPDAT,#27H;放入第二段放音地址
 CLR   PLAY
 JB   STOPIN,$
 SETB   PLAY
 CALL   DL20MS
 
 这种方法非常的方便实用。
 |