|
发表于 2005-7-13 11:16:22
|
显示全部楼层
[转帖]ISD4000语音与89C51单片机通用开发板源程序
技术资料转贴自:
http://www.qlmcu.com/
http://www.qlmcu.com/dvbbs/index.asp
ISD4000语音与89C51单片机通用开发板源程序
本板采用国内最常用的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”一侧是录音状态,按住“AN”键不放,指示灯亮即可对着板上话筒讲话录音,松键时录音停止并形成一段。再按则录下一段。
按“STOP”键为复位,再录音时又从第一段开始。
2、放音
跳线插在“PLAY”一侧是放音状态,按一下“AN”键即播放一段,一段结束后自动停止放音,再按“AN”则播放下一段。
按“STOP”键为复位,再放音时又从第一段开始。
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 R=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 R=1 录音
AJMP PLAY R=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
M |
|