能不能不用语音芯片,用单片机做个语音录放电路

2025-04-01 10:40:29
推荐回答(4个)
回答1:

介绍一种主电路主要由单片机89C52和ISD4004构成。该系统的硬件电路连接如图所示为流程图。

程序工作思想

    电路上电后,程序首先完成程序的初始化,随后查询按键状态,进入系统待机状态。如果有按键按下,则转去执行该按键指向的工作程序。按键包括放音键,停止键,加一,减一键以及特殊语键。调用放音子程序,读入前面获得的本站放音内容首地址,开始放音。每一句放音完毕后,ISD4004的中断引脚(25脚)会自动送一低电平信号。在硬件设计中,该引脚与单片机的P3.3连接。因此,会引起一次中断,在中断子程序中会有一个计数器记,加一键按下后则使程序放音内容转向下一段,减一键则使程序放音内容转向上一段,相应的段号显示也将随之刷新。特殊语键按下后,程序转向执行特殊语放音。停止键被按下将中止当前的放音状态。

部分工作子程序

    该部分程序主要完成放音操作,把获得的放音内容的地址送到ISD4004中,完成放音。下面给出的就是放音部分程序。放音子程序:

PLAY:

ACALL      POWERUP           ;上电子程序

    ACALL      DELAY25            ;延迟子程序,至少延迟25ms

    CLR         P1.6          ;选中ISD4004 

    MOV        PLAY2,#11100000B    ;存放SETPLAY命令

    MOV        A,PLAY0             ;送放音地址低8位

    ACALL      SEND                ;调用送地址子程序

    MOV        A,PLAY1             ;送放音地址高8位

    ACALL      SEND             

    MOV        A,PLAY2             ;送SETPLAY命令

    ACALL      SEND

    SETB        P1.6

    CLR         P1.6

    MOV        PLAYING,#11110000B   ;送入放音指令

    MOV        A,PLAYING

    ACALL      SEND

    SETB        P1.6

    RET

POWERUP:                             ;送上电指令子程序

    MOV        POWING,#00100000B    ;送入语音芯片上电信号

    MOV        A,POWUPING

    CLR         P1.6

    ACALL      SEND

    SETB        P1.6

    RET

SEND:                                  ;向ISD4004送指令,地址等的子程序

    CLR         MOSI

    CLR         P3.2

    MOV        R1,#8

OUTBIT1:

    CLR         P3.2                   ;时钟下降

    RRC         A

    MOV        MOSI,C                ;输出1位

    NOP

    NOP

    NOP

    SETB       P3.2                    ;时钟上升沿到

    NOP

    NOP

    NOP

    DJNZ       R1,OUTBIT1

    RET

回答2:

【单片机+ISD4003+几个电阻电容+小麦克 】这个不对
不好意思刚才没看清题目
要是不用语音芯片很难。可以用AD做语音数据采集,5V电压时声音使小麦克上的电压变化大概在1mV左右,可以用LM324做一下放大再做数据采集要不然根本听不出声音来;数据如果存储在单片机内部RAM中的话,STC89C52做着很困难,因为即使编码成MP3格式,8KB的存储空间也只能存储不到1秒的声音,何况STC89C52根本来不及做编码,这样8KB的空间不够用,楼主可以用58试试不过我觉得不做编码64K的空间还会不够,可以外扩一片FLASH;对于速度51单片机跟不上去。。。还是用AVR吧;假设现在已经把音乐数据存储了,再用个DA加个喇叭理论上就放出声音了。

回答3:

不可能。普通的单片机没有那么大的容量来存储几秒钟的声音信号。

回答4:

楼上看不懂中国话吗?你那个ISD4003是什么芯片。

51能做,费劲。懒得多讲。