基于單片機的語音存儲和播放系統設計_第1頁
基于單片機的語音存儲和播放系統設計_第2頁
基于單片機的語音存儲和播放系統設計_第3頁
基于單片機的語音存儲和播放系統設計_第4頁
基于單片機的語音存儲和播放系統設計_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、-. z.基于單片機的語音存儲和播放系統設計摘要在常見的電子產品或自動控制設備中,如果參加語音功能即能極大地提高人機界面的友好性,方便用戶操作。在許多場合需要語音存儲與語音播放技術和單片機結合在一起。常規的模擬化語音處理系統能實現語音的存儲與回放功能,但效果不佳。本設計選用功能強大的單片機STC89C52作為主動器件,采用數碼語音芯片ISD4004作為系統的語音存儲和播放芯片,選用LCD1602作為系統的顯示模塊,并同時采用掃描按鍵的方式實現系統的各類參數的調整。從而實現了一個完整的基于單片機的語音存儲和播放系統的設計。本文首先對系統中用到的單片機和語音芯片以及現實模塊進展了方案分析論證,從而

2、提出了系統的整體功能框架,然后分別對系統的各個功能模塊進展了硬件電路設計和軟件設計,最后對本設計進展了總結與展望。關鍵詞:STC89C52 ISD4004 語音存儲 語音播放Design of Voice Storage and Playback System Based on MicrocontrollerAbstractIn mon electronic products or automatic control equipment, if adding voice capabilities that can greatly improve the friendly man-machine

3、 interface, user-friendly operation. On many occasions the need to store voice bined with voice playback technology and Microcontroller. Conventional analog of voice processing systems to achieve storage and playback of voice, but to little avail.The design features a powerful microcontroller STC89C

4、52 chosen as the active devices, the use of digital voice chip ISD4004 chip as voice storage and playback system, as the system of choice LCD1602 display module, and also be achieved by scanning the keys to adjust the various parameters of the system. In order to achieve a plete Microcontroller desi

5、gn based voice storage and playback system. Firstly, the system used in the Microcontroller and voice chip and realistic analysis module of the demonstration program, which made the overall framework of the system function, and then separately for each module systems hardware design and software des

6、ign, the final design of the a summary and outlook.KEYWORDS:STC89C52 ISD4004 Voice StorageVoice playback目錄 TOC o 1-3 h z u HYPERLINK l _Toc387250617第1章緒論 PAGEREF _Toc387250617 h 4HYPERLINK l _Toc387250618第2章系統總體方案論證 PAGEREF _Toc387250618 h 5HYPERLINK l _Toc3872506192.1 系統設計方案選擇 PAGEREF _Toc387250619

7、 h 5HYPERLINK l _Toc3872506202.1.1 主控模塊的方案選擇 PAGEREF _Toc387250620 h 5HYPERLINK l _Toc3872506212.1.2 顯示模塊的方案選擇 PAGEREF _Toc387250621 h 6HYPERLINK l _Toc3872506222.1.3 語音模塊的方案選擇 PAGEREF _Toc387250622 h 7HYPERLINK l _Toc3872506232.2 系統總體方案設計 PAGEREF _Toc387250623 h 7HYPERLINK l _Toc387250624第3章系統硬件電路設

8、計 PAGEREF _Toc387250624 h 8HYPERLINK l _Toc3872506253.1 主控模塊電路設計 PAGEREF _Toc387250625 h 8HYPERLINK l _Toc3872506263.1.1 STC89C52單片機簡介 PAGEREF _Toc387250626 h 8HYPERLINK l _Toc3872506273.1.2 STC89C52最小系統電路設計 PAGEREF _Toc387250627 h 9HYPERLINK l _Toc3872506283.2 顯示模塊電路設計 PAGEREF _Toc387250628 h 11HYP

9、ERLINK l _Toc3872506293.3 語音模塊電路設計 PAGEREF _Toc387250629 h 12HYPERLINK l _Toc3872506303.4 系統參數設置電路設計 PAGEREF _Toc387250630 h 15HYPERLINK l _Toc3872506313.5 系統電源電路設計 PAGEREF _Toc387250631 h 16HYPERLINK l _Toc387250632第4章系統軟件設計 PAGEREF _Toc387250632 h 17HYPERLINK l _Toc3872506334.1 主程序流程圖設計 PAGEREF _T

10、oc387250633 h 17HYPERLINK l _Toc3872506344.2 子程序流程圖設計 PAGEREF _Toc387250634 h 18HYPERLINK l _Toc3872506354.2.1 錄音子程序 PAGEREF _Toc387250635 h 18HYPERLINK l _Toc3872506364.2.2 播放子程序 PAGEREF _Toc387250636 h 19HYPERLINK l _Toc387250637致謝 PAGEREF _Toc387250637 h 20HYPERLINK l _Toc387250638參考文獻 PAGEREF _T

11、oc387250638 h 21HYPERLINK l _Toc387250639附錄 PAGEREF _Toc387250639 h 22第1章 緒論在常見的電子產品或自動控制設備中,如果參加語音功能即能極大地提高人機界面的友好性,方便用戶操作。目前語音效勞行業越來越廣泛,如電腦語音鐘、語音型數字萬用表、手機話費查詢系統、排隊機、監控系統語音報警以及公共汽車報站器等。在許多應用場合,設計者需要將語音系統和單片機結合在一起1。單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優點。現代人類生活中所有的幾乎每件電子和機械產品中都會集成有單片機,單片機可以說是世界上數量最多的計算機

12、2。手機、計算器、家用電器、電子玩具、掌上電腦以及鼠標等電腦配件中都配有單片機。而個人電腦中也會有為數不少的單片機在工作。可以說,單片機能夠在語音功能的實現應用中發揮重大的作用。近年來,語音信號處理技術研究的突飛猛進,為數字語音存儲和播放系統提供了新的開展空間。對語音的采集、處理從以前簡單的波形編碼轉變為參數編碼、壓縮,從而大大減少了存儲的數據3。目前比擬典型的語音器件有美國的ISD公司生產的ISD系列語音芯片。ISD系列語音芯片采用模擬數據在半導體存儲器直接存儲的專利技術,即將模擬語音數據直接寫入到單個存儲單元,不需經過A/D或D/A裝換,因此能夠較好的真實再現語音的自然效果,防止了一般固體

13、語音電路因為量化和壓縮所造成的量化噪聲和失真現象4。本設計選用功能強大的單片機STC89C52作為主動器件,采用數碼語音芯片ISD4004作為系統的語音存儲和播放芯片,選用LCD1602作為系統的顯示模塊,并同時采用掃描按鍵的方式實現系統的各類參數的調整。從而實現了一個完整的基于單片機的語音存儲和播放系統的設計。本文首先對系統中用到的單片機和語音芯片以及現實模塊進展了方案分析論證,從而提出了系統的整體功能框架,然后分別對系統的各個功能模塊進展了硬件電路設計和軟件設計,最后對本設計進展了總結與展望。第2章 系統總體方案論證2.1 系統設計方案選擇根據設計要求可知,本系統的功能模塊大致可分為主控模

14、塊、顯示模塊、語音模塊、系統電源模塊以及系統參數設置模塊。顯示模塊實時的顯示語音播報信息,語音模塊實現語音的存儲和播放功能,系統參數設置模塊主要輔助上述模塊實現各自功能,系統電源模塊為系統提供工作電源,主控模塊主要負責協調所有功能模塊一起協同工作。各個模塊的具體方案選擇如下。2.1.1 主控模塊的方案選擇方案一:選用AT89C52作為系統的主控芯片,AT89C52芯片內部集成了8K的Flash,外加8K的ROM存儲空間,具有存儲空間較大,且存取速度快的優點,同時兼容所有MCS-51系列單片機。但是AT89C52不能實現ISP在線編程的功能,這樣就使得整個開發調試過程顯得繁瑣,且開發效率低,同時

15、在調試過程中需要對芯片屢次的插拔,很容易對芯片造成損壞5。方案二:選用STC89C52作為系統的主控芯片,STC89C52片內集成了64K的Flash存儲空間,存儲空間極大,且存儲速度快。STC89C52具備AT89C52具備的所有功能。最為重要的是STC89C52提供ISP在線編程的功能,這樣就使得整個開發過程變得高校便捷,在調試過程中不用屢次的插拔芯片,對芯片也能起到很好的保護作用6。綜上所述,再考慮到本系統設計的多功能萬年歷需要實現眾多的功能,初步估計系統程序可達40K左右,且需要反復調試實現設計要求的所以功能。應選用方案二,選用STC89C52作為系統的主控芯片。2.1.2 顯示模塊的

16、方案選擇方案一:采用LED動態掃描的方式實現系統的顯示功能,LED數碼管價格低廉,特別適用于顯示數字,LED數碼管與單片機連接電路簡單,但是隨著LED數碼管位數的增加,占用單片機IO端口資源也越來越多。方案二:采用點陣式數碼管的方式實現系統的顯示功能,點陣式數碼管采用8*8的發光二極管組成顯示區域,特別適用于顯示各類文字信息,且價格相對高昂,如果僅僅用來主要顯示數字信息顯得浪費。方案三:選用LCD1602液晶模塊實現系統的顯示功能,LCD1602顯示區域大,且能方便的顯示各類數字,文字,圖形信號,功能強大,且與單片機接口電路簡單。綜上所述,考慮到本設計中顯示局部主要用于顯示數字信息,而且顯示內

17、容較多,應選用第三種方案作為系統的顯示方案。2.1.3 語音模塊的方案選擇方案一:采用單片機編寫鬧鐘程序配合蜂鳴器的方式實現系統的語音報時功能。這種方式能減少系統芯片的使用,降低系統的整體功耗,但是因為系統內部的時間延遲問題,采用這種方式會對系統的整體效果產生嚴重的影響。方案二:采用專用的語音芯片實現系統的語音報時功能。選用美國ISD公司出品的ISD4004,該芯片具有連接電路簡單、功耗極低、抗干擾能力強等眾多優點7。綜上所述,本系統的語音模塊選用第二種方案,采用專用的語音芯片ISD4004實現系統的語音報時功能。2.2 系統總體方案設計綜上所述,本設計選用STC89C52單片機為核心控制器件

18、。顯示模塊選用LCD1602,可一次性顯示16*2個字符,完全能滿足系統的需求。語音芯片選用美國ISD公司出品的ISD4002,該芯片具有連接電路簡單、功耗極低、抗干擾能力強等眾多優點。同時本設計采用按鍵實現系統參數調整的功能。系統總體功能框圖如圖2.1所示。圖2.1 系統總體功能框圖第3章 系統硬件電路設計3.1 主控模塊電路設計3.1.1 STC89C52單片機簡介本設計選用的主控芯片STC89C52是STC公司生產的一個基于51內核的8位單片機。STC89C52是一個低電壓,高性能CMOS 8位單片機,片內置通用8位中央處理器,同時在片內集成了Flash閃存存儲器單元,正因為實現了上述的

19、諸多功能局部,STC89C52單片機以其強大的功能優勢,能較好的適用于各類復雜的控制應用場合。STC89C52系列單片機都采用40腳的封裝形式,在其40個引腳中包含了32個通用的輸入輸出端口,能靈活配置在各種控制場合;還包含了2個外部中斷端口,能實現各控制系統的中斷處理過程;同時還包括了3個16位的定時器計數器,能實現各種準確的定時計數功能;2個全雙工通信端口,能實現全雙工通信;以及包含了2個讀寫端口8。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發本錢。其引腳圖如圖3.1示。圖3.1 STC89C52引腳分布圖3.1.2 STC89C52最

20、小系統電路設計能讓單片機正常工作的最簡單單元硬件電路,即稱為單片機最小系統電路。一般來說,單片機最小系統包括晶振電路、電源電路、復位電路、程序下載電平轉換電路等根本電路。3.1.2.1 晶振電路單片機都是在系統時鐘脈沖的驅動下進展工作的,因此產生時鐘脈沖的晶振電路是單片機最小系統中不可或缺的局部。51系列的單片機內部都集成了一個振蕩電路,在搭建單片機晶振電路時,只需在單片機外部接入一個振蕩晶體作為系統振蕩源,此振蕩源就能和單片機內部的振蕩電路構成一個能夠產生時鐘脈沖信號的晶振電路,單片機的工作速率都是由晶振電路的頻率決定的。單片機晶振電路圖如圖3.2所示。圖3.2 晶振電路圖電路中的兩個跨接在

21、石英晶體兩端的兩個電容 C1,C2主要起到協助振蕩器起振和微調振蕩頻率的作用,其取值*圍一般為10-33pF,在本設計中電容C1、C2均取值33pF。本設計中的外部石英晶體選取頻率為12MHZ,故系統時候周期為1/12s。3.1.2.2 復位電路如圖3.1所示,51系列單片機的第9腳是單片機的復位端口,只要通過此復位端口向單片機內部連續輸入4個機器周期的復位信號就可實現單片機的復位,單片在成功接收到復位信號后,即控制單片機的各個端口狀態都回復到初始化狀態。單片機復位電路圖如圖3.3所示。圖3.3 復位電路圖電解電容C2、電阻R3構成復位電路。51系列單片機的復位電平均為高電平,因此只要在單片機

22、的復位引腳加上高電平,單片機即處于復位狀態。在系統上電后,電容C2開場其緩慢的充電過程,同時單片機的復位引腳的電平慢慢的由高電平向低電平轉換,電容C2完成充電過程后,單片機的復位引腳則處于穩定的低電平狀態,至此單片機的整個上電復位過程進展完畢,單片機上電復位的時間由電容容值與電阻阻值共同決定。3.2 顯示模塊電路設計液晶顯示模塊LCD1602已廣泛應用在各類電子產品中,在電子產品中使用LCD1602主要用于顯示特殊符號、各種類型的數字以及圖形。LCD1602液晶顯示模塊具有超低功耗、較小體積、可顯示各類不同的內容等優點。LCD1602液晶顯示模塊可以同時顯示2行字符,每行包括16個字符,單片機

23、可通過LCD1602的三個控制端口RS、R/W、EN實現對LCD1602的控制,LCD1602的工作電壓為5V,同時具有字符比照度調節和背光功能。LCD1602液晶顯示模塊已廣泛應用于測試儀表、計算器、家用電子產品中。LCD1602主要技術參數如下:顯示容量為16*2個字符;芯片工作電壓為1.4-5.5V;工作電流為2.0mA5.0V;模塊最正確工作電壓為5.0V;字符尺寸為36.5*81mm。其引腳功能說明如表3.1所示:表3.1 LCD1602引腳接口說明表引腳序號引腳符號引腳說明引腳序號引腳符號引腳說明1VSS電源地9D2數據2VDD電源正極10D3數據3VL偏壓11D4數據4RS數據/

24、命令選擇12D5數據5R/W讀/寫選擇13D6數據6E使能信號14D7數據7D0數據15BLA背光源正極8D1數據16BLK背光源負極LCD1602時序圖如圖3.4所示。圖3.4 LCD1602讀寫時序圖LCD1602液晶顯示模塊和單片機的連接電路圖如圖3.5所示。圖3.5 LCD1602液晶顯示模塊連接電路圖3.3 語音模塊電路設計本設計的語音模塊選用專用語音芯片ISD4004。ISD4004是美國ISD公司生產的采用直接模擬技術的語音芯片,該芯片采用EEPROM存儲方法將模擬語音數據直接寫入半導體存儲單元中,具有音質自然、可反復錄放、抗干擾、低功耗等許多優點。ISD4004語音芯片的根本技

25、術指標如下:工作電源:+5V;工作電流:15mA;待機電流:0.5uA;信噪比:S/N=43dB;錄音時間長度:20s;可分段數:160段;每段時間長度:20s/160段=0.125s/段;錄放次數:10萬次以上ISD4004引腳分布圖如圖3.6所示。圖3.6ISD4004引腳分布圖ISD4004引腳功能描述表如表3.2所示。表3.2ISD4004引腳功能描述圖引腳序號引腳名稱引腳功能說明1-6、9、10A0-A7芯片地址端引腳12、13GNDD、GNDA電源地信號14、15SP+、SP-喇叭輸出16、28VCCA、VCCD電源信號17MIC話筒輸入18MIC REF話筒參考19AGC自動增益

26、控制20ANAIN模擬輸入21ANAOUT模擬輸出23PLAYL電平觸發放音24PLAYE邊沿觸發放音25RECLED錄音指示26*CLK外部時鐘27REC錄音ISD4004與主控單片機STC89C52的連接電路圖如圖3.7所示。圖3.7 ISD4004與STC89C52連接電路圖如上圖所示,主控單片機通過REC錄音、PLAYL電平觸發錄音、PLAYE邊沿觸發錄音三根控制信號實現對ISD4004的控制,可選擇電平觸發錄音或者邊沿觸發錄音方式,通過向ISD4004的地址信號端口A0-A7輸入操作模式選擇信號,選擇ISD4004的操作模式,ISD4004則通過MIC話筒輸入和MIC REF話筒參考

27、實現話筒的輸入,通過SP+和SP-實現喇叭輸出,從而實現系統語音報時的功能9。ISD4004內置了很多操作模式,如表3.3所示,這樣使得用最少的外圍器件可實現最多的功能。表3.3ISD4004的操作模式表A7A6A5A4A3A2A1A0模式功能可組合使用的模式11*00*01A0信息檢索A411*00*10A1刪除EOMA3、A411*01*00A3循環A111*10*00A4連續尋址A0、A1ISD4004的操作模式介紹如下:A0信息檢索:快速跳過信息而不必知道其確切的地址。當控制器輸入一個低脈沖,內部地址計數器就跳到下一條信息。此模式僅用于放音,通常與A4同時使用。A1EOM刪除:是分段信

28、息變成一條信息,僅在信息最后留一個EOM標志。這個模式完成后,錄入的所有信息就作為一條連續的信息。A3信息循環:循環重放位于存儲空間起始處的那條信息。如果一條信息完全占滿存儲空間,則循環就從頭至尾進展。A4連續尋址:正常操作中,重放遇到EOM標志時,地址計數器會復位。A4模式制止地址計數器復位,使得信息可連續錄入或重放。當芯片既不是錄音也不是放音時,將A4短暫拉低可使地址計數器復位為0。A2、A5兩種模式暫時未使用。3.4 系統參數設置電路設計本設計實現的語音存儲和播放系統可以實現對存儲和播放內容進展調整,以及對播放時間和速度等進展調整,在本次設計中,采用了11個按鍵來完成這些功能。其電路圖如

29、圖3.8所示。圖3.8系統參數設置電路圖3.5 系統電源電路設計本系統中的各個功能模塊的供電電源都是+5v,即系統的電源可直接由上位機的USB端口提供,并通過濾波電路,同時設置了系統的上電指示燈,系統電源電路圖如圖3.9所示。圖3.9系統電源電路圖第4章 系統軟件設計4.1 主程序流程圖設計本設計是基于單片機的語音存儲和播放系統,其主要功能是通過單片機對語音芯片ISD4004的控制字的寫入實現。本系統的主程序流程圖如圖4.1所示。圖4.1系統主程序流程圖系統首先進展初始化,然后通過按鍵將系統狀態設置為錄音狀態,接著掃描按鍵判斷是否有錄音鍵按下,假設有錄音鍵按下,則控制LCD1602顯示系統狀態

30、,并延時去抖動,接著開場錄用;假設沒有錄音鍵按下,則接著判斷是否有播放鍵按下,假設有播放鍵按下,則控制LCD1602顯示系統狀態,并開場播放。4.2 子程序流程圖設計4.2.1 錄音子程序錄音子程序流程圖如圖4.2所示。圖4.2錄音子程序流程圖系統首先將ISD4004的CE端至零,則進入錄音狀態,然后掃描錄音按鍵是否松開,假設錄音鍵松開,則表示錄音完畢,保存錄音;假設錄音鍵沒有松開,則表示錄音沒有完畢,繼續錄音,繼續錄音按鍵是否松開。4.2.2 播放子程序播放子程序流程圖如圖4.3所示。圖4.3播放子程序流程圖系統首先將ISD4004的CE端至零,則進入播放狀態,然后判斷播放完畢信號EOM是否

31、為零,假設EOM為零,則表示播放完畢,假設EOM不為零,則表示播放未完畢,繼續判斷EOM是否為零。致謝時光荏苒,仿佛為期四年的大學生涯在轉眼間就消失了,剛剛進入大學校園報道的場景都還歷歷在目,大學四年的時間就在這樣的不經意中溜走。回憶大學四年的學習生涯有太多的人和事值得回憶與感謝。四年前懵懵懂懂的我義無返顧的選擇的電子相關的專業。在大學四年的學習期間在任課教師的悉心教誨下學到了不少電子專業的根底知識,在增長了自身見識的同時也豐富了自己的視野。但是紙上得來終覺淺,由于平時一心關注書本上的知識,不太注重平時實踐動手能力的鍛煉,使得在此次畢業設計中遇到了不少的麻煩,但都在指導教師的精心指導下以及同學

32、們的幫助下成功的解決了所遇到的困難,并從中學到了不少專業知識。在此我要向我的畢業設計指導教師致以最誠摯的感謝,我的畢業設計都是在指導教師的精心指導和悉心關心下完成的,從課題的選擇到最后論文的截稿,每一個過程都飽含了指導教師的辛勤汗水,指導教師不但教會了我一些我以前不曾掌握的專業知識,同時指導教師的嚴謹的治學態度,實事求是的處事態度,精益求精的科研精神都深深的感染了我,在完成畢業設計的同時,讓我學會了很多做人做事的方式方法。衷心的感謝我的畢業設計指導教師!其次在此我要感謝在大學四年默默幫過過我的同學、朋友和教師,在你們的幫助下,我才能順順利利的完成我的大學階段的學習。最后,我要感謝一直培養我成人

33、的父母,是你們無私的愛與包容才使我快樂的長大成人,感謝你們對我無私的愛與奉獻!參考文獻1*建光,金碧波,章皓.基于8051單片機語音控制系統的實現J.自動化與儀器儀表,2006(2):39-41、58.2王洪生.基于單片機的語音播放遙控嵌入式系統的實現J. 科技信息,2010(4):197.3李景,李慧.基于單片機的語音報價系統設計J.儀表技術,2010(10):37-39.4史先桂.單片機在公交車智能報站系統中的應用J.電腦知識與技術,2011,11(7):8297-8300.5陳青.大容量可擴展語音播放系統設計J.電子世界,2013(2):136-138.6曾鵬,林躦,朱曉燕.16位單片機

34、的語音信號處理技術的研究J.*工學院學報,2003,4(2):16-18.7章立文,王琦.基于SPCE061A 單片機的音樂播放系統J.產業與科技論壇,2011(10):98-99.8屠澄軼.基于凌陽單片機的通用型語音控制系統J.現代電子技術,2010(22):68-70.9陸煒,朱紅.一種單片機語音錄入和播放系統設計J.實驗科學與技術,2008,4(4):154-156.附錄1.系統原理圖2C語言源程序/*= 1602液晶顯示驅動程序 = 參數定義例如: #define LCD_Data P1 sbit LCD_RW=P20; sbit LCD_RS=P21; sbit LCD_E=P22;

35、 程序調用說明: 1) 使用前需先調用 LCD_Init() 對LCD進展初始化 2) 輸出字符使用 LCD_PutStr(字符串,輸出位置) 輸出數字使用 LCD_PutNum(數字,輸出位置) 注: 1) 輸出位置為031間的整數,為-1時表示先清屏 2) 函數返回值為一整形數,表示當前光標所在位置 3) 此兩個函數支持以下轉義字符: n 換行 b 退格 輸出 輸出 輸出 調用例如: =*/ #include #include LCD1602.H#include ISD4004.H#define uchar unsigned char#define uint unsigned intsbi

36、t KEY_REC=P24;sbit KEY_PLAY=P23;sbit KEY_STOP=P22;sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4=P13;sbit KEY5=P14;sbit KEY6=P15;sbit KEY7=P16;sbit KEY8=P17;unsigned char i=0,sec_count=0,play_count=0;unsigned char num=0;unsigned int sec_addr=0,play_addr=0;uchar datasoute=0,m=0,n=0,sec=0,dis_num

37、ber=0;uchar key_num=0*ff;uchar record_flag=0;uchar play_flag=0;uint code address=0,300,600,900,1200,1500,1800,2100;void record(unsigned int address)play4004(2398);/while(_int=1); /等待一段放音完畢的 EOM 中斷信號/delayms(1000); /放音到末尾不能馬上再次操作語音芯片,否則芯片會掉電,這里延時等一下。/*/record4004(address); sec = 0;while(_int=1)&(KEY_

38、STOP=1) /存儲地址換行標志if(_rac = 0) /4004總共2400行,每行175Ms的高電平,25Ms的低電平delayms(30); datasoute+; if(datasoute = 5) /200ms一次,5次表示錄音1Sdatasoute = 0;sec+;m = sec /10;n = sec %10;stopmode(); /停頓powerdown(); /掉電 /記錄本次錄音所占的行數也就是本次錄音有多大 void play(unsigned int address)play4004(address);delayms(1000); uchar Key_Scan(

39、void)uchar key_num=0*ff;if(KEY_REC=0) /KEY_REC鍵按下delayms(10);/按鍵防抖動if(KEY_REC=0) while(KEY_REC = 0);record_flag=1;play_flag=0; if(KEY_PLAY=0) /KEY_REC鍵按下delayms(10);/按鍵防抖動if(KEY_PLAY=0) while(KEY_PLAY = 0);record_flag=0;play_flag=1; if(KEY_STOP=0) /STOP是停頓復位功能delayms(10);if(KEY_STOP=0)while(KEY_STOP

40、 = 0); stopmode(); /停頓powerdown(); /掉電m=0;n=0;if(KEY1=0) /STOP是停頓復位功能delayms(10);if(KEY1=0)while(KEY1 = 0); key_num=1;if(KEY2=0) /STOP是停頓復位功能delayms(10);if(KEY2=0)while(KEY2 = 0); key_num=2;if(KEY3=0) /STOP是停頓復位功能delayms(10);if(KEY3=0)while(KEY3 = 0); key_num=3;if(KEY4=0) /STOP是停頓復位功能delayms(10);if(

41、KEY4=0)while(KEY4= 0); key_num=4;if(KEY5=0) /STOP是停頓復位功能delayms(10);if(KEY5=0)while(KEY5 = 0); key_num=5;if(KEY6=0) /STOP是停頓復位功能delayms(10);if(KEY6=0)while(KEY6= 0); key_num=6;if(KEY7=0) /STOP是停頓復位功能delayms(10);if(KEY7=0)while(KEY7= 0); key_num=7;if(KEY8=0) /STOP是停頓復位功能delayms(10);if(KEY8=0)while(KE

42、Y8= 0); key_num=8;return key_num;void main(void) int p; delay_lcd(400); LCD_Init(); p=LCD_PutStr(Wele use this,-1); stopmode(); /停頓powerdown(); /掉電while(1)key_num=Key_Scan();if(play_flag=1)LCD_PutStr( play ,18);switch(key_num)case 1:LCD_PutNum(1,26);play(address0);break;case 2:LCD_PutNum(2,26);play(

43、address1);break;case 3:LCD_PutNum(3,26);play(address2);break;case 4:LCD_PutNum(4,26);play(address3);break;case 5:LCD_PutNum(5,26);play(address4);break;case 6:LCD_PutNum(6,26);play(address5);break;case 7:LCD_PutNum(7,26);play(address6);break;case 8:LCD_PutNum(8,26);play(address7);break;default:break;

44、if(record_flag=1)LCD_PutStr(record ,18);switch(key_num)case 1:LCD_PutNum(1,26);record(address0);break;case 2:LCD_PutNum(2,26);record(address1);break;case 3:LCD_PutNum(3,26);record(address2);break;case 4:LCD_PutNum(4,26);record(address3);break;case 5:LCD_PutNum(5,26);record(address4);break;case 6:LCD

45、_PutNum(6,26);record(address5);break;case 7:LCD_PutNum(7,26);record(address6);break;case 8:LCD_PutNum(8,26);record(address7);break;default:break; /ISD4004語音芯片C51驅動程序源代碼#include reg51.h#include intrins.h#include ISD4004.H#define uchar unsigned char#define uint unsigned int/*ISD4004驅動程序*void delay(uns

46、igned int i) /延時程序while(i-);*/void delayms(unsigned int time) /延遲n毫秒 unsigned int i,j;for(i=time;i0;i-)for(j=125;j0;j-);void stopmode() /停頓unsigned char m,i,j;_cs=1;_sclk=0;_cs=0;m=0*30;for(i=0;i8;i+)m=_cror_(m,1);j=m1;_mosi=CY;_sclk=0;_sclk=1;_cs=1;void powerdown() /下電unsigned char m,i,j;_cs=1;_scl

47、k=0;_cs=0;m=0*10;for(i=0;i8;i+)m=_cror_(m,1);j=m1;_mosi=CY;_sclk=0;_sclk=1;_cs=1;void powerup() unsigned char m,i,j;_cs=1;_sclk=0;_cs=0;m=0*20;for(i=0;i8;i+)m=_cror_(m,1);j=m1;_mosi=CY;_sclk=0;_sclk=1;_cs=1;void record4004(unsigned int address) unsigned char i,m,j;unsigned int datasoute=0;powerup();

48、delayms(50);powerup();delayms(50);delayms(50);_cs=1;_sclk=0;m=0*a0;_cs=0;for(i=0;i16;i+)address=_iror_(address,1);datasoute=address1;_mosi=CY;_sclk=0;_sclk=1;for(i=0;i8;i+)m=_cror_(m,1);j=m1;_mosi=CY;_sclk=0;_sclk=1;_cs=1;/*從此地址+1繼續錄音,能充分利用儲存空間/缺點是不按你地址來錄了,所以此時我把它屏蔽_sclk=0;m=0*b0;_cs=0;for(i=0;i8;i+

49、)m=_cror_(m,1);j=m1;_mosi=CY;_sclk=0;_sclk=1;_cs=1;datasoute=0; */*while(_int=1) /存儲地址換行標志if(_rac) delay(20000); datasoute+; /記錄本次錄音所占的行數也就是本次錄音有多大/ 在這里應該加上自己的程序,就是錄音退出程序*/while end;void play4004(unsigned int address) /放音程序unsigned char i,m,j;unsigned int datasoute;uchar play_count=0;uchar sec_count

50、=0;powerup();_cs=1;_sclk=0;_cs=0;m=0*e0;for(i=0;i16;i+)address=_iror_(address,1);datasoute=address1;_sclk=0;_mosi=CY;_sclk=1;for(i=0;i8;i+)m=_cror_(m,1);j=m1;_sclk=0;_mosi=CY;_sclk=1;_cs=1;/*從下個地址繼續放音/加此就不能從指定地址放音了,所以此次我把它屏蔽_sclk=0;m=0*f0;_cs=0;for(i=0;i8;i+)m=_cror_(m,1);j=m1; _sclk=0; _mosi=CY; _s

51、clk=1;_cs=1;*/#include #include LCD1602.H#include /delay_lcd(延遲毫秒數) void delay_lcd(unsigned int ms) unsigned int Temp; while(ms-)Temp=82;while(Temp-); /寫數據 void WriteDataLCD(unsigned char WDLCD) ReadStatusLCD(); /檢測忙 LCD_Data = WDLCD; LCD_RS = 1; LCD_RW = 0; LCD_E = 0; /假設晶振速度太高可以在這后加小的延時 LCD_E = 0; /延時 LCD_E = 1; /寫指令 void WritemandLCD(unsigned char WCLCD,BuysC) /BuysC為0時忽略忙檢測 if (BuysC) ReadSt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論