首页 语音芯片isd4004的驱动程序

语音芯片isd4004的驱动程序

举报
开通vip

语音芯片isd4004的驱动程序语音芯片isd4004的驱动程序 ///////////////////////主函数功能描述////////////////////// /* 函数名称:isd4004 函数功能:语音录入/播放函数 入口参数:空 出口参数:空 异常记录:无 */ /////////////////////////////////////////////////////////// #include #define uchar unsigned char #define uint unsigned int ...

语音芯片isd4004的驱动程序
语音芯片isd4004的驱动程序 ///////////////////////主函数功能描述////////////////////// /* 函数名称:isd4004 函数功能:语音录入/播放函数 入口参数:空 出口参数:空 异常 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 :无 */ /////////////////////////////////////////////////////////// #include #define uchar unsigned char #define uint unsigned int sbit SS = P3^0; //片选 sbit SCLK = P3^3; //ISD4003 时钟 sbit MOSI = P3^1; //数据输入 sbit MISO = P3^2; //数据输出 sbit ISD_INT= P3^4; //中断 sbit RAC=P3^5; uchar PR=1; //PR=1 录音 PR=0 放音 //////////////////函数申明区//////////////////////// void delay4004(unsigned int time); void spi_send(uchar data4004); //isd4004spi发送数据函数 void isd_stop(void); //发送停止指令 void isd_pu(void); //上电指令 void isd_pd(void); //下电指令 void isd_play(void); //播放指令 void isd_rec(void); //录音指令 void isd_setplay(uchar adl,uchar adh); //设置播放模式指令 void isd_setrec(unsigned char adl,unsigned char adh); //设置录音模式指令 //unsigned char chk_isdovf(void) //检查是否溢出函数 ////////////////////////////////////////////////// void init12864(uchar c_command,uchar c_time); void print12864(uchar c_12864add,uchar c_12864hdate,uchar c_12864ldate,uchar c_12864time); uchar keyboard(uchar c_break); void delay4004(unsigned int time) //延迟n 微秒 { while(time--) { ; } } //************************************ //ISD4004 spi 串行发送子程序,8 位数据 //************************************ void spi_send(uchar data4004) { unsigned char isx_counter; SS=0; //ss=0,打开spi 通信端 SCLK=0; for(isx_counter=0;isx_counter<8;isx_counter++) //先发低位再发高位,依次发送。 { if ((data4004&0x01)==1) MOSI=1; else MOSI=0; SCLK=0; //下降沿发送数据 delay4004(2); SCLK=1; data4004=data4004>>1; } } //******************************* //发送stop 指令 //******************************* void isd_stop(void) { delay4004(10); SS=0; spi_send(0x30); SS=1; // delay4004ms(50); } //******************************* //发送上电指令,并延迟50ms //******************************* void isd_pu(void) { delay4004(10); SS=0; spi_send(0x20); SS=1; // delay4004ms(50); } //******************************* //发送掉电指令,并延迟50ms //******************************* void isd_pd(void) { delay4004(10); SS=0; spi_send(0x10); SS=1; // delay4004ms(50); } //******************************* //发送play 指令 //******************************* void isd_play(void) { spi_send(0xf0); SS=1; } //******************************* //发送rec 指令 //******************************* void isd_rec(void) { spi_send(0xb0); SS=1; } //******************************* //发送setplay 指令 //******************************* void isd_setplay(uchar adl,uchar adh) { delay4004(1); spi_send(adl); //发送放音起始地址低位 delay4004(2); spi_send(adh); //发送放音起始地址高位 delay4004(2); spi_send(0xe0); //发送setplay 指令字节 SS=1; } //******************************* //发送setrec 指令 //******************************* void isd_setrec(unsigned char adl,unsigned char adh) { delay4004(1); spi_send(adl); //发送放音起始地址低位 delay4004(2); spi_send(adh); //发送放音起始地址高位 delay4004(2); spi_send(0xa0); //发送setrec 指令字节 SS=1; } //************************************ //检查芯片是否溢出(读OVF,并返回OVF 值) //************************************ /*unsigned char chk_isdovf(void) { SS=0; delay4004(2); SCLK=0; delay4004(2); SCLK=1; SCLK=0; delay4004(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 } } */ void isd4004(uchar c_select) { uint isd4004add=0; SS=MOSI=MISO=SCLK=ISD_INT=RAC=1; init12864(0x01,0); print12864(0x80,'o','k',0); if(c_select=='A') { print12864(0x80,'A','!',0); isd_pu(); delay4004(5118); delay4004(5118); isd_pu(); delay4004(5118); delay4004(5118); delay4004(5118); delay4004(5118); isd_setrec(0x00,0x00); delay4004(2); isd_rec(); while(1) { if(ISD_INT==0) {print12864(0x90,'e','d',0);break;} if(RAC==0) { delay4004(20000); isd4004add++; print12864(0x90,isd4004add/1000+0x30,isd4004add%1000/100+0x30,0); print12864(0x92,isd4004add%100/10+0x30,isd4004add%10+0x30,0); if(keyboard(0))break; } } isd_stop(); isd_pd(); } if(c_select=='B') { isd4004add=0; print12864(0x98,'B','!',0); isd_pu(); delay4004(5118); isd_setplay(0x00,0x00); isd_play(); while(1) { if(ISD_INT==0) print12864(0x90,'e','d',0); if(RAC==0) { delay4004(20000); isd4004add++; print12864(0x90,isd4004add/1000+0x30,isd4004add%1000/100+0x30,0); print12864(0x92,isd4004add%100/10+0x30,isd4004add%10+0x30,0); if(keyboard(0))break; } if(keyboard(0)){print12864(0x82,'f','a',0); break;} } isd_stop(); isd_pd(); } if(c_select=='C') { isd4004add=0; print12864(0x98,'B','!',0); isd_pu(); delay4004(5118); isd_setplay(0x05,0x00); isd_play(); while(1) { if(ISD_INT==0) print12864(0x90,'e','d',0); if(RAC==0) { delay4004(2000); isd4004add++; print12864(0x90,isd4004add/1000+0x30,isd4004add%1000/100+0x30,0); print12864(0x92,isd4004add%100/10+0x30,isd4004add%10+0x30,0); if(keyboard(0))break; } if(keyboard(0)){print12864(0x82,'f','a',0); break;} } isd_stop(); isd_pd(); } if(c_select=='D') { print12864(0x80,'A','!',0); isd_pu(); delay4004(5118); isd_pu(); delay4004(5118); delay4004(5118); isd_setrec(0x10,0x00); delay4004(2); isd_rec(); while(1) { print12864(0x90,'e','d',0); if(RAC==0) { delay4004(2000); isd4004add++; print12864(0x90,isd4004add/1000+0x30,isd4004add%1000/100+0x30,0 ); print12864(0x92,isd4004add%100/10+0x30,isd4004add%10+0x30,0); if(keyboard(0))break; } } isd_stop(); } }
本文档为【语音芯片isd4004的驱动程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_882336
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:11
分类:互联网
上传时间:2017-09-25
浏览量:28