搜索
bottom↓
回复: 17

ISD4004语音芯片的资料

[复制链接]

出0入0汤圆

发表于 2011-12-24 11:22:07 | 显示全部楼层 |阅读模式
点击此处下载 ourdev_707107PSVLZZ.rar(文件大小:2K) (原文件名:65520792ISD4004.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-2-26 09:43:37 | 显示全部楼层
谢谢了!!!收藏了

出0入0汤圆

发表于 2012-4-9 15:38:28 | 显示全部楼层
很强大!强贴留名。

出0入0汤圆

发表于 2012-4-12 13:26:59 | 显示全部楼层
不错!谢谢!

出0入0汤圆

发表于 2012-4-14 16:58:20 | 显示全部楼层
的确不是,谢谢!

出0入0汤圆

发表于 2012-4-16 09:13:23 | 显示全部楼层
很好的资料,谢谢了哦!

出0入0汤圆

发表于 2012-7-25 09:56:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-7-27 17:26:28 | 显示全部楼层
不错!谢谢!

出0入0汤圆

发表于 2012-8-3 17:56:44 | 显示全部楼层
没想到在这还能看到我几年前修改的ISD4004程序,很意外啊,以前我是发到csdn上的,在原版的基础上增加 播放地址的读取和显示功能 http://download.csdn.net/download/lhb292/1769974
头像被屏蔽

出0入0汤圆

发表于 2012-8-13 17:11:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2012-8-15 16:50:42 | 显示全部楼层
谢谢   !找的很苦啊!

出0入0汤圆

发表于 2012-8-18 20:11:21 | 显示全部楼层
还好啊










出0入0汤圆

发表于 2013-8-13 22:29:19 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2013-8-18 00:08:53 | 显示全部楼层
恩恩   学习学习啊

出0入0汤圆

发表于 2014-11-28 17:17:53 | 显示全部楼层

ISD芯片已经好老了,价格贵不说,估计货都不好拿,推荐一下我们芯片模块方案,性价比高出ISD很多

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-11-28 19:11:26 | 显示全部楼层

谢谢楼主,收藏了。

出0入53汤圆

发表于 2014-11-28 19:17:01 | 显示全部楼层
我帮lz把代码放上来
  1. //ISD4004是一款不错的语音录放IC,和单片机通信采用SPI方式,以下为模块提供的源程序/////////ISD4004语音播放部分/////////////////////////////
  2. ////当按下P3.5键时,从指定地址开始录音
  3. /// 当按下P3.6键时,从指定地址开始放音
  4. /// 当按下P3.7键时,停止当前的操作
  5. /// 程序中的录放停部分已做成子函数,可以直接调用, 只需要输入录音的地址就行
  6. // 录音地址的设定与芯片型号有关系,以ISD4004-16为例,ISD40044-16录音时间为16
  7. //  分钟,即16*60=960S,  根据4004的资料,960秒可分为2400段,也就是1S的段数为
  8. //    2.5段,即从,0000-0019H的内容为10S,
  9. ///作者:长沙致望科技电子公司 WWW.CSMCU.COM
  10. ///版本:V1.0(2008.12.1)
  11. #include <reg51.h>
  12. #include <intrins.h>
  13. #define uchar unsigned  char
  14. #define uint  unsigned  int

  15. ////////定义放音命令,定义常量//////
  16. #define ISDPOWERUP      0X20           //ISD4004上电
  17. #define ISDSTOP         0X10           //ISD4004下电
  18. #define OPERSTOP        0X30           //ISD4004停止当前操作
  19. #define PLAYSET         0XE0           //ISD4004从指定地址开始放音
  20. #define PLAYCUR         0XF0           //ISD4004从当前地址开始放音
  21. #define RECSET          0XA0          //ISD4004从指定地址开始录音
  22. #define RECCUR          0XB0     //ISD4004从当前地址开始录音

  23. sbit   SS=P2^0;            //LOW IS ACTIVELY
  24. sbit   MOSI=P2^1;
  25. sbit   MISO=P2^2;
  26. sbit   SCLK=P2^3;
  27. sbit   K1=P1^0;
  28. sbit   K2=P1^1;
  29. sbit   K3=P1^2;
  30. //sbit   LED1=P0^1;
  31. //sbit   LED2=P0^2;

  32. sbit RS =P0^0;   
  33. sbit RW =P0^1;  
  34. sbit EN =P0^2;  
  35. unsigned char code tab0[]="0123456789";
  36. unsigned char code tab1[]="状态";
  37. unsigned char code tab2[]="地址";
  38. unsigned char code tab4[]="唯见长江天际流。";
  39. unsigned char code tab5[]="温度";

  40. void delayms(uchar ms);
  41. uchar add=0,status=0;////全局变量////  放音地址
  42. uint addr[]={0x05,0x1e,0x37,0x50};
  43. uint nnewaddr=0;  
  44. ////////////////放音部分子程序,放音地址由ADDR决定////
  45. uchar play(uint addrp)
  46. {  uint y;
  47. SS=0;
  48. MOSI=0;//发送开始
  49. SCLK=0;
  50. for(y=0;y<8;y++)
  51. {
  52.   SCLK=0;
  53.   if((0x20>>y)&0x01)MOSI=1;    //上电
  54.   else MOSI=0;
  55.   _nop_();
  56.   _nop_();
  57.   _nop_();
  58.   SCLK=1;
  59.   _nop_();
  60.   _nop_();
  61.   _nop_();
  62. }//发送结束
  63. SS=1;//上电结束
  64. delayms(50);
  65. SS=0;
  66. MOSI=0;//发送地址
  67. SCLK=0;
  68. for(y=0;y<16;y++)
  69. {
  70.   SCLK=0;
  71.   if((addrp>>y)&0x01)MOSI=1;    //发送放音地址
  72.   else MOSI=0;
  73.   _nop_();
  74.   _nop_();
  75.   _nop_();
  76.   SCLK=1;
  77.   _nop_();
  78.   _nop_();
  79.   _nop_();
  80. }//发送地址结束
  81. MOSI=0;//放音
  82. SCLK=0;
  83. for(y=0;y<8;y++)
  84. {
  85.   SCLK=0;
  86.   if((0xe0>>y)&0x01)MOSI=1;    //从指定地址放音
  87.   else MOSI=0;
  88.   _nop_();
  89.   _nop_();
  90.   _nop_();
  91.   SCLK=1;
  92.   _nop_();
  93.   _nop_();
  94.   _nop_();
  95. }
  96. SS=1;
  97. /* SS=0;
  98. MOSI=0;//放音
  99. SCLK=0;
  100. for(y=0;y<8;y++)
  101. {
  102.   SCLK=0;
  103.   if((0xf0>>y)&0x01)MOSI=1;    //从当前位置放音
  104.   else MOSI=0;
  105.   _nop_();
  106.   _nop_();
  107.   _nop_();
  108.   SCLK=1;
  109.   _nop_();
  110.   _nop_();
  111.   _nop_();
  112. }
  113. SS=1;*/
  114. return(1);   }
  115. //////////////////////////lu音部分子程序,地址由ADDR决定/////////////////////////
  116. uchar rec(uint addrr)               
  117. {  uint y;
  118. SS=0;
  119. MOSI=0;//发送开始
  120. SCLK=0;
  121. for(y=0;y<8;y++)
  122. {
  123.   SCLK=0;
  124.   if((0x20>>y)&0x01)MOSI=1;    //上电
  125.   else MOSI=0;
  126.   _nop_();
  127.   _nop_();
  128.   _nop_();
  129.   SCLK=1;
  130.   _nop_();
  131.   _nop_();
  132.   _nop_();
  133. }//发送结束
  134. SS=1;//上电结束
  135. /*delayms(50);
  136. SS=0;
  137. MOSI=0;//发送开始
  138. SCLK=0;
  139. for(y=0;y<8;y++)
  140. {
  141.   SCLK=0;
  142.   if((0x20>>y)&0x01)MOSI=1;    //
  143.   else MOSI=0;
  144.   _nop_();
  145.   _nop_();
  146.   _nop_();
  147.   SCLK=1;
  148.   _nop_();
  149.   _nop_();
  150.   _nop_();
  151. }//发送结束
  152. SS=1;//上电结束
  153. delayms(50);*/
  154. delayms(50);
  155. SS=0;
  156. MOSI=0;//发送地址
  157. SCLK=0;
  158. for(y=0;y<16;y++)
  159. {
  160.   SCLK=0;
  161.   if((addrr>>y)&0x01)MOSI=1;    //发送地址
  162.   else MOSI=0;
  163.   _nop_();
  164.   _nop_();
  165.   _nop_();
  166.   SCLK=1;
  167.   _nop_();
  168.   _nop_();
  169.   _nop_();
  170. }//发送地址结束
  171. MOSI=0;
  172. SCLK=0;
  173. for(y=0;y<8;y++)
  174. {
  175.   SCLK=0;
  176.   if((0xa0>>y)&0x01)MOSI=1;    //从指定地址开始录音
  177.   else MOSI=0;
  178.   _nop_();
  179.   _nop_();
  180.   _nop_();
  181.   SCLK=1;
  182.   _nop_();
  183.   _nop_();
  184.   _nop_();
  185. }
  186. SS=1;
  187. /*SS=0;
  188. MOSI=0;
  189. SCLK=0;
  190. for(y=0;y<8;y++)
  191. {
  192.   SCLK=0;
  193.   if((0xb0>>y)&0x01)MOSI=1;//从当前地址开始录音
  194.   else MOSI=0;
  195.   _nop_();
  196.   _nop_();
  197.   _nop_();
  198.   SCLK=1;
  199.   _nop_();
  200.   _nop_();
  201.   _nop_();
  202. }
  203. SS=1;*/
  204. return(2);  }

  205. ////////////////////////////////////
  206. ////////////////////////////////
  207. uchar stop()
  208. {
  209.     uchar y;
  210. SS=1;
  211. SS=0;
  212. MOSI=0;//放音
  213. SCLK=0;
  214. for(y=0;y<8;y++)
  215. {
  216.   SCLK=0;
  217.   if((0x30>>y)&0x01)MOSI=1;//停止当前操作
  218.   else MOSI=0;
  219.   _nop_();
  220.   _nop_();
  221.   _nop_();
  222.   SCLK=1;
  223.   _nop_();
  224.   _nop_();
  225.   _nop_();
  226. }
  227. SS=1;
  228. return(0);}
  229. ////////////////////////////////////
  230. //////////////////////////lu音部分子程序,地址由ADDR决定/////////////////////////
  231. uint ad()//提取播放的位置               
  232. {  uint y,newaddr;
  233. SS=0;
  234. MOSI=0;//发送开始
  235. SCLK=0;
  236. for(y=0;y<8;y++)
  237. {
  238.   SCLK=0;
  239.   if((0x20>>y)&0x01)MOSI=1;    //上电
  240.   else MOSI=0;
  241.   _nop_();
  242.   _nop_();
  243.   _nop_();
  244.   SCLK=1;
  245.   _nop_();
  246.   _nop_();
  247.   _nop_();
  248. }//发送结束
  249. SS=1;//上电结束
  250. delayms(50);
  251. SS=0;
  252. MOSI=0;//发送地址
  253. SCLK=0;
  254. for(y=0;y<16;y++)
  255. {SCLK=1;
  256.   _nop_();
  257.   SCLK=0;
  258.   _nop_();
  259.   _nop_();
  260.   if(MISO==0)newaddr&=0x7fff;//接受地址
  261.   else newaddr|=0x8000;
  262.   newaddr>>=1;
  263.   _nop_();
  264.   _nop_();
  265.   _nop_();
  266. }//发送地址结束


  267. SS=1;
  268. /*SS=0;
  269. MOSI=0;
  270. SCLK=0;
  271. for(y=0;y<8;y++)
  272. {
  273.   SCLK=0;
  274.   if((0xb0>>y)&0x01)MOSI=1;//从当前地址开始录音
  275.   else MOSI=0;
  276.   _nop_();
  277.   _nop_();
  278.   _nop_();
  279.   SCLK=1;
  280.   _nop_();
  281.   _nop_();
  282.   _nop_();
  283. }
  284. SS=1;*/
  285. return(newaddr);  }

  286. ////////////////////////////////////

  287. ////////////////////////////////////
  288. void delayms(uchar ms)
  289. // 延时子程序
  290. {      
  291. uchar j;
  292. while(ms--)
  293. {
  294.   for(j=0;j<120;j++);
  295. }
  296. }
  297. ////////////////////////////////

  298. void Delay(unsigned int time)
  299. {
  300.     while(time--);
  301. }
  302. //=======================================================================
  303. //函数名:
  304. //函数功能:写数据
  305. //作者: //日期:2007.8.12
  306. //=======================================================================
  307. void write_data(uchar date)
  308. {
  309.     uchar i,j,tem=0xfa;
  310.     RS=1;
  311.     Delay(20);
  312.     for(i=8;i>0;i--)
  313.     {
  314.         EN=0;
  315.         RW=tem&0x80;
  316.         EN=1;
  317.         tem<<=1;
  318.     }
  319. for(j=2;j>0;j--)
  320.     for(i=8;i>0;i--)
  321.     {
  322.         if(i>4)
  323.         {
  324.             EN=0;
  325.             RW=date&0x80;
  326.             EN=1;
  327.             date<<=1;
  328.         }
  329.           else
  330.           {
  331.             EN=0;
  332.             RW=0;
  333.                EN=1;
  334.            }
  335.     }
  336.     RS=0;
  337. }

  338. //=======================================================================
  339. //函数名:
  340. //函数功能:写命令
  341. //作者://日期:2007.8.12
  342. //=======================================================================
  343. void write_com(uchar Command)
  344. {
  345.     uchar i,j,tem=0xf8;
  346.     RS=1;
  347.     Delay(20);
  348.     for(i=8;i>0;i--)
  349.     {
  350.         EN=0;
  351.         RW=tem&0x80;
  352.         EN=1;
  353.         tem<<=1;
  354.        }
  355.     for(j=2;j>0;j--)
  356.     for(i=8;i>0;i--)
  357.        {
  358.         if(i>4)
  359.         {
  360.             EN=0;
  361.                RW=Command&0x80;
  362.                EN=1;
  363.                Command<<=1;
  364.          }
  365.         else
  366.         {
  367.             EN=0;
  368.               RW=0;
  369.                EN=1;
  370.            }
  371.        }
  372.     RS=0;
  373. }

  374. ///////////////////////////////////////////////////
  375. /*****************初始化LCD*********************/
  376. void lcd_init( void )
  377. {
  378.     //TMOD=0x01;
  379.     //TH0=(65536-50000)/256;
  380.     //TL0=(65536-50000)%256;
  381.     //EA=1;
  382.     //ET0=1;
  383.     //TR0=1;
  384.     write_com(0x30);
  385.     write_com(0x03);
  386.     write_com(0x0C);
  387.     write_com(0x01);
  388.     write_com(0x06);
  389. }
  390. void lcd_clear_txt( void )
  391. {
  392.     unsigned char i;
  393.     write_com(0x30);
  394.     write_com(0x80);
  395.     for(i=0;i<64;i++)
  396.     write_data(0x20);
  397. }

  398. //=======================================================================
  399. //函数名:主函数
  400. //函数功能:
  401. //作者: //日期:2007.8.12
  402. //=======================================================================

  403. void disp(void)
  404. {
  405.     uchar i;

  406.     write_com(0x82);
  407.     write_data(tab0[status/10]);
  408.     write_data(tab0[status%10]);
  409.     write_com(0x8a);
  410.     write_data(tab0[add/10]);
  411.     write_data(tab0[add%10]);
  412. //    write_data('.');Delay(10);
  413. //    write_data(tab5[c/100]);
  414. //   write_data('C');
  415.     write_com(0x98);
  416.     write_data(tab0[nnewaddr/10000]);
  417.     write_data(tab0[nnewaddr/1000%10]);
  418.     write_data(tab0[nnewaddr/100%10]);
  419.     write_data(tab0[nnewaddr/10%10]);
  420.     write_data(tab0[nnewaddr%10]);
  421. //    write_com(0x8a);
  422. //   write_data(tab5[shi/10]);
  423. //   write_data(tab5[shi%10]);
  424. //   write_data(':');Delay(10);
  425. //    write_data(tab5[fen/10]);
  426. //   write_data(tab5[fen%10]);
  427. //   write_data(':');Delay(10);
  428.   //  write_data(tab5[miao/10]);
  429.   //  write_data(tab5[miao%10]);
  430. write_com(0x88);
  431.     for(i=0;i<4;i++)
  432.     {
  433.         write_data(tab2[i]);
  434.     }
  435.     write_com(0x80);
  436.     for(i=0;i<4;i++)
  437.     {
  438.         write_data(tab1[i]);
  439.     }
  440. /*  write_com(0x90);
  441.     for(i=0;i<16;i++)
  442.     {
  443.         write_data(tab2[i]);
  444.     }

  445.     write_com(0x98);
  446.     for(i=0;i<16;i++)
  447.     {
  448.         write_data(tab4[i]);
  449.     }*/
  450. }



  451.    ////////////////////////////////////
  452. void main()
  453. {  Delay(1000);
  454.     lcd_init();
  455.     lcd_clear_txt();
  456. while(1)
  457.    {if(K1==0)
  458.       {delayms(50);
  459.        while(K1==0);
  460.         ///松手判断
  461.    // LED1=0;
  462.    // LED2=1;
  463.        //addr=0X05;/////从0X05单元开始录音
  464. status=rec(addr[add]);
  465.     P1=0XFF;}
  466.    if(K2==0)
  467.       {delayms(50);
  468.        while(K2==0);
  469.    // LED1=1;
  470.    // LED2=0;
  471.      //  addr=0X05;//从0x05单元开始放音
  472. status=play(addr[add]);
  473.     P1=0XFF;}
  474.    if(K3==0)
  475.       {delayms(50);
  476.        while(K3==0);
  477.        add++;
  478.        if(add==4)
  479.        add=0;
  480. // LED1=1;
  481. // LED2=1;
  482. status=stop();
  483. nnewaddr=ad();
  484. //停止录放
  485. P1=0XFF; }
  486.    
  487.     disp(); }
  488.               }
复制代码

出0入0汤圆

发表于 2015-6-9 23:00:15 | 显示全部楼层
谢谢啦!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-8-25 23:18

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

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