MyISD4004.rar

  • wenter
    了解作者
  • Objective-C
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 5
    下载次数
  • 2015-07-18 01:14
    上传日期
录音芯片ISD4004的驱动程序。注释很详细,录音的个数可以自行修改。
MyISD4004.rar
  • MyISD4004.c
    5.4KB
内容介绍
#include "delay.h" #include "ISD4004.h" #include "key.h" #include "UART.h" #define ADDR1 20 #define ADDR2 220 #define ADDR3 420 #define ADDR4 620 #define ADDR5 820 //最多应该有1200 , 可以去查查数据手册 #define ISRECMODE 1 #define ISPLAYMODE 1 #define ISSTOPMODE 0 char Mplaymode; static char recordnum=0,playnum=0; unsigned int recordadd[5]={ADDR1,ADDR2,ADDR3,ADDR4,ADDR5}; /*重!不知道为什么这个函数一定要整个放进Main函数才行,把它全部的子函数放进main中芯片就不能正常工作了!!!*/ void SingleRecord() //单段录音程序 { // if(keyDown()==REC_K) // { // while(!IsRKeyUp());//等待按键抬起 // SetNormalSt();//设置板载单片机引脚为普通状态 // if(Mplaymode==ISRECMODE) // { // stop(); //停止以前的操作 // delayms(400); //延时等待操作生效 // } // Mplaymode=ISRECMODE; // autorecord(ADDR1);//从指定的地址开始录音 // SetHigRes(); //恢复单片机为高阻态 // return; // } // // if(keyDown()==PLAY_K) // { // while(!IsPKeyUp());//等待按键抬起 // SetNormalSt();//设置板载单片机引脚为普通状态 // if(Mplaymode==ISRECMODE) // { // stop(); //停止以前的操作 // delayms(400); //延时等待操作生效 // } // Mplaymode=ISPLAYMODE; // // autoplay(ADDR1); //从指定的地址开始放音 // SetHigRes(); //恢复单片机为高阻态 // return; // } unsigned char i = 8 , p_value = 0; if(RECORD==0) { while(!IsRKeyUp());//等待按键抬起 SetNormalSt();//设置板载单片机引脚为普通状态 if(Mplaymode==ISRECMODE) { stop(); //停止以前的操作 delayms(400); //延时等待操作生效 } Mplaymode=ISRECMODE; autorecord(recordadd[recordnum]);//从指定的地址开始录音 recordnum++; if(recordnum==5) recordnum=0; SetHigRes(); //恢复单片机为高阻态 return; } if(PLAY == 0) /*这个是自己写的单口通信,一个引脚可触发无限种状态! */ { //delayms(1); while(!PLAY);//等待按键抬起 delayms(1); while(i--) { if(PLAY == 0) { //delayms(25); while(!PLAY);//等待按键抬起 delayms(1); p_value ++; } } SetNormalSt();//设置板载单片机引脚为普通状态 if(Mplaymode==ISRECMODE) { stop(); //停止以前的操作 delayms(400); //延时等待操作生效 } Mplaymode=ISPLAYMODE; switch (p_value) { case 0: autoplay(ADDR1); break; case 1: autoplay(ADDR2); break; //从指定的地址开始放音 case 2: autoplay(ADDR3); break; case 3: autoplay(ADDR4); break; case 4: autoplay(ADDR5); break; } SetHigRes(); //恢复单片机为高阻态 return; } } void MultiRecord() //多段录音程序 { static char recordnum=0,playnum=0; if(keyDown()==REC_K) { while(!IsRKeyUp());//等待按键抬起 SetNormalSt();//设置板载单片机引脚为普通状态 if(Mplaymode==ISRECMODE) { stop(); //停止以前的操作 delayms(400); //延时等待操作生效 } Mplaymode=ISRECMODE; autorecord(recordadd[recordnum]);//从指定的地址开始录音 recordnum++; if(recordnum==5) recordnum=0; SetHigRes(); //恢复单片机为高阻态 return; } if(keyDown()==PLAY_K) { while(!IsPKeyUp());//等待按键抬起 SetNormalSt();//设置板载单片机引脚为普通状态 if(Mplaymode==ISRECMODE) { stop(); //停止以前的操作 delayms(400); //延时等待操作生效 } Mplaymode=ISPLAYMODE; autoplay(recordadd[playnum]); //从指定的地址开始放音 playnum++; if(playnum==5) playnum=0; SetHigRes(); //恢复单片机为高阻态 return; } } void main() { Mplaymode=0; InitISD(); stoppd(); SetHigRes(); // UART_init(); InitKey(); while(1) { SingleRecord(); // if(RECORD==0) // { // delayms(25); // while(!RECORD);//等待按键抬起 // delayms(50); //// UART_send(0x05); // SetNormalSt();//设置板载单片机引脚为普通状态 // if(Mplaymode==ISRECMODE) // { // stop(); //停止以前的操作 // delayms(400); //延时等待操作生效 // } // Mplaymode=ISRECMODE; // autorecord(ADDR1);//从指定的地址开始录音 // SetHigRes(); //恢复单片机为高阻态 // return; // } // if(PLAY == 0) // { // delayms(25); // while(!PLAY);//等待按键抬起 // delayms(50); // SetNormalSt();//设置板载单片机引脚为普通状态 // if(Mplaymode==ISRECMODE) // { // stop(); //停止以前的操作 // delayms(400); //延时等待操作生效 // } // Mplaymode=ISPLAYMODE; // // autoplay(ADDR1); //从指定的地址开始放音 // SetHigRes(); //恢复单片机为高阻态 // return; // } // if(uart_value == 0x01) //串口接收到1表示录音 // { // SetNormalSt();//设置板载单片机引脚为普通状态 // if(Mplaymode==ISRECMODE) // { // stop(); //停止以前的操作 // delayms(400); //延时等待操作生效 // } // Mplaymode=ISRECMODE; // autorecord(ADDR1);//从指定的地址开始录音 // SetHigRes(); //恢复单片机为高阻态 // return; // } // // if(uart_value == 0x02) //2表示要停止录音或者放音 // { // stoppd(); // SetHigRes(); // } // // if(uart_value == 0x03) //3表示播放录音 // { // SetNormalSt();//设置板载单片机引脚为普通状态 // if(Mplaymode==ISRECMODE) // { // stop(); //停止以前的操作 // delayms(400); //延时等待操作生效 // } // Mplaymode=ISPLAYMODE; // // autoplay(ADDR1); //从指定的地址开始放音 // SetHigRes(); //恢复单片机为高阻态 // return; // } } }
评论
    相关推荐
    • android录音
      利用audiorecord进行录音获取录音信息写成pcm格式,也可添加wav头封装成wav格式。
    • Android 录音
      主要有,上滑取消录音,限制录音时长,录音动画和仿we微信播放效果,并解决开启权限发生来语音错误
    • android录音
      可以实现录音并存储,录音格式是媒体流文件3gp,并可以实现播放与删除
    • android 录音
      实现一键跳转至系统录音界面,点击返回按钮后又恢复工程界面
    • android录音
      android简单的录音代码,可以实现录音功能。
    • android录音
      android录音android录音android录音android录音android录音android录音
    • android录音
      android 调用系统录音..android
    • webRTC录音
      https浏览器下实现口语录音,保存MP3|wav格式,下载下来直接可以使用,js+php回调
    • Android录音
      实现Android录音功能,简单的例子,容易学习
    • android 录音
      一个非常容易上手的录音功能的代码,适合急于应用的人员