新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機實現語音錄放

        單片機實現語音錄放

        作者: 時間:2016-11-18 來源:網絡 收藏
        單片機不僅可以實現簡單的音樂放生器,而且可以實現基于語音錄放芯片的語音錄放電路。結合以前學習的內容,結合有關資料實現了單片機的語音錄放設計。

        本文引用地址:http://www.104case.com/article/201611/315962.htm

        主要器件:

        1、AT89C52單片機芯片,控制語音芯片實現語音的錄放。

        2、語音芯片ISD2560。ISD2560采用多電平直接模擬量存儲技術,可以非常真實、自然的再現語音、音樂、音調和效果聲,錄音時間為60s,可重復錄放10萬次。

        試驗流程圖:

        試驗電路圖:

        試驗程序代碼:

        //Voice.h程序

        #ifndef_VOICE_H//防止Voice.h被重復引用

        #define_VOICE_H

        #include //引用標準庫的頭文件

        #include

        #define uchar unsigned char

        #define uint unsigned int

        void record(void);

        void playback(void);

        uchar count;//重復播放次數計數器

        uchar StartFlag;//開始鍵按下標志

        uchar IdleFlag;//系統是否處于空閑狀態標志

        /*定義語音芯片ISD2560的控制引腳*/

        sbit START = P1^0;

        sbit EOM = P1^4;

        sbit PR = P1^5;

        sbit PD = P1^6;

        sbit CE = P1^7;

        #endif

        //Voice.c程序

        #include "voice.h"

        /*延時t毫秒*/

        void delay(uint t)

        {

        uint i;

        while(t--)

        {

        /*對于11.0592M時鐘,約延時1ms */

        for (i=0;i<125;i++)

        {}

        }

        }

        /*外部中斷0服務子程序*/

        void out_int0() interrupt 0 using 1

        {

        EX0 = 0;//關外部中斷0

        PD = 1;//進入節電狀態

        if(count<2)//再重播2次,共3次放音

        {

        count++;

        delay(500);//延時500ms

        P2 = P2&0xFC;// A8=A9=0

        P0 = P0&0x00;//起始地址為0

        playback();//從地址0處播放

        EX0 = 1;//開外部中斷0

        }

        else

        {

        IdleFlag = 1;//變為空閑狀態,可以再次按開始鍵

        count = 0;

        }

        }

        /*主程序*/

        void main()

        {

        EA = 1;//開CPU中斷

        count = 0;

        StartFlag = 0;

        IdleFlag = 1;

        while(IdleFlag==1)

        {

        if (START)

        {

        delay(10);//延時去抖動

        if (START)

        StartFlag = 1;//開始鍵按下標志

        }

        if (StartFlag == 1)

        {

        do

        {

        P2 = P2&0xFC;// A8=A9=0

        P0 = P0&0x00;//起始地址為0

        record();//錄音開始,存放在地址0處

        }

        while (START);//開始鍵松開

        StartFlag = 0;

        PR = 1;//結束錄音

        PD = 1;//進入節電狀態

        delay(500);//延時500ms再播放錄音

        EX0 = 1;//開外部中斷0

        P2 = P2&0xFC;// A8=A9=0

        P0 = P0&0x00;//起始地址為0

        playback();//從地址0處進行第一次播放

        IdleFlag = 0;//當前不空閑,按開始鍵無效

        }

        }

        }

        /*錄音函數*/

        void record(void)

        {

        CE = 0;

        PD = 0;

        PR = 0;

        }

        /*放音函數*/

        void playback(void)

        {

        CE = 0;

        PD = 0;

        PR = 1;

        }



        關鍵詞: 單片機語音錄

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 汶川县| 无极县| 兴国县| 宣汉县| 遵义县| 澄江县| 准格尔旗| 甘洛县| 杭州市| 武夷山市| 柞水县| 新巴尔虎右旗| 青阳县| 雷州市| 无棣县| 都昌县| 津市市| 东阳市| 枣庄市| 克山县| 凉城县| 德钦县| 区。| 桃江县| 泽州县| 工布江达县| 贞丰县| 南乐县| 大兴区| 攀枝花市| 淳安县| 旬邑县| 三河市| 平和县| 宁远县| 镇坪县| 彰化县| 济宁市| 罗江县| 潼关县| 大化|