欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機89C52 控制ISD4004語音芯片,多段錄放音源碼
[打印本頁]
作者:
幾許輕唱
時間:
2018-4-9 17:49
標題:
單片機89C52 控制ISD4004語音芯片,多段錄放音源碼
單片機89C52 控制ISD4004語音芯片,多段錄放音
單片機源程序如下:
//AT89c52,ISD4004
//錄制k1鍵要按2次,led1亮,才可以K2播放。
//錄制并播放后,地址變為下一個,可以進行第二段語音的錄放。
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
////////定義放音命令,定義常量//////
#define ISDPOWERUP 0X20 //ISD4004上電
#define ISDSTOP 0X10 //ISD4004下電
#define OPERSTOP 0X30 //ISD4004停止當前操作
#define PLAYSET 0XE0 //ISD4004從指定地址開始放音
#define PLAYCUR 0XF0 //ISD4004從當前地址開始放音
#define RECSET 0XA0 //ISD4004從指定地址開始錄音
#define RECCUR 0XB0 //ISD4004從當前地址開始錄音
sbit SS=P1^0;
sbit MOSI=P1^1;
sbit SCLK=P1^3;
sbit INT = P1^4;
sbit k1=P3^1; ////k1鍵,錄音
sbit k2=P3^2; /// k2鍵,放音
sbit k3=P3^3; /// k3鍵,停止
sbit LED1=P0^0;
sbit LED2=P0^1;
uint addr;////全局變量,錄放音地址
void delay10ms(uint c) //延時
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
////////////////放音部分子程序,放音地址由ADDR決定////
void play()
{
uint y;
SS=0;
MOSI=0;//發送開始
SCLK=0;
for(y=0;y<8;y++) //上電
{
SCLK=0;
if((0x20>>y)&0x01)
MOSI=1;
else
MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
}//發送結束
SS=1;//上電結束
delay10ms(5);
SS=0;
MOSI=0;//發送地址
SCLK=0;
for(y=0;y<16;y++)
{
SCLK=0;
if((addr>>y)&0x01)
MOSI=1;
else
MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
} //發送地址結束
MOSI=0;//放音
SCLK=0;
for(y=0;y<8;y++)
{
SCLK=0;
if((0xe0>>y)&0x01)
MOSI=1;
else
MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
}
SS=1;
SS=0;
MOSI=0;//放音
SCLK=0;
for(y=0;y<8;y++)
{
SCLK=0;
if((0xf0>>y)&0x01)MOSI=1;
else MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
}
SS=1;
}
//////////////////////////錄音部分子程序,地址由ADDR決定/////////////////////////
void rec()
{
uint y;
SS=0;
MOSI=0;//發送開始
SCLK=0;
for(y=0;y<8;y++)
{
SCLK=0;
if((0x20>>y)&0x01)MOSI=1;
else MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
} //發送結束
SS=1; //上電結束
delay10ms(5);
SS=0;
MOSI=0; //發送開始
SCLK=0;
for(y=0;y<8;y++)
{
SCLK=0;
if((0x20>>y)&0x01)MOSI=1;
else MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
} //發送結束
SS=1; //上電結束
delay10ms(5);
SS=0;
MOSI=0; //發送地址
SCLK=0;
for(y=0;y<16;y++)
{
SCLK=0;
if((addr>>y)&0x01)MOSI=1;
else MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
} //發送地址結束
MOSI=0;
SCLK=0;
for(y=0;y<8;y++)
{
SCLK=0;
if((0xa0>>y)&0x01)MOSI=1;
else MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
}
SS=1;
SS=0;
MOSI=0;
SCLK=0;
for(y=0;y<8;y++)
{
SCLK=0;
if((0xb0>>y)&0x01)MOSI=1;
else MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
}
SS=1;
}
void stop()
{
uchar y;
SS=1;
SS=0;
MOSI=0;//放音
SCLK=0;
for(y=0;y<8;y++)
{
SCLK=0;
if((0x30>>y)&0x01)MOSI=1;
else MOSI=0;
_nop_();
_nop_();
_nop_();
SCLK=1;
_nop_();
_nop_();
_nop_();
}
SS=1;
}
void main()
{
uchar addressArr[]={0x05,0x1E,0x37}; //地址數組,可以自由添加,實現多段語音錄放。此處為3段。
uint recNum=0; //recNum為錄放地址選擇
P1=0xff; //初始化
P2=0xff;
P3=0xff;
while(1)
{
LED1=INT;
LED2=0;
if(k1==0) //錄制
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
89c52 ISD4004.zip
(39.73 KB, 下載次數: 130)
2018-4-9 17:47 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
cjxpdsxxx
時間:
2018-10-13 16:19
有圖沒
作者:
小精靈2003
時間:
2020-11-28 14:53
你好,我下載了你的軟件,你有沒有具體的電路圖啊?
作者:
moon84523
時間:
2021-2-27 17:21
只有代碼沒有電路圖,有點坑。對小白來說難實現
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1