单片机 STC89C52 和 ISD2560 语音芯片结合进行录音笔设计,从而实现了语音的分段录音和循环回放。语音录放系统主要包括单片机控制模块、录音模块、按键控制模块、放音模块、时间显示模块,其中单片机控制模块是整个系统设计的关键,语音处理模块主要进行声音的采集、和语音的滤波。本产品单片机通过 SPI 口通讯方式与语音模块进行通讯,来实现语音的录音和播放。由于每段录音都对应这不同的地址,因此在播放录音时,需要发送播放的地址即可播放。语音经过驻极话筒把声音转换成电信号。传感器采集的电信号经过电容滤波后送至语音模块。当录音时,语音模块对连续变化的语音信号进行采样,抽取其中的语音信号大、电平,直接存储在语音芯片 ISD2560 中,防止丢失数据。当播放时,需要在语音芯片的输出端加一个功放电路,使得播放出来的声音真实自然
电路原理图如下:
单片机源程序如下:
- RECORD BIT P3.7 ;:录音按键
- PLAY BIT P3.5 ;:播放按键
- STOP BIT P3.4 ;;停止按键
- CE BIT P3.0 ;;ISD2560的片选 信号,低有效。
- PD BIT P3.1 ;;ISD2560 POW-ER DOWN按键
- OVF BIT P3.2
- EOM EQU P3.2 ;;End of message 引脚
- PR BIT P3.3 ;;Play or record
- RECFLAG BIT 20H ;;录音标记位
- PLAYFLAG BIT 21H ;:播放标记位
- ORG 0000H
- LJMP MAIN
- ORG 0030H
-
- MAIN:
- MOV TMOD, #01H ;T0定时方式1
- MOV TH0, #3CH ;50ms@12MHz
- MOV TL0, #0B0H
- SETB TR0
- ;
- MOV R7, #20 ;50ms中断次数.
- MOV R6, #0 ;秒数置零.
- LCALL SYSINT ;;系统初始化
- BUTTON: MOV C,RECORD ;;判断“录 音”按键是否为低电平?
- JC BUTTON1 ;;否.继续扫描下一个按键
- LCALL DELAY10MS ;;是,调用延时去抖动
- MOV C, RECORD ;;再次读人,
- JC BUTTON1 ;;为高电平则为 干扰,继续扫描下一个按键。
- WAITl: MOV C,RECORD ;;等待按键弹起
- JNC WAITl
- LCALL TORECORD
- BUTTON1: MOV C,PLAY
- JC BUTTON2
- LCALL DELAY10MS
- MOV C, PLAY
- JC BUTTON2
- WAIT2: MOV C,PLAY
- JNC WAIT2
- LCALL PLAYBACK
- BUTTON2: MOV C,STOP
- JC BUTTON3
- LCALL DELAY10MS
- MOV C,STOP
- JC BUTTON3
- WAIT3: MOV C,STOP
- JNC WAIT3
- LCALL STOPDEVICE
- BUTTON3: LJMP BUTTON
- ;****************下面是其录音子程序****************
- TORECORD:JB RECFLAG,PAUSEl ;;判断是否已经处于RECORD中,是处在RECORD下,则 跳转到PAUSEl
- CLR PLAYFLAG
- SETB RECFLAG
- CLR PR ;;修改PR引脚置为低电平表示即进入RECORD模式,
- NOP
- NOP
- PAUSEl: LCALL CEPULSE ;:如果从PLAYBACK转换到RECORD模式下,则表示开始录音: 如果已经在录音模式下,则表示暂停;调用CE低 脉冲发生子程序
- LCALL DELAYl20MS ;:延迟TDB长的时间,目的是满足两个CE脉冲之间在时 序上要求的间隔
- RET
- ;*****************系统的播放子程序**************
- PLAYBACK:JB PLAYFLAG,PAUSE2 ;;判断 是否已经处于PLAYBACK中.是处于PLAYBACK 下,则跳转到PAUSE2
- CLR RECFLAG
- SETB PLAYFLAG
- SETB PR ;;修改PR引脚置为高电乎表示进入PLAYBACK模式
- NOP
- NOP
- PAUSE2: LCALL CEPULSE ;;若从RECORD转换到PLAYBACK模式下,则表示开始播放;如果已 经处在播放模式下,则表示暂停;调用CE低脉冲 发生子程序,已处于PLAYBACK时,则暂停播放
- LCALL DELAYl20MS ;:延迟TDB长 的时间,目的是满足两个CE脉冲之间在时序上要 求的间隔
- RET
- ;*****************停止录音或播放子程序***********
- STOPDEVICE:LCALL PDPULSE
- NOP
- NOP
- CLR PLAYFLAG
- CLR RECFLAG
- RET
- ;*****************CE脉冲发生程序*****************
- CEPULSE: CLR CE ;;;;;;
- NOP
- NOP
- SETB CE
- RET
- ;*****************PD脉冲发生程序*****************
- PDPULSE: SETB PD ;:置PD为高电平
- LCALL DELAY30MS
- CLR PD
- RET
- ;****************系统初始化程序******************
- SYSINT: CLR EA
- CLR RECFLAG ;;清除记录标记位
- CLR PLAYFLAG ;;清楚播放标记位
- CLR P1.0
- MOV P1,#02H ;;ISD2560处于 PUSH—BUTrON模式,A6/M6为高电平,A0/M0一 A5/M5都为低电平
- MOV P1,#00H
- SETB P1.1
- CLR PD ;;PD脚置为低电平
- SETB CE ;:不使能ISD2560
- RET
- ;*******************10ms的延时程序****************
- DELAY10MS:MOV R7,#20
- DELAYl: MOV R6,#250
- DJNZ R6,$
- DJNZ R7, DELAYl
- RET
- ;******************30ms的延时程序*****************
- DELAY30MS:MOV R7,#60 ;;30 ms的延时
- DELAY2: MOV R6,#250
- DJNZ R6,$
- DJNZ R7, DELAY2
- RET
- ;******************120 ms的延时程序***************
- DELAYl20MS:MOV R5,#4 ;;120 ms的延时
- DELAY3: LCALL DELAY30MS
- DJNZ R5, DELAY3
- RET
- END
- ;****************数码管显示时间********************
- ; 共阴极数码管显示代码表
- DISP:
- MOV DPTR, #DUAN_TAB ;段码表地址.
- MOV A, R6
- MOVC A, @A+DPTR ;查表.
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
录音笔原理图+代码.rar
(186.06 KB, 下载次数: 123)
|