本板采用国内最常用的MCS-51语言单片机89C51,与最新的ISD4000系列语音芯片结合,可供用户开发各种最新的智能型数码语音产品。 如图 一、 结构 板上已装配好: 89C51--单片机,8031内核,4K可反复擦写的程序存储器,32条I/O口,5V工作 ISD4003-08--语音芯片,音质优异的模拟存储技术,可反复录放,8分钟,可分1200段,SPI接口方式,3V供电 LM386--功率放大器,0.5W驱动 24C01(选配件)--I2C总线串行存储器。 还有驻极体话筒(MIC)、话筒放大器、音量电位器、发光管等部件。 二、 性能参数 外接电源电压:5V(稳压) 外接喇叭:4-16欧姆,0 .5W 工作电流:25~30mA ( 录音),50~80mA (放音) 静态电流:13mA 随板提供的演示程序功能: 1、录音 跳线插在"REC"一侧是录音状态,按住"START"键不放,指示灯亮即可对着板上话筒讲话录音,松键时录音停止并形成一段。再按则录下一段。按"STOP"键为复位,再录音时又从第一段开始。 2、放音 跳线插在"PLAY"一侧是放音状态,按一下"START"键即播放一段,一段结束后自动停止放音,再按"START"则播放下一段 按"STOP"键为复位, 3、音源方式可由板载MIC做为音源输入设备,也可选择线路(LINE IN)录音,由跳线选择。使用线路录音时,将短路叉取下,音频线直接接到左侧两插针上,信号幅值请参考ISD4000系列芯片说明 89C51-ISD4000语音电路程序AT89C51单片机 89C51单片机12MHz 注:本程序为ISD4002、4003的控制程序,ISD4004的程序须加些改动,请注意程序后边的注释。 SS EQU P1.0 ;片选 SCLK EQU P1.1 ;ISD4003时钟 MOSI EQU P1.2 ;数据输入 MISO EQU P1.3 ;数据输出 LED EQU P1.7 ;指示灯 INT EQU INT0 ;中断 AN EQU P1.6 ;执行 STOP EQU P1.5 ;复位 PR EQU P1.4 ;PR=1录音 PR=0放音 ;初始化 ORG 0000H ; AJMP MAIN ; MAIN: MOV SP,#10H ; MOV P1,#0FFH ; MOV P2,#0FFH ; MOV P3,#0FFH ; MOV P0,#0FFH ; CLR EA ; MAII: SETB LED ;关指示灯 ACALL DSTOP ;ISD掉电 MAS0: MOV 3AH,#200 ; MAS1: JB AN,MAS0 ;等按AN键 DJNZ 3AH,MAS1 ; ACALL UP ;ISD上电 MOV 20H,#00H ;ISD低位地址 MOV 21H,#00H ;ISD高位地址 JB PR,REC ;PR=1 录音 AJMP PLAY ;PR=0 放音 ;SETREC 16位 ;从指定地址录音 10100 <X A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 > REC: MOV A,20H ;发地址 A7-A0 ACALL ISDX ; MOV A,21H ;发地址 A9-A8 SETB ACC.7 ; CLR ACC.6 ; SETB ACC.5 ; CLR ACC.4 ; CLR ACC.3 ; ACALL ISDX ; SETB SS ;关片选 ;REC 8位 ;从当前地址录音 10110 <X A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 > REC1: MOV 36H,#10 ; REC2: ACALL YS50 ;延时录音 DJNZ 36H,REC2 ; CLR LED ;开指示灯 MOV A,#0B0H ;发 1011 0XXX ACALL ISDX ; SETB SS ;关片选 REC3: MOV 35H,#200 ; REC4: JNB INT,REC7 ;OVF=0芯片溢出 JNB AN,REC3 ; DJNZ 35H,REC4 ; SETB LED ;关指示灯 ACALL STOPP ;停止当前操作 REC5: JNB STOP,REC6 ;中断RESET JB AN,REC5 ;等待AN=0 ACALL STOPP ;停止当前操作 AJMP REC1 ; REC6: CLR SCLK ;时钟SCLK=0 SETB SS ;关片选 ACALL STOPP ;停止当前操作 AJMP MAII ; REC7: SETB LED ;关指示灯 MOV 36H,#15 ; REC8: ACALL YS50 ;延时录音 JB AN,REC6 ;等待AN=1 DJNZ 36H,REC8 ; CLR LED ; MOV 36H,#15 ; REC9: ACALL YS50 ;延时录音 JB AN,REC6 ;等待AN=1 DJNZ 36H,REC9 ; AJMP REC7 ; ;SETPLAY 16位 ;从指定地址放音 11100 <X A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 > PLAY: JNB AN,PLAY ;等待AN=1 MOV A,20H ;发地址 A7-A0 ACALL ISDX ; MOV A,21H ;发地址 A9-A8 SETB ACC.7 ; SETB ACC.6 ; SETB ACC.5 ; CLR ACC.4 ; CLR ACC.3 ; ACALL ISDX ; SETB SS ;关片选 ;PLAY 8位 ;从当前地址放音 11110 <X A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 > PLAY1: CLR LED ;LED开指示灯 MOV A,#0F0H ;发 11110 XXXXXXXX ACALL ISDX ;发 << SETPLAY >> SETB SS ;关片选 PLAY2: JNB STOP,REC6 ;STOP=0停止放音 JB INT,PLAY2 ;无OVF EOM继续放音 SETB LED ;关指示灯 ACALL STOPP ;停止当前操作 ;检测OVF CLR SS ;开片选 CLR SCLK ;时钟SCLK=0 SETB SCLK ;时钟SCLK=1 JB MISO,REC6 ;芯片到未 CLR SCLK ;时钟SCLK=0 SETB SS ;关片选 ACALL STOPP ;停止当前操作 PLAY3: JNB STOP,REC6 ;中断放音 JB AN,PLAY3 ;等待AN=0 AJMP PLAY1 ;顺序放音 ;ISD上电 << POWERUP >> UP: MOV A,#20H ;发00100 XXXXXXXXXXX ACALL ISDX ; SETB SS ;关片选 ACALL YS50 ;50mS延时 ACALL YS50 ;50mS延时 RET ; ;停止当前操作<< STOP >> 8位 STOPP: MOV A,#30H ;发 0X11 0XXX ACALL ISDX ; SETB SS ;关片选 ACALL YS50 ;50mS延时 ACALL YS50 ;50mS延时 RET ; ;停止当前操作掉电<< STOPPWRDN >> 8位 DSTOP: MOV A,#10H ;发0X010 XXXXXXXXXX ACALL ISDX ; SETB SS ;关片选 ACALL YS50 ;50mS延时 ACALL YS50 ;50mS延时 RET ; ;ISD3300,4003 SPI写入程序 8位 数据在A ISDX: CLR SS ;开片选 MOV R6,#8 ; CLR SCLK ;时钟SCLK=0 ISD1: MOV C,ACC.0 ; MOV MOSI,C ;数据写 MOSI SETB SCLK ;时钟SCLK=1 RR A ; CLR SCLK ;时钟SCLK=0 DJNZ R6,ISD1 ; RET ; ;**** 10mS延时 **** YS1: MOV TMOD,#01H ; MOV TH0,#0D8H ;10mS延时初值置入 MOV TL0,#0F0H ;(65536-X)*1=10MS SETB TR0 ;65536-(10000/1)=D8F0H JNB TF0,$ ; CLR TF0 ; CLR TR0 ; RET ; ;**** 50mS延时 **** YS50: MOV TMOD,#01H ; MOV TH0,#3CH ;50mS延时初值置入 MOV TL0,#0B0H ;(65536-X)*1=50MS SETB TR0 ;65536-(50000/1) JNB TF0,$ ; CLR TF0 ; CLR TR0 ; RET ; END ; 附:ISD4004的程序改动注明: SETREC: ;指定地址录音 MOV 20H,#00H ;低八为地址 MOV 21H,#00H ;高八位地址 MOV 22H,#0a0H ;操作码 MOV A,20H ACALL ISDX MOV A,21H ACALL ISDX MOV A,22H ACALL ISDX SETB SS 指定地址录音(SETPLAY)和指定地址快进(SETMC)的改动与上述相同 附 :89C51-ISD4000语音电路程序 |