摘? 要
隨著語言的處理技術在工業(yè)生產(chǎn)、交通、通信等方面的運用得到不斷創(chuàng)新。數(shù)碼錄音放音系統(tǒng)已得到了越來越多的人的青睞,通過對多種錄音放音系統(tǒng)的設計方案進行了比較和分析,本論文最終選定以STC89C52單片機設計了一個數(shù)碼錄音放音系統(tǒng)。
本文提出并設計實現(xiàn)了基于STC89C52單片機和ISD4004語音芯片的數(shù)碼錄音放音系統(tǒng)方案。首先介紹了設計方案,接著進行了系統(tǒng)的硬件設計,包括單片機最小系統(tǒng)電路的設計、信號收集放大處理電路設計、按鍵控制電路的設計、液晶顯示電路的設計等。設計中以STC89C52單片機主控制為核心,采用ISD公司制造的ISD4004語音芯片實現(xiàn)數(shù)碼錄音放音系統(tǒng)的功能。其中按鍵控制電路對整個系統(tǒng)進行控制,顯示電路用LCD1602更直觀的把錄音放音等相關信息顯示,信號收集放大處理電路放大器采用通用型音頻功率放大器LM386來實現(xiàn)。系統(tǒng)模塊包括主程序模塊、語音信號的采集模塊、鍵盤掃描模塊、信息顯示模塊等,進行了程序流程的設計,編寫了程序代碼。本系統(tǒng)實現(xiàn)了語音數(shù)據(jù)的錄音、播放、暫停、快進、快退、錄音條目選擇以及LCD1602等顯示相關操作等功能,設計具有一定的應用價值。
關鍵詞: STC89C52單片機;ISD4004語音芯片;數(shù)碼錄音放音系統(tǒng)
Abstract
With the continuous innovation of language processing technology in industrial production, transportation, communication and other aspects. The digital recording and playback system has been favored by more and more people. By comparing and analyzing the design schemes of various recording and playback systems, this thesis finally chooses to design a digital recording and playback system with STC89C52 microcontroller.
This paper proposes and designs and implements a digital recording and playback system scheme based on STC89C52 microcontroller and ISD4004 voice chip. Firstly, the design scheme is introduced, and then the hardware design of the system is carried out, including the design of the minimum system circuit of the single-chip microcomputer, the design of the signal collection and amplification processing circuit, the design of the key control circuit, and the design of the liquid crystal display circuit. In the design, the main control of STC89C52 single-chip microcomputer is used as the core, and the ISD4004 voice chip made by the American ISD company is used to realize the function of the digital recording and playback system. Among them, the key control circuit controls the whole system, the display circuit uses LCD1602 to more intuitively display related information such as recording and playback, and the signal collection, amplification and processing circuit amplifier adopts a general-purpose audio power amplifier LM386 to realize. The system module includes the main program module, voice signal acquisition module, keyboard scanning module, information display module, etc. The program flow is designed and the program code is written. This system realizes the functions of voice data recording, playing, pausing, fast forwarding, fast rewinding, recording item selection, and LCD1602 display related operations, and the design has certain application value.
Key words:STC89C52 microcontroller ;ISD4004 voice chip;Digital recording and playback system
目??? 錄
引言(四號黑體)…………………………………………………………1
1? 系統(tǒng)概述………………………………………………………………
1.1 任務要求……………………………………………………………………………3
1.2 主要研究內容? ……………………………………………………………………
2? 設計方案及元器件介紹 ………………………………………………
2.1 系統(tǒng)設計總體方案 ………………………………………………………………6
2.2主要器件介紹………………………………………………………………………6
2.2.1 ISD4004語音芯片………………………………………………………………
2.2.2 LCD1602液晶顯示………………………………………………………………
2.2.3 STC89C52RC單片機……………………………………………………………
2.2.4 LM386音頻功率放大器…………………………………………………………
3? 硬件設計 ………………………………………………………………
3.1 系統(tǒng)各部分電路設計 ……………………………………………………………6
3.1.1 單片機最小系統(tǒng)電路……………………………………………………………
3.1.2 LCD1602顯示電路………………………………………………………………
3.1.3信號收集放大處理電路…………………………………………………………
3.1.4按鍵控制電路……………………………………………………………………
4? 軟件設計 ………………………………………………………………
4.1 程序總體設計………………………………………………………………………
4.1.1 ISD錄音程序設計………………………………………………………………
4.1.2 按鍵控制程序設計………………………………………………………………
5? 系統(tǒng)測試 ………………………………………………………………
5.1 系統(tǒng)實物 …………………………………………………………………………
5.2 系統(tǒng)實現(xiàn)功能概況 ………………………………………………………………
5.3 系統(tǒng)的不足及改進方式……………………………………………………………
6? 結論……………………………………………………………………
謝辭…………………………………………………………………………
參考文獻……………………………………………………………………
附錄…………………………………………………………………………
引言
在經(jīng)濟不斷發(fā)展,電子科學技術迅猛提升的現(xiàn)今。數(shù)碼錄音對于現(xiàn)如今的眾多電子產(chǎn)品來說,已是常帶有的功能了,它已經(jīng)被用在了許多的地方。例如手機、電腦等人們常用的電子設備上,以及社交App微信、QQ等,語音信息為人們的生活提供了很大便利。在工業(yè)生產(chǎn)、交通、通信等方面的運用得到不斷創(chuàng)新。
在你無法憑借記憶記住重要談話,或者重要會議的重要內容的時候,它便體現(xiàn)除了它的優(yōu)勢,清晰完整無誤的記錄下你要記錄的東西,而你能夠拿出更多的時間來處理其他事情。
本次設計的數(shù)碼錄音放音系統(tǒng),就是在此基礎上添加一些更適用的功能,能錄制多條語音信息的同時還能實現(xiàn)快進快退、繼續(xù)暫停功能。能從錄音中更好的提取的信息。設計具有一定的應用價值。
1? 系統(tǒng)概述
1.1 任務要求
綜合運用所學的模擬電子技術、數(shù)字邏輯電路、C語言、單片機原理及應用、傳感器等專業(yè)知識,設計出一套數(shù)碼錄音放音系統(tǒng)。系統(tǒng)實現(xiàn)錄音、放音、播放停止、快進快退、刪除、顯示相關信息等功能。
1.2 主要研究內容
本次設計就利用單片機和語音芯片來實現(xiàn)一個數(shù)碼錄音放音系統(tǒng)。對于數(shù)碼錄音放音系統(tǒng)的最基本要求便是可以錄音、播放、暫停、快進、快退、顯示相關信息、錄音條目選擇、刪除要求。STC89C52該款單片機資源豐富,再加上與ISD4004語音芯片的結合來實現(xiàn)語音的存儲與回放,通過單片機的控制可以實現(xiàn)語音的錄放的功能。
主要研究內容由信號處理模塊、語音錄放模塊、和音頻放大模塊三部分組成。并選用STC89C52為主控器。利用51型單片機對ISD語音芯片的控制實現(xiàn)對語音的錄、放。并加入功放、麥克、揚聲器等人性化功能。
采用語音芯片進行信號處理并把處理結果送往主控器。由主控器控制語音模塊的錄放。語音錄放模塊主要由ISD語音芯片及一些外圍元件組成,主要完成語音的錄放及語音的存儲等。音頻放大模塊主要由LM386及部分外圍器件構成,主要是對錄放的聲音信號進行放大。
鑒于此, 本系統(tǒng)的設計采用ISD4004語音芯片和STC89C52單片機的結合,完成數(shù)碼錄音錄放系統(tǒng)的設計。并通過一些外部人機交互功能,設計出一套數(shù)碼錄音放音系統(tǒng)。系統(tǒng)實現(xiàn)錄音、放音、播放停止、快進快退、刪除、顯示相關信息等功能。
2 ?設計方案及元器件介紹
2.1系統(tǒng)設計總體方案
數(shù)碼錄音放音系統(tǒng)的主要功能是實現(xiàn)語音的錄音、播放與停止、快進與快退、刪除、播放選擇以及能顯示相關信息。要實現(xiàn)語音的錄音、播放與停止、快進與快退、刪除、播放選擇的方法很多,可供選擇的器件也很多。由于單片機等微控制器的出現(xiàn)和數(shù)字電路技術的發(fā)展,使得現(xiàn)在語音的錄音與放音、快進與快退變得易于實現(xiàn)。本系統(tǒng)設計采用單片機作為微控制器。選用字長為8位的STC89C52單片機作為控制器。
目前能與單片機配合使用實現(xiàn)本系統(tǒng)設計的語音芯片有很多,其中不乏性能優(yōu)越的語言芯片。ISD公司生產(chǎn)的ISD4004語音芯片就是一款性能優(yōu)越的語音芯片。ISD4004芯片采用CMOS技術,內含振蕩器、防混淆濾波器、平滑濾波器、音頻放大器、自動靜噪及高密度多電平閃爍存貯陣列。引腳包括電源、時鐘、語音信號模擬輸入/輸出端、與MCU接口(SPI接口)幾部分。芯片采用多電平直接模擬量存儲技術,每個采樣值直接存貯在片內閃爍存貯器中,因此能夠非常真實、自然地再現(xiàn)語音。
ISD4004系列單片錄放時間為8~16 min,采樣頻率可為4.0/5.3/6.4/8.0 kHz,頻率越低,錄放時間越長,而音質則有所下降。芯片設計基于所有操作必須由微控制器控制,操作命令可通過串行通信接口(SPI或Mi—crowire)送入。由于ISD4004的眾多優(yōu)點,本設計就采用它作為錄放音器件。
數(shù)碼錄音放音系統(tǒng)設計主要有六個部分,錄音模塊部分、放大器部分、控制處理部分、數(shù)據(jù)存儲部分、中斷按鍵部分、顯示部分。如圖2-1所示。
以STC89C52單片機作為主控器,通過ISD4004語音芯片進行語音的錄制與播放。由語音采集電路采集的經(jīng)過ISD4004的處理與保存,錄好的語音信息再通過LM386功放進行信號的放大再播放。中斷按鍵與單片機相連接通過單片機的控制從而實現(xiàn)系統(tǒng)的功能。LCD1602與單片機配合顯示數(shù)碼錄音放音系統(tǒng)的各種信息。以上為本次設計的電路設計總體方案。
2.2主要器件介紹
2.2.1 ISD4004語音芯片
ISD4004語音芯片與其他類型語音芯片相比, ISD4004具有如下優(yōu)點: 首先是記錄聲音沒有段長度限制, 并且聲音記錄不需要A/D 轉換和壓縮。其次, 片內信息存于FLASH存貯器中,可在斷電情況下保存100 年(典型值),反復錄音10 0000次。此外ISD4004具有記錄時間長(8-16分鐘, 本次設計采用的為8分鐘的ISD4004語音芯片)的優(yōu)點。最后ISD4004開發(fā)應用還具有所需搭配的電路較為簡單的優(yōu)點。ISD4004芯片管腳如圖2-2所示。
芯片采用的多電平直接模擬量存儲技術, 每個采樣值直接存貯在片內FLASH存貯器中,因此能夠非常真實、自然地再現(xiàn)語音、音樂、音調和效果聲,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和"金屬聲"。基于以上的優(yōu)點,這也是我這次論文選擇該語音芯片的原因。
ISD4004芯片有如下特點:
(1)單片8至16分鐘語音錄放。
(2)內置微控制器串行通信接口。
(3)3.3V單電源工作。
(4)多段信息處理。
(5)工作電流25-30mA,維持電流1μA。
(6)不耗電信息保存100 年(典型值)。
(7)高質量、自然的語音還原技術。
(8)100000次錄音周期(典型值)。
(9)自動靜噪功能。
(10)片內免調整時鐘,可選用外部時鐘。
電源(VCCA,VCCD):為使噪聲最小,芯片的模擬和數(shù)字電路使用不同的電源總線,并且分別引到外封裝的不同管腳上,模擬和數(shù)字電源端最好分別走線,盡可能在靠近供電端處相連,而去耦電容應盡量靠近器件。
地線(VSSA,VSSD):芯片內部的模擬和數(shù)字電路也使用不同的地線。
同相模擬輸入(ANA IN+):這是錄音信號的同相輸入端。輸入放大器可用單端或差分驅動。單端輸入時,信號由耦合電容輸入,最大幅度為峰峰值32mV,耦合電容和本端的3KΩ電阻輸入阻抗決定了芯片頻帶的低端截止頻率。差分驅動時,信號最大幅度為峰峰值16mV,為ISD33000 系列相同。
反相模擬輸入(ANA IN-) :差分驅動時,這是錄音信號的反相輸入端。信號通過耦合電容輸入,最大幅度為峰峰值16mV
音頻輸出(AUD OUT) :提供音頻輸出,可驅動5KΩ的負載。
片選(SS) :此端為低,即向該ISD4004 芯片發(fā)送指令,兩條指令之間為高電平。
串行輸入(MOSI):此端為串行輸入端,主控制器應在串行時鐘上升沿之前半個周期將數(shù)據(jù)放到本端,供ISD 輸入。
串行輸出(MISO): ISD 的串行輸出端。ISD 未選中時,本端呈高阻態(tài)。
串行時鐘(SCLK):ISD 的時鐘輸入端,由主控制器產(chǎn)生,用于同步MOSI 和MISO 的數(shù)據(jù)傳輸。數(shù)據(jù)在SCLK上升沿鎖存到ISD,在下降沿移出ISD。
中斷(/INT):本端為漏極開路輸出。ISD 在任何操作(包括快進)中檢測到EOM 或OVF 時,本端變低并保持。中斷狀態(tài)在下一個SPI 周期開始時清除。中斷狀態(tài)也可用RINT 指令讀取。OVF 標志----指示ISD的錄、放操作已到達存儲器的末尾。EOM 標志----只在放音中檢測到內部的EOM 標志時,此狀態(tài)位才置1。
行地址時鐘(RAC):漏極開路輸出。每個RAC 周期表示ISD 存儲器的操作進行了一行(ISD4004 系列中的存貯器共2400 行)。該信號175ms 保持高電平,低電平為25ms。快進模式下,RAC 的218.75μs 是高平,31.25μs 為低電平。該端可用于存儲管理技術。
外部時鐘(XCLK):本端內部有下拉元件。芯片內部的采樣時鐘在出廠前已調校,誤差在 +1%內。商業(yè)級芯片在整個溫度和電壓范圍內, 頻率變化在+2.25%內。此時鐘已經(jīng)比較精準,所以一般不采用外接時鐘。在不外接地時鐘時,此端必須接地。
自動靜噪(AMCAP):當錄音信號電平下降到內部設定的某一閾值以下時,自動靜噪功能使信號衰弱,這樣有助于養(yǎng)活無信號(靜音)時的噪聲。通常本端對地接1mF 的電容,構成內部信號電平峰值檢測電路的一部分。檢出的峰值電平與內部設定的閾值作比較,決定自動靜噪功能的翻轉點。大信號時,自動靜噪電路不衰減,靜音時衰減6dB。1mF 的電容也影響自動靜噪電路對信號幅度的響應速度。本端接VCCA 則禁止自動靜噪。
ISD4004 工作于SPI 串行接口。SPI 協(xié)議是一個同步串行數(shù)據(jù)傳輸協(xié)議,協(xié)議假定微控制器的SPI 移位寄存器在SCLK 的下降沿動作,因此對ISD4004 而言,在時鐘止升沿鎖存MOSI 引腳的數(shù)據(jù),在下降沿將數(shù)據(jù)送至MISO 引腳。協(xié)議的具體內容為:
- SS 在傳輸期間必須保持為低電平,在兩條指令之間則保持為高?? 電平。
- 數(shù)據(jù)在時鐘上升沿移入,在下降沿移出。
- 4.SS 變低,輸入指令和地址后,ISD 才能開始錄放操作。
- 指令格式是(8 位控制碼)加(16 位地址碼)。
- ISD 的任何操作(含快進)如果遇到EOM 或OVF,則產(chǎn)生一個中斷,該中斷狀態(tài)在下一個SPI 周期開始時被清除。
- 使用"讀"指令使中斷狀態(tài)位移出ISD 的MISO 引腳時,控制及地址數(shù)據(jù)也應同步從MOSI 端移入。因此要注意移入的數(shù)據(jù)是否與器件當前進行的操作兼容。當然,也允許在一個SPI 周期里,同時執(zhí)行讀狀態(tài)和開始新的操作
- 所有操作在運行位(RUN)置1 時開始,置0 時結束。
- 所有指令都在SS 端上升沿開始執(zhí)行。
該芯片的上電順序:器件延時TPUD后才能開始操作。因此,用戶發(fā)完上電指令后,必須等待 TPUD,才能發(fā)出一條操作指令。
例如從00 從處發(fā)音,應遵循如下時序:
- 發(fā)POWERUP 命令;
- 等待TPUD(上電延時);
- 發(fā)地址值為00 的SETPLAY 命令;
- 發(fā)PLAY 命令器件會從此00 地址開始放音,當出現(xiàn)EOM 時,立即中斷,停止放音。
如果從00處錄音,則按以下時序:
- 發(fā)POWERUP命令;
- 等待TPUD(上電延時);
- 發(fā)POWERUP命令
- 等待2倍TPUD;
- 發(fā)地址值為00的SETREC命令;
- 發(fā)REC命令,器件便從00地址開始錄音,一直到出現(xiàn)OVF(存貯器末尾)時,錄音停止。
表2-3 ISD4004指令表
2.2.2 LCD1602液晶顯示
LCD1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,它有若干個5X7或者5X10等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有也有間隔起到了字符間距和行間距的作用,正因為如此,所以他不能很好的顯示圖形。目前常用16*1,16*2,20*2和40*2行等的模塊。
一般的LCD1602字符型液晶顯示器的內部控制器大部分為HD44780,能夠顯示英文字母、阿拉伯數(shù)字、日文片假名和一般性符號。
LCD1602是指顯示的內容為16X2,即可以顯示兩行,每行16個字符液晶模塊。一般1602字符型液晶顯示器實物如圖2-4如下。
圖2-4 LCD1602實物圖
LCD1602具有如下特性:
(1)+5V電壓,對比度可調
(2)內含復位電路
(3)提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能
(4)有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM
(5)內建有160個5X7點陣的字型的字符發(fā)生器CGROM
(6)8個可由用戶自定義的5X7的字符發(fā)生器CGRAM
2.2.3 STC89C52RC單片機
STC89C52RC是宏晶科技公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52RC使用經(jīng)典的MCS-51內核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52RC為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。 STC89C52RC 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。其引腳圖如圖2-4所示。
其內部結構主要組成為:
(1)8位CPU,8kbytes程序存儲器(ROM);
(2)256bytes的數(shù)據(jù)存儲器(RAM);
(3)32條I/O口線,111條指令,大部分為單字節(jié)指令;
(4)21個專用寄存器;
(5)3個可編程定時/計數(shù)器,6個中斷源,2個優(yōu)先級;
(6)I/O口:4個8位并行I/O口,既可用作輸入,也可用作輸出;
(7)T/C:3個定時/記數(shù)器,既可以工作在定時模式,也可以工作在記數(shù)
圖2-5 STC89C52引腳圖
模式;
(8)一個全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實現(xiàn)單片機之間或單片機與微機之間的串行通信;
(9)片內振蕩器和時鐘產(chǎn)生電路,石英晶體和微調電容需要外接。最高振蕩頻率為12M。
2.2.4 LM386音頻功率放大器
LM386是國家半導體公司生產(chǎn)的音頻功率放大器,主要應用于低電壓消費類產(chǎn)品。為使外圍元件最少,電壓增益內置為20。但在1腳和8腳之間增加一只外接電阻和電容,便可將電壓增益調為任意值,直至 200。LM386的封裝形式有塑封8引線雙列直插式和貼片式,原理圖如圖2-6所示。
圖2-6 LM386芯片
特性:
(1)靜態(tài)功耗低,約為4mA,可用于電池供電;
(2)工作電壓范圍寬,4-12V or 5-18V;
(3)外圍元件少;
(4)電壓增益可調,20-200;
(5)低失真度;
3 ?硬件設計
3.1 系統(tǒng)各部分電路設計
3.1.1單片機最小系統(tǒng)電路
單片機最小系統(tǒng),也稱為最小應用系統(tǒng),它是指由最少元件組成可以使單片機正常工作的系統(tǒng)。單片機最小系統(tǒng)大致包括電源電路、復位電路、晶振電路三部分組成。單片機最小系統(tǒng)電路如圖3-1所示。
圖3-1單片機最小系統(tǒng)
電源電路:作為電子元器件,單片機也是需要供電的。單片機供電有一個范圍,本系統(tǒng)使用的STC89C52單片機,它一般使用5V電源。在使用的時候,可以從USB接口當中獲取5V電源。為此搭建了電源電路如圖3-2所示。
圖3-2電源電路
復位電路:單片機通電需要復位一次,因此,復位電路也是單片機最小系統(tǒng)的一部分。由電容C1與電阻R07組成的復位電路。單片機通常有一個低電壓復位引腳,即當輸入到低電平時,單片機復位。當電阻給電容器充電時,電容器的電壓緩慢上升到VCC。當芯片復位腳接近低電平時,芯片復位接近VCC,因此芯片停止復位并完成復位。
晶振電路:單片機正常工作是需要一個時鐘的,因此需要在晶振引腳外接一個晶振。單片機有兩個引腳為外部晶振的輸入口,晶振的兩端接這兩個IO口。把晶振直接的連接在IO口上會導致系統(tǒng)工作不穩(wěn)定,因為在晶振啟振一瞬間會產(chǎn)生電感,為了消除電感帶來的干擾,可分別在晶振的兩端接電容到地,這兩個電容取值在10~33P之間即可,從而讓晶振工作的時候更加穩(wěn)定。
3.1.2 LCD1602顯示電路
數(shù)據(jù)端口D0至D7與單片機P0.0至P0.7的I/O口相連用于數(shù)據(jù)的傳輸,數(shù)據(jù)/命令選擇RS與單片機P2.7相連,讀/寫選擇接電源地線(高電平時進行讀操作,低電平時進行寫操作)。使能端E連接單片機P2.6口。由單片機P2.6與P2.7端進行控制。LCD1602顯示電路如圖3-3所示。
圖3-3LCD1602顯示模塊
3.1.3 信號收集放大處理電路
信號收集放大處理電路由ISD4004語音芯片與LM386芯片組成。ISD4004語音芯片主要負責采集信號。LM386芯片主要負責信號的放大處理。由于ISD4004語音芯片需要3.3V的電壓供電。因此需要搭建一個由3.3V的芯片(AMS117-3.3V電源穩(wěn)壓芯片)組成的電路,把5V電壓轉成3.3V從而給ISD4004語音芯片供電。3.3V電壓如圖3-4所示。
圖3-4 3.3V電壓電路
片選端口(SS)連接于單片機P3.6口。串行輸出端口(MOSI)連接于單片機P3.5口。芯片數(shù)據(jù)地(Vssd)與模擬地(Vssa)全部與地線相接。外部時鐘(XCLK)連接地線。同相模擬輸入(IN+)與反相模擬輸入(IN-)分別與電容、電阻以及麥克風組成信號采集電路。自動靜噪(AMCAP)接電容接地。音頻輸出(AUDOUT)與電位器R22串聯(lián)接與LM386芯片信號輸入端口進行信號的放大處理。電位器R22的作用是調節(jié)音量大小。LM386兩個增益端口1腳與8腳相連,中間串聯(lián)一個1K電阻與一個10uF的電容。當兩個增益端口相連10uF的電容時,電壓放大倍數(shù)為200倍。5腳(Vout)為信號輸出端口串聯(lián)電容C10連接喇叭可放音。信號收集放大處理電路如圖3-5所示。
圖3-5信號收集放大處理模塊
3.1.4 按鍵控制電路? (楷體小四號)
按鍵控制模塊由按鍵開關S0-S4分別與單片機的P1.2-P1.6端口連接,用于控制單片機實現(xiàn)系統(tǒng)功能。S0為錄音條目切換,S1為錄音按鍵,S2為放音按鍵S3為刪除按鍵,S4為退出按鍵。按鍵控制電路如圖3-6所示。
圖3-6按鍵控制模塊
4 ?軟件設計
4.1 程序總體設計
本次畢業(yè)設計的程序用全部由C語言編寫完成,編程軟件用的是Keli uVision5來進行程序的編寫。編寫程序時采用多文件編寫方式,運用時在主函數(shù)里調用即可。
設計以MCS-51系列的單片機作為主控核心,ISD4004做錄放音部分及外部電路組成的一個數(shù)碼錄音放音系統(tǒng)。系統(tǒng)實現(xiàn)錄音、放音、播放停止、快進快退、刪除、顯示相關信息等功能。
程序設計中由以下幾個主體部分組成,主程序處理部分、按鍵處理部分、ISD4004語音處理部分、LCD1602信息顯示部分。程序以多文件方式進行編寫,更易于對程序的處理與調用。
程序流程圖如圖4-1所示。
圖4-1程序總體框圖
主程序如下;對LCD1602進行初始化,并顯示上電后的信息,再對ISD、計數(shù)器進行初始化,打開芯片使能端并延時。在while循環(huán)中調用各部分函數(shù),使之顯示數(shù)碼錄音放音系統(tǒng)的功能。
void main()
{
lcd1602_init();
L1602_string(1,1,"lcd init");
isd_init();
isd_stop();
timer_init();
EA = 1;
delay_ms(10);
while(1)
{
key_handle();
isd4004_handle();
lcd1602_handle();
}
}
4.1.1 ISD錄音程序設計
錄音程序設計大致為三部分,即通信命令函數(shù)(SendCmd)、自動放音函數(shù)(isd_autoplay)、自動錄音函數(shù)(isd_autorecord)。
通信命令函數(shù):內容主要包括ISD芯片通信端spi開啟與關閉,以及錄放音地址的配置,還有命令的調用。
void SendCmd(unsigned char cmd,unsigned int addr)
{
unsigned char ar;
SS=0; //ss=0,打開spi通信端
delay(5);
ar=(unsigned char)(addr);
spi_send(ar); //發(fā)送地址低位
ar=(unsigned char)(addr>>8);
spi_send(ar); //發(fā)送地址高位
spi_send(cmd);//發(fā)送命令
SS=1;
delay(5);
SCLK=0;
}
自動放音函數(shù):如從00處放音,首先打開串行輸入以及給串行時鐘,隨即發(fā)POWERUP 命令,并延時TPUD(上電延時),再發(fā)地址值為00的SETPLAY命令,命令發(fā)送后芯片便從為00地址開始放音,直到出現(xiàn)了EOM時放音音結束。編寫程序參照于ISD4004芯片手冊上電時序。
void isd_autoplay(unsigned int addr)
{
SS=0;? //發(fā)送開始
MOSI=0;
SCLK=0;
spi_send(ISDPOWERUP);??? // 上電
SS=1;
delay_ms(50);
SS=0;??? ? //發(fā)送發(fā)音地址
MOSI=0;
SCLK=0;
spisend16(addr);
MOSI=0;//設置命令
SCLK=0;
spi_send(PLAYSET);
SS=1;
SS=0;
MOSI=0;//放音命令
SCLK=0;
spi_send(PLAYCUR);
SS=1;
}
自動錄音函數(shù):如從00處錄音,首先打開串行輸入以及給串行時鐘,隨即發(fā)POWERUP 命令,并延時2倍TPUD(上電延時),再發(fā)地址值為00的SETREC命令,命令發(fā)送后芯片便從為00地址開始錄音,直到出現(xiàn)了OVF(存貯器末尾)時錄音結束。編寫程序參照于ISD4004芯片手冊上電時序。
void isd_autorecord(unsigned int addr)
{
SS=0;? //發(fā)送開始
MOSI=0;
SCLK=0;
spi_send(ISDPOWERUP);??? // 上電
SS=1;
delay_ms(50);
SS=0;? //發(fā)送開始
MOSI=0;
SCLK=0;
spi_send(ISDPOWERUP);??? // 上電
SS=1;
delay_ms(50);
SS=0;??? ? //發(fā)送放錄音地址
MOSI=0;
SCLK=0;
spisend16(addr);
MOSI=0;//錄音 設置命令
SCLK=0;
spi_send(RECSET);
SS=1;
SS=0;
MOSI=0;//錄音 命令
SCLK=0;
spi_send(RECCUR);
SS=1;
}
4.1.2 按鍵控制程序設計
正文……(首行縮進兩個字,宋體小四號)
void key_handle(void)
{
key_value = key_scan();
if(key_value != 0)
{
if(mode == 0)
{
if(key_value == 1) //條目選擇
{
if(++num >= 5) num = 1;
}
else if(key_value == 2) //錄音
{
mode = 1;
lock_flag = 1;
}
else if(key_value == 3) //播放
{
mode = 2;
lock_flag = 1;
play_addr_len = 0;
}
else if(key_value == 4) //刪除
{
mode = 3;
lock_flag = 1;
play_addr_len = 0;
}
}
if(key_value == 5) //退出
{
mode = 0;
lock_flag = 1;
}
if(mode == 2)
{
if(key_value == 1) //快進
{
isd_autoplay(isd_addr[num-1]+play_addr_len+10);
}
else if(key_value == 2) //快退
{
if(play_addr_len > 10)
{
isd_autoplay(isd_addr[num-1]+play_addr_len-10);
play_addr_len = play_addr_len-10;
}
}
else if(key_value == 3) //暫停
{
isd_stop();
}
else if(key_value == 4) //繼續(xù)
{
if(play_addr_len < 300)
{
isd_autoplay(isd_addr[num-1]+play_addr_len);
}
}
}
}
}
5 ?系統(tǒng)測試
5.1 系統(tǒng)實物
本數(shù)碼錄音放音系統(tǒng)設計實物如圖5-1所示。
圖5-1數(shù)碼錄音放音系統(tǒng)
5.2 系統(tǒng)實現(xiàn)功能概況
系統(tǒng)上電之后,按下自鎖開關LCD1602會進入錄音條目選擇界面。按鍵開關從左至右功能分別為條目選擇、錄音、播放、刪除、退出。條目選擇共4條,共可以錄音4條語音信息。選擇相對應的條目可以實現(xiàn)錄音、播放、刪除。
當按下錄音鍵后,系統(tǒng)開始錄音。錄音完畢時,按下退出鍵。再按播放鍵可播放錄音內容,同時第一個按鍵能實現(xiàn)快進,第二個按鍵能實現(xiàn)快退,第三與第四按鍵能實現(xiàn)繼續(xù)與停止。只有在播放模式下這四個按鍵才能實現(xiàn)快進、快退、繼續(xù)與停止的功能。
選擇相對應的條目,在按下刪除鍵即可刪去該條目的語音信息。通過調節(jié)電位器可以調節(jié)喇叭音量大小。
5.3 系統(tǒng)的不足及改進方式
本系統(tǒng)在播放錄音時會有少量的噪音,可能由以下原因造成:
(1)整個系統(tǒng)完全是手工焊制,線路之間存在干擾;
(2)ISD4004語音芯片的數(shù)字地與模擬地沒有分別走線,全部接到了一起,存在干擾;
(3)語音輸入放大電路的放大倍數(shù)不夠,噪聲沒有得到足夠的抑制。
另外由于語音芯片的限制,該錄音芯片時間過短,可選取存儲空間大一些的芯片來取代。該語音芯片也不是數(shù)字信息存儲,不能和PC端交互,在改良時,可以選取數(shù)字存儲類的芯片。
整個系統(tǒng)的設計合理,外圍電路結構簡單,方便調試;單片機余留有I/0 口,方便系統(tǒng)的升級和擴展;單片機的所有程序均使用c一51進行編寫,方便調試和閱讀。整個系統(tǒng)工作穩(wěn)定,操作方便。本設計的設計原理完全可以用在公共汽車上,作為語音報站器使用,也可以用在銀行和醫(yī)院等一些需要自動播報語音信息的公共場所。在本設計的基礎上稍加擴充,就可以滿足實際應用的需要。
ISD4004語音芯片沒有刪除指令。
6 結論
幾個月的努力,雖然過程磕磕絆絆,但最終還是把畢業(yè)設計順利完成了?;仡櫿麄€過程中,一開始根本就不知道到自己要做的是什么,有些時候都懷疑自己是否有能力完成畢業(yè)設計。從開始找資料分析,選擇方案確定器件?;仡櫼婚_始選題時,并沒有去細致的查資料挑選,只是想著隨便選一個題目就好了,可以說毫無準備。
需要全部資料可在我的資源中下載。內容包括:
需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤下載地址及提取碼。
紛傳點擊用微信打開即可,過程有點繁瑣請見諒。