單片機 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)
2019-4-5 18:52 上傳
點擊文件名下載附件
|