1. 你好,ISD4004做语音录放电路时用与录音的驻极体咪头不用加三极管放大直接输入到ISD4004就可以么
华邦的ISD录音电路好像都没有加什么放大电路呀
2. 语音录放电路谁会!请指教!
首先搞清楚,这是模拟电路还是数字电路,如果是模拟电路,那么是磁带机还是录音模块,啥子都不给谁知道怎么画?
3. 语音录放电路有什么功能
顾名思义,也就是可以随时的记录声音信号,并在需要的时候播放出来。比如说语音录放芯片ISD4003,就可以录制几分钟到几十分钟的语音信号。
4. 求一份ISD4004语音录放电路仿真及C程序的资料参考一下,谢谢
//*****************************************************
// ISD4002-89c51开发板演示例程 C51版本 *
// *
//*****************************************************
#include <reg51.h>
sbit SS = P1^0; //片选
sbit SCLK = P1^1; //ISD4003时钟
sbit MOSI = P1^2; //数据输入
sbit MISO = P1^3; //数据输出
sbit LED = P1^7; //指示灯
sbit ISD_INT= P3^2; //中断
sbit AN = P1^6; //执行
sbit STOP = P1^5; //复位
sbit PR = P1^4; //PR=1录音? PR=0放音
void delay(unsigned int time) //延迟n微秒
{
while(time!=0)
{
time-- ;
}
}
void delayms(unsigned int time) //延迟n毫秒
{ TMOD=0x01;
for(time;time>0;time--)
{
TH0=0xfc;
TL0=0x18;
TR0=1;
while(TF0!=1)
{;}
TF0=0;
TR0=0;
}
}
//************************************
//ISD4002 spi串行发送子程序,8位数据
//************************************
void spi_send(unsigned char isdx)
{ unsigned char isx_counter;
SS=0; //ss=0,打开spi通信端
SCLK=0;
for(isx_counter=0;isx_counter<8;isx_counter++) //先发低位再发高位,依次发送。
{ if ((isdx&0x01)==1)
MOSI=1;
else
MOSI=0;
isdx=isdx>>1;
SCLK=1;
delay(2);
SCLK=0;
delay(2);
}
}
//*******************************
//发送stop指令
//*******************************
void isd_stop(void)
{ delay(10);
spi_send(0x30);
SS=1;
delayms(50);
}
//*******************************
//发送上电指令,并延迟50ms
//*******************************
void isd_pu(void)
{ delay(10);
SS=0;
spi_send(0x20);
SS=1;
delayms(50);
}
//*******************************
//发送掉电指令,并延迟50ms
//*******************************
void isd_pd(void)
{ delay(10);
spi_send(0x10);
SS=1;
delayms(50);
}
//*******************************
//发送play指令
//*******************************
void isd_play(void)
{
LED=0;
spi_send(0xf0);
SS=1;
}
//*******************************
//发送rec指令
//*******************************
void isd_rec(void)
{
LED=0;
spi_send(0xb0);
SS=1;
}
//*******************************
//发送setplay指令
//*******************************
void isd_setplay(unsigned char adl,unsigned char adh)
{
spi_send(adl); //发送放音起始地址低位
adh=adh|0xe0;
spi_send(adh); //发送放音起始地址高位
SS=1;
}
//*******************************
//发送setrec指令
//*******************************
void isd_setrec(unsigned char adl,unsigned char adh)
{
spi_send(adl); //发送放音起始地址低位
adh=adh|0xa0;
spi_send(adh); //发送放音起始地址高位
SS=1;
}
//************************************
//芯片溢出,LED闪烁提醒停止录音
//************************************
void isd_overflow(void)
{
while(AN==0)
{LED=1;
delayms(300);
LED=0;
delayms(300);
}
}
//************************************
//检查芯片是否溢出(读OVF,并返回OVF值)
//************************************
unsigned char chk_isdovf(void)
{
SS=0;
delay(2);
SCLK=0;
delay(2);
SCLK=1;
SCLK=0;
delay(2);
if (MISO==1)
{ SCLK=0;
SS =1; //关闭spi通信端
isd_stop(); //发送stop指令
return 1; //OVF为1,返回1
}
else
{ SCLK=0;
SS =1; //关闭spi通信端
isd_stop(); //发送stop指令
return 0; //OVF为0,返回0
}
}
//************************************************************************
//主程序
//功能:1.录音时,按住AN键,LED点亮开始录音,松开AN即可停止录音
// 再次按下AN键,LED点亮开始录第二段音,依次类推,直到芯片溢出。
// 按stop键芯片复位
// 2.放音时,按一下AN键,即播放一段语音。 按stop键芯片复位。
//************************************************************************
void main(void)
{unsigned char ovflog;
while(1)
{
P0=P1=P2=P3=0xff; //初始化
while (AN==1) //等待AN键按下
{
if (AN==0) //按键防抖动
{delayms(20);}
}
isd_pu(); //AN键按下,ISD上电并延迟50ms
isd_pd();
isd_pu();
if (PR==1) //如果PR=1则转入录音部分
{
delayms(500); //延迟录音
isd_setrec(0x00,0x00); //发送0x0000h地址的setplay指令
do
{ isd_rec(); //发送rec指令
delay(20);
while(AN==0) //等待录音完毕
{if (ISD_INT==0) //如果芯片溢出,进行LED闪烁提示,
isd_overflow(); //如果取消录音(松开AN键)则停止录音,芯片复位
}
if (ISD_INT==0)
break;
LED=1; //录音完毕,LED熄灭
isd_stop(); //发送停止命令
while(AN==1) //如果AN再次按下,开始录制下一段语音
{if(STOP==0) //如果按下STOP按键,则芯片复位
break;
if (AN==0)
delayms(500);
}
}while(AN==0);
}
else //如果PR==0则转入放音部分
{
while(AN==0){;}
isd_setplay(0x00,0x00); //发送setplay指令,从0x0000地址开始放音
do
{
isd_play(); //发送放音指令
delay(20);
while(ISD_INT==1) //等待放音完毕的EOM中断信号
{;}
LED=1;
isd_stop(); //放音完毕,发送stop指令
if (ovflog=chk_isdovf()) //检查芯片是否溢出 ,如溢出则停止放音,芯片复位
break;
while(AN==1) //等待AN键再次按下
{if (STOP==0)
delayms(20);
if (STOP==0)
break;
if(AN==0)
delayms(20);
}
LED=0;
}while(AN==0); // AN键再次按下,播放下一段语音
}
isd_stop();
isd_pd();
}
}
/*注意:与ISD4002/03不同的是,由于ISD4004芯片的语音地址是16位,在发送带地址指令(如setplay,setrec,setmc)时,需要先发送两个字节的地址信息,再发送一个字节的命令字,ISD4004的程序编写与ISD4002/03的区别,仅此而已。
//例如,ISD4004的setplay指令程序应为:
void isd_setplay(unsigned char adl,unsigned char adh)
{
delayms(1);
spi_send(adl); //发送放音起始地址低位
delay(2);
spi_send(adh); //发送放音起始地址高位
delay(2);
spi_send(0xe0); //发送setplay指令字节
SS=1;
}*/
5. 求智能语音播报系统电路图和程序
您好 楼主
很高兴看见了您的问题
虽然我无法正确的回答您的问题
但是我的回答能给您几点提示
1 游戏中遇到了疑问可以先去看看游戏帮助
2 当自己实在无法解决时可以求助资深玩家
其实 很多难题都是完全可以自己解决的
当您自己解决问题时是不是很有成就感。
同时我也深信楼主的智慧!
祝您能早日找到问题答案!
希望我的回答也能够帮到您!
祝您好运。谢谢采纳 !
6. 基于51单片机、ISD4004语音录放原理图
发现几个小问题:
1 喇叭另一端要接地
2 晶振的电容应是30pf瓷片电容,不是30uf
19uf电容可用10uf-470uf电解电容替代
建议10uf以上 电容用电解电容,0.1uf电容用瓷片电容104的
7. 求一个数字语音录放电路的原理图!isd4002的最好!谢谢
dxp的
可以吗
8. 能不能不用语音芯片,用单片机做个语音录放电路
介绍一种主电路主要由单片机89C52和ISD4004构成。该系统的硬件电路连接如图所示为流程图。
程序工作思想
电路上电后,程序首先完成程序的初始化,随后查询按键状态,进入系统待机状态。如果有按键按下,则转去执行该按键指向的工作程序。按键包括放音键,停止键,加一,减一键以及特殊语键。调用放音子程序,读入前面获得的本站放音内容首地址,开始放音。每一句放音完毕后,ISD4004的中断引脚(25脚)会自动送一低电平信号。在硬件设计中,该引脚与单片机的P3.3连接。因此,会引起一次中断,在中断子程序中会有一个计数器记,加一键按下后则使程序放音内容转向下一段,减一键则使程序放音内容转向上一段,相应的段号显示也将随之刷新。特殊语键按下后,程序转向执行特殊语放音。停止键被按下将中止当前的放音状态。
部分工作子程序
该部分程序主要完成放音操作,把获得的放音内容的地址送到ISD4004中,完成放音。下面给出的就是放音部分程序。放音子程序:
PLAY:
ACALLPOWERUP;上电子程序
ACALLDELAY25;延迟子程序,至少延迟25ms
CLRP1.6;选中ISD4004
MOVPLAY2,#11100000B;存放SETPLAY命令
MOVA,PLAY0;送放音地址低8位
ACALLSEND;调用送地址子程序
MOVA,PLAY1;送放音地址高8位
ACALLSEND
MOVA,PLAY2;送SETPLAY命令
ACALLSEND
SETBP1.6
CLRP1.6
MOVPLAYING,#11110000B;送入放音指令
MOVA,PLAYING
ACALLSEND
SETBP1.6
RET
POWERUP:;送上电指令子程序
MOVPOWING,#00100000B;送入语音芯片上电信号
MOVA,POWUPING
CLRP1.6
ACALLSEND
SETBP1.6
RET
SEND:;向ISD4004送指令,地址等的子程序
CLRMOSI
CLRP3.2
MOVR1,#8
OUTBIT1:
CLRP3.2;时钟下降
RRCA
MOVMOSI,C;输出1位
NOP
NOP
NOP
SETBP3.2;时钟上升沿到
NOP
NOP
NOP
DJNZR1,OUTBIT1
RET
9. isd4004在语音录放电路的录音部分起什么作用
录音部分将MIC产生的信号经过偏置电路放大后传给芯片,不知道你说的电路是怎么样的。