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產生的信號經過偏置電路放大後傳給晶元,不知道你說的電路是怎麼樣的。