?? 語音錄放模塊程序.txt
字號:
1. SPI口通信模塊
(1)下面為初始化部分的代碼程序。
void SPI_Init(void)
{
TRISB=0xe1; //設置PORTB數據方向寄存器
PORTB=0x80; //設置PORTD
}
(2)以下程序SPI總線讀寫功能,data既是向SPI寫入的數據,也是從SPI中讀取的數據,返回給函數。
unsigned char SPI_ReadWrite(unsigned char data)
{
unsigned char i;
for(i=8; i!=0; i--)
{
SPI_CLK=0; //CLK引腳置低電平
SPI_DI=0; //數據線置低電平
if(data&0x80)
SPI_DI=1; //若data高位為1,則數據線置高電平
data<<=1;
SPI_CLK=1; // CLK引腳置高電平
if(SPI_DO)
data|=1; // 讀入一位
}
SPI_CLK=0;
return data;
2. ISD4004錄音操作
// 錄音操作
void Record(int nAddr)
{
int i;
unsigned char code;
// 發送加電指令
PowerUp();
// 延時25ms以上
Delay_ms(30);
// 再次發送加電指令
PowerUp();
// 延時25ms以上
Delay_ms(30);
// 延時25ms以上
Delay_ms(30);
// 發送地址信息
SendAddr(nAddr);
// 發送SETREC命令
code = 0x05;
SendOpCode(code);
// 發送REC命令
code = 0x0D;
SendOpCode(code);
// 處理結束
for(;;)
{
// 如果發生溢出的時候則結束錄音
if(nOVF == 1)
{
nOVF = 0;//清除中斷標志變量
// 發送停止命令
Stop();
// 延遲一點時間
for(i = 0;i < 100;i++) ;
break;
}
// 如果第2次按下錄音鍵,則結束錄音
if((nRec == 0) && (nRec_count == 2))
{
nRec_count = 0;//清除按鍵次數記錄變量
// 發送停止命令
Stop();
// 延遲一點時間
for(i = 0;i < 100;i++) ;
break;
}
}
// 發送掉電指令
PowerDown();
// 延遲一段時間
Delay_ms(30);
return;
3. ISD4004放音操作
// 放音操作
void Play(int nAddr)
{
int i;
unsigned char code;
// 發送加電指令
PowerUp();
// 延時25ms以上
Delay_ms(30);
// 發送地址信息
SendAddr(nAddr);
// 發送SETPLAY命令
code = 0x07;
SendOpCode(code);
// 發送PLAY命令
code = 0x0F;
SendOpCode(code);
// 處理結束
for(;;)
{
// 如果發生溢出的時候則結束錄音
if(nOVF == 1)
{
nOVF = 0;//清除中斷標志變量
// 發送停止命令
Stop();
// 延遲一點時間
for(i = 0;i < 100;i++) ;
break;
}
// 如果第2次按下放音鍵,則結束放音
if((nPlay == 0) && (nPlay_count == 2))
{
nPlay_count = 0;//清除按鍵次數記錄變量
// 發送停止命令
Stop();
// 延遲一點時間
for(i = 0;i < 100;i++) ;
break;
}
}
// 發送掉電指令
PowerDown();
// 延遲一段時間
Delay_ms(30);
return;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -