搜索
bottom↓
楼主: qxs5264

ISD1760录放音程序

  [复制链接]

出0入0汤圆

发表于 2008-9-19 14:31:19 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-9-22 10:44:26 | 显示全部楼层
我想问问关于ISD1730 音乐芯片的问题

1,如果我不想定点播放和录音,是不是就不需要传送地址?

2,是不是非要取出当前语音的首末地址?

3,芯片ID是不是也必须读出?

出0入0汤圆

发表于 2008-10-31 22:52:59 | 显示全部楼层
LZ~~~#include "typedef.h" 这个文件包含的函数是什么呀,我编译不能通过~~~

出0入0汤圆

发表于 2008-11-1 09:52:44 | 显示全部楼层
57楼   用的什么编译环境?   

<avr_macros.h>    //引用宏定义 

<intrinsics.h>    //引用本征库函数 

<stdbool.h>       //引用BOOL变量 

我用ICCAVR   也没有找到这几个头文件???

出0入0汤圆

发表于 2008-11-1 14:45:54 | 显示全部楼层
这源文件不能通过Keil的编译,哪位能解释一下,谢谢了

出0入0汤圆

发表于 2008-11-19 16:23:57 | 显示全部楼层
我用的是isd1720

我的主程序是这样的....    但是不能录音和放音啊   我的地址是定义是 uint caToneAdd[8]={0x0010,0x00ff};

void main()

{

 

 ISD_Init();  //功    能: 初始化

 SetREC(0);

 SetPLAY(0);

}



不知道错在哪啊  请教大家  谢谢...

出0入0汤圆

发表于 2008-11-27 10:39:42 | 显示全部楼层
<<

这也要图纸?好好看看手册,都有标准的图纸。帮楼主上传一下 

点击此处下载 ourdev_354690.pdf(文件大小:638K) (原文件名:1700zhongwenshiyongshouce.pdf)

>>

这是【25楼】 pulan 普鲁士兰 提供的资料,可是我下载不了啊。请问有谁下载了就上传一下啊。衷心感谢。



本贴被 Joyce 编辑过,最后修改时间:2008-11-27,11:43:21.

出0入0汤圆

发表于 2008-11-27 16:48:10 | 显示全部楼层
好帖子

出0入0汤圆

发表于 2008-11-27 19:27:28 | 显示全部楼层
支持一个

出0入0汤圆

发表于 2009-1-21 22:12:30 | 显示全部楼层
用了楼主提供的程序,录音时好象要先擦除,否则录音内容有前次残留,但我用定点录音,先定点擦除。这定点擦除有点擦不干净的样子,真郁闷!

出0入0汤圆

 楼主| 发表于 2009-2-1 17:29:19 | 显示全部楼层
最好在录音的时候先全部擦除,然后再重新依次录音进来,这样比较好。

出0入0汤圆

 楼主| 发表于 2009-2-19 11:34:35 | 显示全部楼层
儿子的头像找回来啦!哈哈!

出0入0汤圆

发表于 2009-2-19 14:26:08 | 显示全部楼层
论坛中好像少了不少帖子啊 怎么丢的啊

出0入0汤圆

发表于 2009-3-19 13:53:20 | 显示全部楼层
请问搂主,这样你到底用了多少个按键 (switches)来做提示给51单片机以便它知道是要录音、放音、删除或其他功能?可否上传51单片机的那些按键整体图?谢谢!

出0入0汤圆

发表于 2009-3-23 16:58:23 | 显示全部楼层
LZ我发邮件给你了,发现我的器件手册(英文的)上的456三脚是TEST,使用时全接高电平,奇怪,你的好像就是SPI接口啊。??
sw_ge@126.com

出0入0汤圆

发表于 2009-3-23 17:04:17 | 显示全部楼层
太感谢了 顶一个

出0入0汤圆

发表于 2009-3-23 17:09:42 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2009-3-23 17:28:16 | 显示全部楼层
ISD1700系列有贴片吗??我手上的只有双列直插的

出0入0汤圆

发表于 2009-3-23 18:58:54 | 显示全部楼层
这个好。。。。

出0入0汤圆

发表于 2009-4-2 15:08:53 | 显示全部楼层
楼主好,我在使用1730的SPI录音时,可以正常的录音/放音,但是在录音和放音时LED指示灯不亮。请问是不是我缺少了什么步骤或者命令?上电操作我也用了的。

出0入0汤圆

发表于 2009-4-13 09:10:19 | 显示全部楼层
最近也在用ISD1760,不过有两个问题:
   1:ISD1760用PWM方式驱动喇叭正常,但如果专用AUD/AUX方式驱动功放每段语音的开始和结束都会出现一个爆破声,声音比较大,影响正常使用。据说是整个ISD系列芯片都有这种现象,是芯片每段语音开始时上电和结束时掉电电流对电路冲击造成的,不知道各位大侠有什么解决方法。
   2:38楼提供电路图请问JW1 JUMPER跳线块处一端接AUD/AUX跟JW1  2端短路形成驱动功放的信号回路可以理解,另一端接SP+跟JW1  2端短路用来驱动什么东西,有点搞不明白,楼主的意思是难道SP+可以直接驱动功放吗?

出0入0汤圆

发表于 2009-5-14 12:23:28 | 显示全部楼层
请问<SPI.H>这个头文件我找不到,怎么办?
您有写好的吗?
我用mega8l单片机

出0入0汤圆

发表于 2009-5-17 15:25:43 | 显示全部楼层
请问:用ISD1760PY能完全代替ISD1760吗?

出0入0汤圆

发表于 2009-5-17 15:41:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-17 16:54:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-25 11:57:39 | 显示全部楼层
楼主,为什么我把你的程序运行后,不能定点播音,只能全部播音(包括那四段提示音),这是为什么呀?????

出0入0汤圆

发表于 2009-5-25 15:12:54 | 显示全部楼层
好东西  但是有的不同啊

出0入0汤圆

发表于 2009-6-3 16:56:33 | 显示全部楼层
楼主QQ号多少啊,我的QQ:506672317。方便的话加我啊,加了后方便交流,有不懂的地方想问问你

出0入0汤圆

发表于 2009-6-3 17:34:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-3 18:23:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-5 08:16:27 | 显示全部楼层
LZ 这2个头文件 #include<STC89C58.h>  #include "typedef.h" 在哪里啊?希望上传一下啊这样才完美啊

出0入0汤圆

发表于 2009-6-5 11:44:39 | 显示全部楼层
mark!

出0入0汤圆

发表于 2009-8-13 22:27:00 | 显示全部楼层
我仿照楼主写的程序,用独立按键录2段音,再用SPI录2段音,为什么独立按键录的音放出的声音很大,SPI录的放出的很小?程序中已将声音设到最大了?和91楼的问题一样,谁能告诉我一下原因,谢谢

出0入0汤圆

发表于 2009-8-14 16:43:58 | 显示全部楼层
这几天我也在用ISD1760,是按楼主的流程来写的.

isd_init(); //初始化语音芯片
while(!isd_is_free());
isd_setplay(0x10, 0x67);
while(!isd_is_free());
isd_playid(0);

这样的程序在上电初期,有时上电立即播内容,有时上电不播内容.

这是为什么呢?!碰到过类似问题的说一下.谢谢

出0入0汤圆

发表于 2009-8-14 17:25:45 | 显示全部楼层
对了,我的是硬件SPI的.用的是M16.

出0入0汤圆

发表于 2009-8-19 17:58:29 | 显示全部楼层
非常感谢阿莫站长!!一下子就能用了。。。

出0入0汤圆

发表于 2009-8-23 16:30:26 | 显示全部楼层
高手指教下
初始化的过程中
/**************************************************************************
*    函数原型: void ISD_Init(void);
*    功    能: 初始化
**************************************************************************/
void   ISD_Init(void){
ISD_Reset();
do{
ISD_PU();
RdStatus();
DogReset();
}while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1>

SBUF=RD_DevID();//读取芯片ID,----1760为0xa0
ClrInt();
ISD_WR_APC2(0xaf);
RdAPC();
}

读取芯片ID是不是一定要做 还有读取后有什么作用

出0入0汤圆

发表于 2009-8-24 09:32:19 | 显示全部楼层
mark!

出0入10汤圆

发表于 2009-8-28 00:04:41 | 显示全部楼层
留底

出0入0汤圆

发表于 2009-8-28 00:49:04 | 显示全部楼层
为什么我的只能读两段?  不能读三段  不知道为什么啊  谢谢

出0入0汤圆

发表于 2009-9-3 00:57:54 | 显示全部楼层
谢谢~~~~

出0入0汤圆

发表于 2010-1-2 17:45:05 | 显示全部楼层
回复【楼主位】qxs5264
-----------------------------------------------------------------------

标记

出0入0汤圆

发表于 2010-1-2 19:24:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-4 00:19:34 | 显示全部楼层
标记

出0入0汤圆

发表于 2010-1-4 13:26:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-4 16:37:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-4 18:07:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-4 19:39:56 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2010-1-4 19:40:16 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2010-1-5 16:37:46 | 显示全部楼层
回复【楼主位】qxs5264
-----------------------------------------------------------------------

请问楼主,isd的电源和地你也是只用一个么???各种信号电源和地接一起,我一直在这里不解。。。

出0入0汤圆

发表于 2010-1-5 17:21:28 | 显示全部楼层
我有一点明白了:手册说,“芯片存储地址从第一个提示音的地址0X0000开始计算,但是0x000-0x00F地址平均保留给了4个提示音。从0x010地址开始,才是非保留的存储区域,即真正的录音区。”
也就是从0x010到0xFF 共有0x0FF-0x010+1=240位地址
如果用的是1760,60s的芯片,一共60s,也就是每s就对应4位地址
如果第一段录了10s,那么第一段的开始地址是0x010,
结束地址是0x010+10*4=0x010+0x028=0x038

是不是这样??(也就是芯片默认的可录的60s是不包括提示音的吧?)

这个地址到底怎么算啊?什么狗屁手册,真是垃圾,中文的看不懂,英文的也看不懂, 我现在Rosc接的是80K,那应该1760的频率就是8K.语音长度就是60秒.地址是A10--A0共11位,那可用的地址就是0x7ff-0x000.以前用ISD2560的时候, 1个地址=100ms, 我从起始地址0x16开始录,暂定1个地址=100ms. 地址(16-306)可以正常录音和播放 ,如果后面从地址(400--)录音的话,就会跟最前面的地址16的录音混合在一起.我的录音APC2配制是0x80.放音APC2配制是0xC0.都是用SETPLAY和SETREC直接操作的,希望得到已经调出来的朋友们的帮助,谢谢

出0入4汤圆

发表于 2010-1-5 21:38:36 | 显示全部楼层
学习啦!修改过别人写的程序!

出675入8汤圆

发表于 2010-1-5 22:31:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-6 08:13:57 | 显示全部楼层
手册上说,SPI方式可以操作指定任意地址.我想知道每段地址具体对应多长的时间呢,以前2560 1段等于100ms,有那位朋友具体计算过啊

出0入0汤圆

发表于 2010-1-6 10:21:00 | 显示全部楼层
没人回答,刚才看了一下,参照se的录音时间 采样率为8KHz的时候 一个SE时长为0.5Sec. 0x000--0x00F 共存有4段SE系统保留音.算出来1Sec 就是地址8个单位. 到此问题解决.是我的计算地址超出.

出0入0汤圆

发表于 2010-2-10 21:16:39 | 显示全部楼层
多謝 qxs5264 分享!

出0入0汤圆

发表于 2010-2-10 22:00:19 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-2-16 13:23:53 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2010-3-5 18:55:55 | 显示全部楼层
买了这个芯片,谢谢楼主哦,先前一直都不太会,所以放在一边,现在可以去玩一下啦

出0入0汤圆

发表于 2010-3-7 23:56:34 | 显示全部楼层
好帖收藏

出0入0汤圆

发表于 2010-3-10 12:51:49 | 显示全部楼层
ISD1760录放音程序

出0入0汤圆

发表于 2010-3-29 21:54:35 | 显示全部楼层
好东西,顶一下

出0入0汤圆

发表于 2010-3-30 00:05:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-19 13:43:47 | 显示全部楼层
引用图片【38楼】qxs5264
-----------------------------------------------------------------------

(原文件名:未命名.jpg)

出0入0汤圆

发表于 2010-4-21 10:51:12 | 显示全部楼层
回复【166楼】liangychao
-----------------------------------------------------------------------

有没有整个的原理图啊,我想问一下放音部分可以直接用ISD1760资料里那样接吗?如果按资料里接电路的话,声音又多大啊?

出0入0汤圆

发表于 2010-4-21 10:52:46 | 显示全部楼层
急急急急急急急急急急急急急急急急急急急急急急急急急急

出0入0汤圆

发表于 2010-5-2 21:32:43 | 显示全部楼层
回复【23楼】weizengli
-----------------------------------------------------------------------
回复【23楼】weizengli
-----------------------------------------------------------------------

呵呵, 我现在在研究ISD1730,但是由于个人知识有限,研究了很久都没研究出来,你能把你写的1730完整的程序发给我参考一下吗? 我的QQ是:274814951,非常感谢。

出0入0汤圆

发表于 2010-5-2 21:33:29 | 显示全部楼层
回复【23楼】weizengli
-----------------------------------------------------------------------
回复【23楼】weizengli
-----------------------------------------------------------------------

呵呵, 我现在在研究ISD1730,但是由于个人知识有限,研究了很久都没研究出来,你能把你写的1730完整的程序发给我参考一下吗? 我的QQ是:274814951,非常感谢。

出0入0汤圆

发表于 2010-5-3 14:13:34 | 显示全部楼层
你好,楼主,我是按照你的程序修改操作ISD1730,但是无论我怎么操作都没有反应。这是我在你的程序基础修改的,你帮我指点一下吗?非常感谢你
#include <REGX52.H>
#include <intrins.h>
#define  PU   0x01                     //上电
#define  STOP   0x02            //停止
#define  RESET   0x03                         //复位,后边需要发上电
#define  CLI_INT  0x04                         //清除中断或者EOM
#define  RD_STATUS 0x05                 //读状态寄存器,后跟2个字节,并读取状态寄存器和当前地址
#define  RD_PLAY_PTR   0x06         //播放器存器,后跟3个字节,读取状态寄存器的状态和当前地址和播放指针
#define  PD   0x07                                 //掉电
#define  RD_REC_PTR   0x08                 //录音寄存器,后跟3个字节,读取状态寄存器、当前地址和录音指针
#define  RD_DEVID 0x09                         //读取芯片ID
#define  G_ERASE 0x43                         //察出除提示音外的所有内容
#define  RD_APC   0x44                         //读取模拟通道APC,后跟3个字节,当前状态、地址指针
#define  WR_APC1   0x45                 //后跟2个字节,将D1:D0写入APC寄存器,由VOC引脚控制音量
#define  WR_APC2   0x65                 //后跟2个字节,将D11:D0写入APC寄存器,并由D2:D0调节
#define  WR_NVCFG   0x46                 //将APC的内容写入NVCFG
#define  CHK_MEM 0x49                         //检查环形存储结构
#define  SET_PLAY   0x80                 //从起始地址开始播放到结束地址
#define  SET_REC   0x81                 //从起始地址开始录音到结束地址
#define  SET_ERASE   0x82                 //从起始地址开始察除,到结束地址
typedef unsigned char uchar;
typedef unsigned int uint;
sbit SS=P1^3;
sbit SCLK=P1^2;
sbit MOSI=P1^1;
sbit MISO=P1^0;
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;  
uchar SR0_L,SR0_H,SR1;
uchar ID,APCL=0,APCH=0;
void ISD_CHK_MEM(void);
void  ISD_PU(void);
void ISD_Stop(void);
void ISD_Reset(void);
void ISD_PD(void);
uchar ISD_SendData(uchar BUF_ISD);
void RdStatus(void);
uchar RD_DevID(void);
void ISD_WR_NVCFG(void);
void RdAPC(void);
void ClrInt(void);
void ISD_WR_APC2(uchar voiceValue);
void GetToneAdd(uchar cNum, uint * ipStartAdd, uint * ipEndAdd);
void SetPLAY(uchar cNum);
uchar code caToneAdd[]={0x10,0x40,0x80,0xc0,0xfe};
/**************************************************************************/
void delay_ms(char xms)
{
        uchar x,y;
        for(x=xms;x>0;x--)
                for(y=110;y>0;y--);
}
/**************************************************************************
*                延时函数 delay_ms(unsigned int xms)          
*
*************************************************************************/
void I_delay(void)
{
        char i;
        for(i=17;i>0;i--)
                {nop();}
}
/**************************************************************************
*    函数原型: void ISD_Init(void);
*    功    能: 初始化
**************************************************************************/
void  ISD_Init(void)
        {
                ISD_Reset();
                do{
                        ISD_PU();
                        RdStatus();
                        }while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1>
                SBUF=RD_DevID();//读取芯片ID,----1760为0xa0
                ClrInt();
                ISD_WR_APC2(0xaf);
                RdAPC();
}
/**************************************************************************
*    函数原型: void ISD_PU(void);
*    功    能: 空间检查
**************************************************************************/
void ISD_CHK_MEM(void)
{
        ISD_SendData(CHK_MEM);
        ISD_SendData(0x00);
        SS=1;
        delay_ms(50);
}
/**************************************************************************
*    函数原型: void ISD_PU(void);
*    功    能: 上电
**************************************************************************/
void  ISD_PU(void)
{
        ISD_SendData(PU);
        ISD_SendData(0x00);
        SS=1;
        delay_ms(50);
}
/**************************************************************************
*    函数原型: void ISD_Stop(void);
*    功    能: 停止
**************************************************************************/  
void ISD_Stop(void)
{
        ISD_SendData(STOP);
        ISD_SendData(0x00);
        SS=1;
    delay_ms(50);
}
/**************************************************************************
*    函数原型: void ISD_Reset(void);
*    功    能: 复位
**************************************************************************/
void ISD_Reset(void)
{
        ISD_SendData(RESET);
        ISD_SendData(0x00);
        SS=1;
        delay_ms(50);
}
/**************************************************************************
*    函数原型: void ISD_PD(void);
*    功    能: 掉电
**************************************************************************/
void ISD_PD(void)
{
        ISD_SendData(PD);
        ISD_SendData(0x00);
        SS=1;
}
/**************************************************************************
*    函数原型: void ISD_SendData(uchar BUF_ISD);
*    功    能: 发送数据
**************************************************************************/
uchar ISD_SendData(uchar BUF_ISD)
{
        uchar i,dat=BUF_ISD;
        SCLK=1;
        SS=0;
        for(i=0;i<8;i++)
        {
                SCLK=0;
                delay_ms(5);
                if(dat&0x01)
                {
                        MOSI=1;
                }
        else{
                        MOSI=0;
                }
        dat>>=1;
        if(MISO)
                {
                        dat|=0x80;
                }
        SCLK=1;
        I_delay();
        }
        MOSI=0;
// SS=1;
return(dat);
}
/**************************************************************************
*    函数原型: void RdStatus(void);
*    功    能: 读取状态
**************************************************************************/
void RdStatus(void)
{
        ISD_SendData(RD_STATUS);
        ISD_SendData(0x00);
        ISD_SendData(0x00);
        SS=1;
        delay_ms(10);               //延迟10ms
        SR0_L =ISD_SendData(RD_STATUS);
        SR0_H =ISD_SendData(0x00);
        SR1 =ISD_SendData(0x00);
        SS=1;
        delay_ms(10);
}
/**************************************************************************
*    函数原型: void RdStatus(void);
*    功    能: 读取ID
**************************************************************************/
uchar RD_DevID(void)
{
        ISD_SendData(RD_DEVID);
        ISD_SendData(0x00);
        ISD_SendData(0x00);
        SS=1;
        delay_ms(100);               //延迟10ms
        SR0_L =ISD_SendData(RD_DEVID);
        SR0_H =ISD_SendData(0x00);
        ID =ISD_SendData(0x00);
        SS=1;
        delay_ms(10);
        return(ID);
}
/**************************************************************************
*    函数原型: void RD_APC(void);
*    功    能: 读取APC
**************************************************************************/
void RdAPC(void)
{
        ISD_SendData(RD_APC);
        ISD_SendData(0x00);
        ISD_SendData(0x00);
        ISD_SendData(0x00);
        SS=1;
        delay_ms(10000);               //延迟10ms
        SR0_L =ISD_SendData(RD_APC);
        SR0_H =ISD_SendData(0x00);
        APCL =ISD_SendData(0x00);
        APCH =ISD_SendData(0x00);
        SS=1;
        delay_ms(10);               //延迟10ms  
}

/**************************************************************************
*    函数原型: void ClrInt(void);
*    功    能: 清除中断
**************************************************************************/
void ClrInt(void)
{
        ISD_SendData(CLI_INT);
        ISD_SendData(0x00);
        SS=1;
        delay_ms(10);               //延迟10ms
}
/**************************************************************************
*    函数原型: void ISD_WR_APC2(uchar voiceValue);
*    功    能: 设置APC2
**************************************************************************/
void ISD_WR_APC2(uchar voiceValue)
{
        ISD_SendData(WR_APC2);
        ISD_SendData(0xa8|voiceValue); //0xa8声音最大,0xaf声音最小
        ISD_SendData(0x0c); //D11=1,在SETPLAY模式下,执行到EOM自动结束。或者在连续两个SET_PLAY命令后,执行到第一个EOM自动跳到第二段开始
        SS=1;
        delay_ms(10);               //延迟10ms
        ISD_WR_NVCFG(); //永久写入寄存器
}
/**************************************************************************
*    函数原型: void ISD_WR_NVCFG(void);
*    功    能: 永久写入寄存器
**************************************************************************/
void ISD_WR_NVCFG(void)
{
        ISD_SendData(WR_NVCFG);
        ISD_SendData(0x00);
        SS=1;
        delay_ms(10);            //延迟10ms
}
/**************************************************************************
*    函数原型: void GetToneAdd(uchar cNum, Uint * ipStartAdd, Uint * ipEndAdd);
*    功    能: 取出当前语音的首末地址
**************************************************************************/
void GetToneAdd(uchar cNum, uint * ipStartAdd, uint * ipEndAdd)
{
        *ipStartAdd=caToneAdd[cNum*2];
        *ipEndAdd=caToneAdd[cNum*2+1];
}
/**************************************************************************
*    函数原型: void SetPLAY(uchar cNum);
*    功    能: 定点播放
**************************************************************************/
void SetPLAY(uchar cNum)
{
        uint Add_ST,Add_ED;
        uchar Add_ST_H,Add_ST_L,Add_ED_H,Add_ED_L;
        do{
                RdStatus();
                }while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1>
        ClrInt();
        GetToneAdd(cNum, &Add_ST,&Add_ED);
        Add_ST_L=(uchar)(Add_ST&0x00ff);
        Add_ST_H=(uchar)((Add_ST>>8)&0x00ff);
        Add_ED_L=(uchar)(Add_ED&0x00ff);
        Add_ED_H=(uchar)((Add_ST>>8)&0x00ff);  
        ISD_SendData(SET_PLAY);
        ISD_SendData(0x00);
        ISD_SendData(Add_ST_L);          //S7:S0  开始地址
        ISD_SendData(Add_ST_H);           //S10:S8
        ISD_SendData(Add_ED_L);           //E7:E0  结束地址
        ISD_SendData(Add_ED_H);           //E10:E8
        ISD_SendData(0x00);
        SS=1;
        delay_ms(10);               //延迟10ms
        do{
        RdStatus();
        }while((SR0_L&0x01)||((SR1&0x04))); //if(SR0_L^0==1){system Err}<CMD_Err==1>
}
/**************************************************************************
*    函数原型: void SetREC(uchar cNum);
*    功    能: 定点录音
**************************************************************************/
void SetREC(uchar cNum)
{
        uint Add_ST, Add_ED;
        uchar Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L;
        do{
                RdStatus();
                }while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1>
        ClrInt();
        GetToneAdd(cNum, &Add_ST, &Add_ED);
        Add_ST_L=(uchar)(Add_ST&0x00ff);
        Add_ST_H=(uchar)((Add_ST>>8)&0x00ff);
        Add_ED_L=(uchar)(Add_ED&0x00ff);
        Add_ED_H=(uchar)((Add_ST>>8)&0x00ff);
        ISD_SendData(SET_REC);
        ISD_SendData(0x00);
        ISD_SendData(Add_ST_L);           //S7:S0  开始地址
        ISD_SendData(Add_ST_H);           //S10:S8
        ISD_SendData(Add_ED_L);           //E7:E0  结束地址
        ISD_SendData(Add_ED_H);          //E10:E8
        ISD_SendData(0x00);
        SS=1;
        delay_ms(10);               //延迟10ms
        do{
        RdStatus();
                }while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1>
}
/**************************************************************************
*    函数原型: void SetERASE(uchar cNum);
*    功    能: 定点删除,容易破坏存储结构(CMA),所以不用
**************************************************************************/
/*void SetERASE(uchar cNum)
{
        uchar Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L;
        Add_ST_L=(uchar)(Add_ST&0xff);
        Add_ST_H=(uchar)(Add_ST>>8);
        Add_ED_L=(uchar)(Add_ED&0xff);
        Add_ED_H=(uchar)(Add_ED>>8);
        ISD_SendData(SET_ERASE);
        ISD_SendData(0x00);
        ISD_SendData(Add_ST_L);          //S7:S0  开始地址
        ISD_SendData(Add_ST_H);          //S10:S8
        ISD_SendData(Add_ED_L);          //E7:E0  结束地址
        ISD_SendData(Add_ED_H);          //E10:E8
        ISD_SendData(0x00);
        // SS=1;
        //  delay_ms(120);
}
/**************************************************************************
*    函数原型: void Erase_All(void);
*    功    能: 全部删除
**************************************************************************/
void Erase_All(void)
{
        ISD_SendData(G_ERASE);
        ISD_SendData(0x00);
        SS=1;
        delay_ms(100);               //延迟10ms
}
/*************************************************************************/
void main()
{
        ISD_Init();
        while(1)
                {
                        if(key1==1)
                        {
                                delay_ms(150);
                                if(key1==1)
                                {
                                        while(!key1);
                                        SetPLAY(0);
                                }
                        }
                        if(key2==0)
                        {
                                delay_ms(150);
                                if(key2==0)
                                {
                                        while(!key2);
                                        SetREC(0);
                                }
                        }
                        if(key3==0)
                        {
                                delay_ms(150);
                                if(key3==0)
                                {
                                        while(!key3);
                                        ISD_Reset();
                                }
                        }
                }       
}

出0入0汤圆

发表于 2010-5-3 16:33:37 | 显示全部楼层
我知道我的延时函数,设置得太长了,但是在我用keil的调试的时候,在复位函数的每一步走的时候,都乱走了,出现了死循环了,怎么也挑不出来了,但是我怎么检查都没找到错误,也不知道为什么。

出0入0汤圆

发表于 2010-5-3 21:58:51 | 显示全部楼层

出0入0汤圆

发表于 2010-5-4 15:17:46 | 显示全部楼层
楼主你好,我刚刚学习用这个ISD1760,能否把你调用它的MAIN函数发一下啊
谢谢

出0入0汤圆

发表于 2010-5-4 15:34:40 | 显示全部楼层
楼主你好,SPI模式下怎么录音啊
录音程序是不是独立的啊,录完后,在播放的时候就不用了吧

出0入0汤圆

发表于 2010-5-5 15:36:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-5 15:38:27 | 显示全部楼层
回复【2楼】yulutong 土土狗
-----------------------------------------------------------------------

dd

出0入0汤圆

发表于 2010-5-10 17:19:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-10 20:59:54 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-5-10 22:00:34 | 显示全部楼层
渴望哪位能给些提示能否通过ANALN引脚录音,如果不能,还有哪种录音方式,从MIC录入的杂音太多了。

出0入0汤圆

发表于 2010-5-11 09:32:00 | 显示全部楼层
谢谢。。。现在可以认真学习一下了。。。

出0入0汤圆

发表于 2010-5-11 12:53:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-11 12:53:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-14 11:14:58 | 显示全部楼层
朋友们有人用过isd1760做叫号机的程序吗?麻烦分享一下,谢谢

出0入0汤圆

发表于 2010-5-14 23:03:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-18 19:10:02 | 显示全部楼层
有人用过ISD1730吗、、我现在在做一个读温度的东西。。发来看看吧。。。我现在很迷糊。。。

出0入0汤圆

发表于 2010-5-19 13:25:01 | 显示全部楼层
好贴,好论坛啊!我是路过但现在决定加入。

出0入0汤圆

发表于 2010-5-19 15:07:36 | 显示全部楼层
mark.还没弄过语音,有时间弄弄

出0入0汤圆

发表于 2010-6-13 16:00:44 | 显示全部楼层
非常感谢楼主啊

出0入0汤圆

发表于 2010-6-17 17:20:07 | 显示全部楼层
非常感谢楼主啊

出0入0汤圆

发表于 2010-7-23 19:29:42 | 显示全部楼层
顶。最好上个硬件电路图

出0入0汤圆

发表于 2010-7-25 17:56:19 | 显示全部楼层
目前在做通过mega16的spi端口播放isd1790芯片中的声音...isd1790语音模块没有问题...可是连最最基本的放音功能都实现不了...

求高手帮忙啊,拜托了~~~程序如下(目前只需要通过spi使得isd1790放音即可),下载程序一点反应都没有,急!>.<


//ICC-AVR application builder : 2010/7/23 16:52:06
// Target : M16
// Crystal: 4.0000Mhz

#include <iom16v.h>
#include <macros.h>

void port_init(void)
{
PORTA = 0x00;
DDRA  = 0x00;
PORTB = 0x00;
DDRB  = 0x00;
PORTC = 0x00; //m103 output only
DDRC  = 0x00;
PORTD = 0x00;
DDRD  = 0x00;
}

//SPI initialize
// clock rate: 1000000hz
void spi_init(void)
{
SPCR = 0x78; //setup SPI
SPSR = 0x00; //setup SPI
PORTB |= (1<<PB4) | (1<<PB5) | (1<<PB6) | (1<<PB7);
DDRB |= (1<<DDB5) | (1<<DDB7) | (1<<DDB4);
}

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
spi_init();

MCUCR = 0x00;
GICR  = 0x00;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}

void SPI_MasterTransmit(char cData)
{
PORTB &=~ (1<<PB4); //强制接收方进入从模式
SPCR |= (1<<MSTR); // MSTR有时会被清零,这里强制进入主机模式
/* 启动数据传输 */
SPDR = cData;
/* 等待传输结束 */
while(!(SPSR & (1<<SPIF)))
;
PORTB |= (1<<PB4);
}

void Delay(void) //延时,没有详细计算
{
unsigned int i,j;
for(i=1000;i>0;i--)
{
for(j=200;j>0;j--)
;
}
}

void main(void)
{
unsigned char i=0;
init_devices();

while(1)
{



//SPI_MasterTransmit(0x01);

//SPI_MasterTransmit(0x00);

SPI_MasterTransmit(0x40);
//Delay();Delay();Delay();Delay();
SPI_MasterTransmit(0x00);

//Delay();Delay();Delay();Delay();


}
}

出0入0汤圆

发表于 2010-8-7 16:59:17 | 显示全部楼层
如果把电源地和信号地共地了,对电路的影响大吗?

出0入0汤圆

发表于 2010-8-7 17:00:14 | 显示全部楼层
麻烦版主快点儿回复,急用!!!

出0入0汤圆

发表于 2010-8-16 23:02:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-10 22:31:58 | 显示全部楼层
回复【6楼】vr2whf
-----------------------------------------------------------------------

我这里也有卖呀,16块,数量20片包邮费!

http://www.rockettex.com
http://shop61680606.taobao.com
QQ:273765256

出0入0汤圆

发表于 2010-10-10 22:40:27 | 显示全部楼层
回复【6楼】vr2whf
-----------------------------------------------------------------------

我这里也有卖呀,16块,数量20片包邮费!

http://www.rockettex.com
http://shop61680606.taobao.com
QQ:273765256

出0入0汤圆

发表于 2010-10-11 20:54:37 | 显示全部楼层
记着

出0入0汤圆

发表于 2010-10-23 01:22:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-5 17:46:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-4 10:04:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-4 22:38:03 | 显示全部楼层
我按照pdf的电路图接好电路后,选择独立模式,上电后led灯一直都在亮着,也不能实现录放音,不知是什么原因?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 09:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表