目 錄
[摘要]
Abstract…………………………………………………………………………(2)
引言………………………………………………………………………………(2)
一.AT89C2051概述………………………………………………………………(2)
(-).單片機概述…………………………………………………………………(2)
(二)AT89C51單片機………………………………………………………………(3)
1、主要性能………………………………………………………………………(3)
2、引腳功能說明…………………………………………………………………(4)
二.語音芯片………………………………………………………………………(12)
1、語音芯片的概述………………………………………………………………(12)
2、ISD2560簡介…………………………………………………………………(13)
三.語音芯片在單片機中系統的使用……………………………………………(17)
四.總體電路設計…………………………………………………………………(17)
致謝詞………………………………………………………………………………(22)
參考文獻……………………………………………………………………………(23)
單片機控制語音芯片的錄放音系統的設計
[摘 要]:介紹了由Flash單片機AT89C2051及數碼語音芯片ISD2560組成的電腦語音系統設計出了系統的硬件電路,給出了錄、放音實用的源程序。目前基于單片微機的語音系統的應用越來越廣泛,如電腦語音鐘、語音型數字萬用表、手機話費查詢系統、排隊機、監控系統語音報警以及公共汽車報站器等等。本文作者用Flash單片機AT89C2051和錄放時間達60s的數碼語音芯片ISD2560設計了一套智能語音錄放系統,實現了語音的分段錄取、組合回放,通過軟件的修改還可以實現整段錄取,循環播放,而且不必使用專門的ISD語音開發設備。
[關鍵詞]:AT89C2051單片機 ISD2560語音芯片 分段錄音 組合回放
[Abstract] In the paper, amicrocomputer sound system based on AT89C2051 and ISD2560 is introduced.Hardware circuit of system is designed, and practical programmers are given.
Key words: AT89C2051 ISD2560 subsection record combinationreturn play
一.AT89C2051概述
(一).單片機概述
l 單片機的概念
電子計算機的發展經理了從電子管、晶體管、集成電路到大規模集成電路共四個階段,即通常所是說的第一代、第二代、第三代和第四代計算機。現在廣泛使用的微型計算機是大規模集成電路技術的產物,因此它屬于第四代計算機,而單片機則是衛星計算機的一個分支。從1971年微型計算機問世以來,由于實際應用的需要,微型計算機向著兩個不同的方向發展:一個是向高速度、大容量、高性能的高檔微機方向發展;而另一個則是想穩定可靠、體積小和價格廉的單片機方向發展。但兩者在原理和技術上是緊密聯系的。
l 通用單片機和專用單片機
根據控制應用的需要,可以將單片機分為通用型和專用行。
通用型單片機是一種基本芯片,它的內部資源比較豐富,性能全面且適用性強,能覆蓋多種應用需求。用戶可以根據需要設計成各種不同應用的控制系統,即通用單片機有一個再設計過程,通過用戶的進一步設計,才能組建成一個以單片機為核心再配以其他外圍電路的應用控制系統。
專用型的單片機主要是應用在專門針對某個特定產品的,例如電鍍表和IC卡讀寫器上的單片機等。這種應用的最大特點是針對性強而且數量巨大。
本電路所使用的是通用型的單片機AT89C2051
89系列單片機有AT89C系列的標準型及抵擋型,還有AT89S系列的高檔型。
AT89C單片機的結構圖如下。它主要由下面幾部分組成:1個8位中央處理器、片內RAM、4個8位的雙向可尋址I/O口、1個全雙工UART(通用異步接收發送器)的串行接口、2個16位的定時器/計數器、多個優先級的嵌套中斷結構,以及一個片內振蕩器和時鐘電路。
在AT89C單片機結構中,最顯著的特點是內部含有FLASH存儲器,而在其他方面的結構,則和INTEL公司的8051的結構沒有太大的區別。
(二).AT89C2051單片機
AT89C2051是一帶有2KBFLASH可編程、可檫除只讀存儲器的低壓、高性能8位CMOS微型計算機,它采用ATMEL的高密非易失存儲器技術制造,不并和工業標準MCS-51指令集和引腳結構兼容。通過在單塊芯片上組合通用的CPL1和FLASH存儲器,使AT89C2051
成為一強勁的微型計算機。
AT89C2051提供以下標準功能:2KBFLASH存儲器;128字節RAM;15條I/O口引線;2個16位定時器/計數器;1個5向量2級中斷結構;1個全雙工串行口;1個精密模擬比較器以及片內振蕩器和時鐘電路。此外,AT89C2051是用可降到0頻率的靜態邏輯操作設計的,并自持兩種可選的軟件節電工作方式。掉電方式保存RAM內容,但振蕩器停止工作,并禁止所有其他部件的工作直到下一個硬件復位。
1. 主要性能
l 和MCS-51產品兼容
l 2KB可重編程FLASH存儲器
l 耐久性:1000次寫/檫除。
l 2.7-6.0v的操作范圍
l 全靜態操作:0HZ-24MHZ
l 2級加密程序存儲器
l 128*8位內部RAM
l 15條可編程I/O引線
l 2個16位定時器/計數器
l 6個中斷源
l 可編程串行UART通道
l 直接LED驅動輸出
l 片內模擬比較
l 低功耗空載和掉電方式。
圖1—1
2.引腳功能說明
l Vcc: 電源電壓
l GND:地
l P1口:P1口是一組8位雙向I/O口,P1.2-P1.7提供內部上拉電阻,P1.0和p1.1內部無上拉電阻,主要是考慮它們分別是內部精密比較器的同相輸入端(AIN0)和反相輸入端(AIN1),如果需要應在外部接上拉電阻。P1口輸出緩沖器可吸入20mA電流可直接驅動LED。當p1口引腳寫入“1”時可作輸入端,當引腳p1.2-p1.7用作輸入并被外部拉低時,它們將因內部的上拉電阻而輸出電流。
P1口還在Flash閃速變成及程序校驗時接收代碼數據。
l P3口:p3口的p3.0-p3.5、p3.7是帶有內部上拉電阻的7個雙向I/O口。P3.6沒有引出,他作為一個通用I/O口但不可訪問,但可作為固定輸入片內比較器的輸出信號,P3口緩沖器可吸入20mA電流。當P3口寫入“1”時,它們被內部上拉電阻拉高并可作為輸入端口。做輸入時,被外部拉低的P3口將用上拉電阻輸出電流。
P3口還用于實現AT89C2051特殊功能,如下表所示:
P3口還接收一些用于Flash閃速存儲器編程和程序校驗的控制信號。
l RST:復位輸入。RST引腳一旦變成兩個機器周期以上高電平,所有的I/O口都將復位到“1”狀態,當振蕩器工作時,持續兩個機器周期以上的高電平便可完成復位,每個機器周期為12個振蕩時鐘周期。
l XTAL1:振蕩器反相放大器的及內部時鐘發生器的輸入端。
l XTAL2:振蕩器反相發黨旗的輸出端。
表1—1
l 振蕩器特征:
XTAL1、XTAL2為片內振蕩器的反相放大器的輸入和輸出端,如下圖所示。可采用石英警惕或陶瓷振蕩器組成時鐘振蕩器,如需從外部輸入時鐘驅動AT89C2051,時鐘信號從XTAL1輸入,XTAL2應懸空。由于輸入靠內部電路是經過一個2分頻觸發器,所以輸入的外部時鐘信號無需特殊要求,但它必須符合電平的最大和最小值及時序規范。
圖1—2
l 特殊功能寄存器:
片內特殊功能寄存器(SFR)空間存儲區的影象圖如下表所示。
并非存儲區中所有的地址單元都被占用,未占用的地址單元亦不能使用,如果對其進行讀訪問一般返回為隨機數,寫訪問也不確定。
這些單元是為了以后利用這些未使用的地址單元擴展新功能而設置。所以用戶軟件不要對它們寫“1”,在這種情況下,新位的復位或不激活值總為“0”。
l 某些指令的約束條件:
AT89C2051是經濟型低價位的微控制器,它含有2K字節的Flash閃速程序存儲器,指令系統與MCS-51完全兼容,可使用MCS-51指令系統對其進行編程。但是在使用某些有關指令進行編程時,需要注意一些事項。
和跳轉或分支有關的指令有一定的空間約束,使目的地址能安全在AT89C2051的2K字節的物理程序存儲器空間內,必須注意這一點。對于2K字節存儲器的AT89C2051來說,LJMP 7E0H是一條有效指令,而LJMP 900H則為無效指令。
1. 分支指令
對于LCALL、LJMP、ACALL、AJMP、SJMP、JMP@A+DPTR等指令,只要記住這些分支指令的目的地址在程序存儲器大小的物理范圍內(AT89C2051程序空間為:000H-7FFH單元),這些無條件分支指令就會正確執行,超出物理空間的限制會出現不可預知的程序錯誤。CJNE[….]、DJNZ[….]、JB、JNB、JC、JNC、JBC、JZ、JNZ等這些條件轉移指令的使用與上述原則一樣,同樣,超出物理空間的限制引起不可預知的程序錯誤。至于中斷的使用,80C51系列硬件結構中已保留標準中斷服務子程序的地址。
2. 與MOVX相關的指令,數據存儲器
AT89C2051包含128字節內部數據存儲器,這樣,AT89C2051的堆棧深度局限與內部RAM128字節范圍內,它既不支持外部數據存儲器的訪問,也不支持外部程序存儲器的執行,因此程序中不應有MOVX[….]指令。
l 程序存儲器的加密:
AT89C2051使用對芯片上的兩個加密進行編程或不編程來得到如下表所示的功能:
表1—2
l 空閑模式:
在空閑模式下,CPU保持睡眠狀態而所有片內的外設仍保持激活狀態,這種方式由軟件產生。此時,片內RAM和所有特殊功能寄存器的內容保持不變。空閑模式可由任何允許的中斷請求或硬件復位終止。
P1.0和P1.1在不使用外部上拉電阻的情況下應設置為“0”,或者在使用上拉電阻的情況下設置為“1”。
應注意的是:在 用硬件復位終止空閑模式時,AT89C2051通常從程序停止一直到內部復位獲得控制之前的兩個機器周期處恢復程序執行。在這種情況下片內硬件禁止對內部RAM的讀寫,但允許對端口的訪問,要消除硬件復位終止空閑模式對端口意外寫入的可能,原則上進入空閑模式指令的下一條指令不 應對端口引腳或外部存儲器進行訪問。
l 掉電模式
在掉電模式下,振蕩器停止工作,進入掉電模式的指令是最后一條被執行的指令,片內RAM和特殊功能寄存器的內容在終止掉電模式前被凍結。退出掉電模式的唯一方法是硬件復位,復位后將重新定義全部特殊功能寄存器但不改變RAM中的內容,在VCC恢復到正常的工作電平前,復位應無效,且必須保持一定時間以使振蕩器重啟并穩定工作。
P1.0和P1.1在不使用外部上拉電阻的情況下應設置為“0”,或者在使用外部上拉電阻時應設為“1”。
表1—3
l Flash閃速存儲器的編程:
AT89C2051是在擦除狀態下(也即所有單元內容均為FFH時)用2K字節內PEROM代碼存儲陣列進行封裝微控制器,其程序存儲器是可反復編程的。代碼存儲陣列依次編程一個字節,一旦陣列被編程,如需要新變成一非空(空為:FFH)字節,必須對整個存儲器陣列進行點擦除。
AT89C2051內FLASH閃存儲器的編程和校驗如圖。
l 內部地址計數器:AT89C2051內部包含一個PEROM編程地址計數器,它總在RST上升沿來時復位到00H,并在XTAL1引腳上出現正跳變脈沖時進行加1計數。
l 編程方法:要對AT89C2051進行編程,使用以下方法。
1. 上電次序:
在VCC和GND引腳之間加上電源。
設置RST和XTAL1為GND電平。
其它引腳置空,等待至少10Ms以上。
2. 置RST引腳為高電平,置P3.2引腳為高電平。
3. 對引腳P3.3 、P3.4、P3.5、P3.7按下表正確組合上邏輯高“H” 或低“L”電平可對PEROM進行編程操作。
表1—4
編程和校驗方法如下:
4.在000H地址單元對P1.0-P1.7輸入數據代碼字節。
5.置RST端為+12V,激活編程。
6.使P3.2跳變依次來編程PEROM陣列中的一字節或者加密位,寫字節周期是自身定時的,一般需時1.2ms。
7.當校驗已編程的數據,使RST從+12V降到邏輯電平“H”,置P3.3-P3.7引腳到正確的電平即可從P1口讀取數據。
8.對下一地址單元編程字節,使XTAL1引腳正脈沖跳變依次使地址計數器加1,在P1口輸入新的書字節。
9.重復5至8,可對整個2K字節陣列全部編程,直到目標文件結束。
10.下電次序:
置XTAL1為低“L”電平
置RST為“L”電平
置空所有其它I/O引腳
關閉VCC電源
l 數據查詢:AT89C2051具有寫周期結束的數據查詢功能,在寫周期期間,對最后寫入的字節嘗試讀降令P1.7上寫入數據的操作結束。當寫周期完成,全部輸出端的真實數據有效,同時下一個周期開始,數據查詢可在寫周期被初始化的任一時刻開始。
l Ready/busy:字節編程的進度通過“RDY/BSY輸出信號監測,編程期間,P3.1引腳在P3.2變高“H”后被拉低來指“BSY”,P3.1在編程結束后被再次拉高“H”來指示“RDY”。
l 程序校驗:如果加密位LB1、LB2沒有進行編程,則代碼數據可通過校驗數據線讀取:
1. 使RST從“L”變為“H”,復位內部的地址計數器為000H。
2. 對代碼數據加上正確的控制信號即可在P1口引腳上讀取數據。
3. XTAL1引腳跳變一次使內部地址計數器加1。
4. 從P1口讀取下一個代碼字節。
5. 重復3到4步驟,即可將全部單元的數據讀取。
加密位不可直接校驗,加密位的校驗可通過對存儲器的校驗和寫入狀態來驗證。
l 芯片擦除:利用控制信號的正確組合并保持P3.2引腳10ms的低電平即可將PEROM陣列(2K字節)和兩個加密位整片擦除,代碼陣列在片擦除操作中將任何非空單元寫入“1”可被再次編程之前進行。
l 讀片內簽名字節:除P3.5、P3.7必須被拉成邏輯低電平外,讀簽名字節的過程和單元000H、001H及002H的正常校驗相同,返回值意義如下:
(000H)=1EH聲明產品有ATMEL公司制造。
(001H)=21H聲明為89C2051單片機。
l 編程接口:
Flash閃速陣列中的每一代碼字節進行寫入且整個存儲器可在控制信號的正確組合下進行擦除,寫操作周期是自身定時的,初始化后它將自動定時到操作完成。
表1—5
AT89C2051的極限參數:
圖1—3
外部時鐘驅動波形:
圖1—4
注:AC輸入測試期間是當電平VCC-0.5(邏輯1)
和0.45V(邏輯0),實時測量VIH的最小值VH
的最大值
三.語音芯片在單片機中系統的使用
1、所謂語音芯片就是在人工或者是控制器的控制下可以錄音和放音的芯片,在單片機中使用語音芯片時,需要考慮三個方面的內容,一個方面是如何使用isd系列的語音芯片,二是如何根據選擇的isd芯片設計外圍和單片機的接口電路,三是如何編寫定時控制語音芯的單片機程序。
功能模塊分為三個方面:
1. 單片機系統:輸出控制信號,控制語音芯片定時播放特定的語音。
2. 外圍電路:實現外圍電路的isd系列語音芯片,本電路所使用的是isd2560的芯片和單片機之間的接口電路。
3. C51程序:編寫定時一秒的程序,并在定時中斷來時間來時播放語音芯片中的內容。
器件和原理
(1).什么是語音芯片?
語言芯片就是人工或者是控制器的控制下可以錄音和放音的芯片。比較典型的有美國的isd公司生產的isd系列語音芯片。
Isd系列語音芯片采用模擬數據在半導體存儲器直接存儲的技術,即將模擬語音數據直接寫入單個存儲單元,不需要經過A/D或D/A轉換,因此能夠較好地真實再現語音的自然效果,避免了一般固體語音電路因為量化和壓縮所造成的量化噪音和失真現象。另外芯片功能強大:既錄即放,語音可掉電保護,10萬次的檫寫壽命,手動操作和cpu控制兼容,可多片級聯,無須開發系統等,確實給欲實現語音功能的單片機應用設計人員提供了單片的解決方案。
(2).如何選擇合適的語音芯片?
下面介紹比較流行的語音芯片,以及選擇語音芯片的標準。目前,市場上的語音芯片和語音板很多,從價格性能比上看,美國isd公司的ISD系列錄放芯片是比較好的,有以下特點:
a. 使用直接電平存儲技術,省去了A/D和D/A轉換。
b. 內部集成了大容量的EEPRPOM,不再需要擴展存儲器。
c. 控制簡單,控制管腳與TTL電平兼容。
d. 具有集成度高,音質好,使用方便等優點。
(3).ISD2560的基本功能是什么?
本電路將選擇美國ISD公司的2560語音芯片。該芯片的引腳圖如圖所示,其基本特點和引腳的功能說明如下。
(a).ISD2560系列具有抗斷電,音質好,使用方便,無需專用的語音開發系統的特點。
(b).片內EERPOM容量480KB,所以錄放時間長,錄放時間為90秒。
(c).有10個地址輸入端,尋址能力可達1024位。
(d).語音最多能分600段,設有OVF溢出端,便于多個器件級聯。
l 地址線:A0—A9。共有1024種組合狀態。 最前面的600個狀態作內部存儲器的尋址用,最后256個狀態作為操模式。
l 電源:VCCA、VCCD。芯片內部的模擬和數字電路使用不同的電源總線。模擬和數字電源端最好分別走線。
l 地線:VSSD、VSSA。芯片內部的模擬和數字也可使用不同的地線。
l 節能控制:PD。本端拉高是芯片停止工作,進入不耗電的節能狀態,芯片發生溢出,即OVF端輸出低電平后,要將本端短暫變為高復位芯片,才能使之再次工作。、
l 片選:CE。本端變低后,而且PD為低,允許進行錄放操作。芯片在本端的下降沿鎖存地址線和P/-R端的狀態。
l 錄放模式:P/-R。本端狀態在/CE的下降沿鎖存。高電平選擇放音,低電平選擇錄音。
l 信息結尾標志:EOM。EOM標志在錄音時由芯片自動插入到該信息的結尾。放音遇到EOM時,本端輸出低電平脈沖。芯片內部會檢查電源電壓以維護信息的完整性,當電壓低于3.5V時,本端變低,芯片只能放音。
l 溢出標志:OVF。芯片處于存儲空間末尾時本端輸出低電平脈沖表示溢出,之后本端狀態跟隨CE端的狀態,知道PD端變高。
l 麥克輸入:MIC。本端連至片內前置放大器的反向輸入。片內自動增益控制(AGC)將置增益控制在-15DB至24DB。、
l 自動增益控制:AGC。AGC動態調整前置增益以補償話筒輸入電平的寬度變化,使得錄制變化很大的音量(從耳語到喧囂聲)時失真都能保持很小。
l 模擬輸出:ANA OUT。前置放大器的輸出,前置電壓增益取決于AGC端電平。
l 模擬輸入:ANA IN。本端為芯片錄音信號的輸出。對話筒輸入來說ANA OUT端應通過外接電容連至本端。
l 喇叭輸出:SP+、SP-。過對輸出端級驅動16歐以上的喇叭。單端使用時必須在輸出端和喇叭間接耦合電容,而雙端輸出既不用電容又不能將功率提高至4倍。錄音和節電模式下,它們保持為低電平。
l 輔助輸入:AUX IN。當/CE和P/-R為高,放音不進行,或處于放音溢出狀態時,本端的輸入信號過內部功放驅動喇叭輸出端。當多個2560級聯時,后級的喇叭輸出通過本端連接到本級的輸出放大器。
l 外部時鐘:XCLK。本端捏部有下拉元件,不用時應接地。芯片內部的采樣始終在出廠前已調節器校,誤差為+1%內。
l 地址/模式輸入:AX/MX。地址端有個作用,取決于最高兩位(MSB,即2532/2548的A7和A8,或2560/2590/25120的A8和A9)的狀態。當最高兩位中有個為零時,所有輸入均解釋為地址位,做為當前錄入操作的起始地址。地址端只做輸入,不輸出操作過程中的內部地址信息。
ISD2560封裝引腳圖如下:
ISD2560是ISD系列單片語音錄放集成電路的一種,是一種永久記憶型錄放語音電路,錄音時間為60秒,能重復錄放達10萬次。它采用直接電平存儲技術,省去了A/D、D/A轉換器。ISD2560集成度高,內部包括前置放大器、內部時鐘、定時器、采樣時鐘、濾波器、自動增益控制、邏輯控制、模擬收發器、解碼器、和480KB 的EERPOM等。內部EERPOM存儲單元,均勻分為600行,具有600個地址單元,每個地址單元指向其中一行,每一個地址單元的地址分辨率為100MS。ISD2560控制電平與TTL電平兼容,接口簡單,使用方便。
ISD2560內置了若干操作模式,可用最少的外圍器件實現最多的功能。操作模式也有地址端控制;當最高位都為1時,其他地址端最高就選擇某個模式。因此操作模式和直接尋址相互排斥。操作模式可由微控制器也可有硬件實現。基本電路原理圖如下:
錄音按下錄音鍵接地,是PD端、P/R端為低電平,此時啟動錄音;結束時松開按鍵,單片機有讓P/R端回到高電平,既完成一段語音的錄制。同樣的方法可錄取第二段、第三段等。值得注意的是,錄音時間不能超過預先設定的每段語音的時間。放音的操作更為簡單,按下錄音鍵接高電平,使P/D端P/R端為低電平啟動方音功能;結束時,松開按鍵,即完成一段語音的播放。
在控制上,除去手動外,ISD器件也可以通過地址來精確定位,但它的地址不是字節地址單元,而是信息段的基本組成單位。以ISD2560為例,他內部的480KB的EERPOM均勻地規劃為600行,每個地址單元指向其中一行,有600個地址單元.
模式控制
功能
典型應用
A0/M0
信息檢索
快速檢索信息
A1/M1
刪除EOM標志
在全部語音錄放結束時,給出EOM標志
A2/M2
未用
當工作模式 操作時,此端應接低電平
A3/M3
循環放音
從0地址開始連續重復放音
A4/M4
連續尋址
可錄放連續的多段信息
A5/M5
CE電平觸發
允許信號中止
A6/M6
按鈕控制
簡化器件接口
十進制
二進制
信息時間(秒)
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
2560
2575
2590
0
0
0
0
0
0
0
0
0
0
0
0
0
0
50
0
0
0
0
1
1
0
0
1
0
5.0
6.25
7.50
100
0
0
0
1
1
0
0
1
0
0
10.0
12.50
15.00
250
0
0
1
1
1
1
1
0
1
0
25.0
31.25
37.50
300
0
1
0
0
1
0
1
1
0
0
30.0
37.50
45.00
400
0
1
1
0
0
1
0
0
0
0
40.0
50.00
60.00
500
0
1
1
1
1
1
0
1
0
0
50.0
62.50
75.00
599
1
0
0
1
0
1
0
1
1
1
59.9
74.87
89.85
ISD2560/90/120P地址功能表
地址狀態
功能狀態
DIP開關
1
2
3
4
5
6
7
8
9
10
11
12
(ON=0,OFF=1)
地址位
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
P/R
CE
(1為高電平,0為低電平,*為高或低電平)
0
0
0
0
0
0
0
0
0
0
一段式最長60秒錄放音,從首地址開始。
1
0
0
0
0
0
0
0
0
0
以十位二進制表示地址,每個地址代表100毫秒。
地址模式
0
0
0
0
0
0
0
0
1
0
一段從A6地址開始的12秒錄放音。
*
*
*
*
*
*
*
*
*
0
只要A8、A9有一位是0,就處于地址模式。
*
*
*
*
*
*
*
*
0
*
0
0
0
1
0
0
0
0
1
1
循環放音操作,按住CE鍵不放循環放音第一段。
操作模式
0
0
0
0
1
0
0
0
1
1
按順序連續分段錄放音,錄音時壓住CE鍵不放,放音時每觸發一次CE鍵即放音一段,按PD鍵復位。每段語音長度不限。
按鈕模式
0
0
0
0
0
0
1
0
1
1
ISD2560的錄放時間是605,因此地址分辨率是100MS。ISD器件可進行多段地址操作,每一段稱為一個信息段,它可以占用一行和多行存儲空間。一個地址單元最多只能作為一個獨立的段。因此ISD2560最多可分為600個信息段。這就為在單片機系統中使用ISD2560語音芯片提供了基本條件。
2.采樣單片機控制語音芯片的好處
ISD芯片完全可以手動,為什么還要使用單片機?我們可以從以下的兩個方面考慮實際使用中的要求。
l 單片機系統的需要。在一些應用場合,如手機花費查詢系統、排隊機以及公共汽車報站器等,這些應用中需要實現自動播音,而ISD2560實現自動播音的方法,最為簡單的就是和單片機系統想連接。
l 簡化人工操作。通常情況下,只能使用ISD器件提供的無須知道地址的操作模式,即手動模式,這只適合于開發一些簡單的語音功能,而無法滿足復雜操作或者實時中應用的要求。為實現以上應用,最好使用對地址直接操作的辦法。但在實際中,一些電路開發設計只是在基于語音信號已經寫入芯片,并且段地址已經知道的基礎上才能進行。然而,不可避免地要遇到必須將語音寫入的時候。如果手動處理,采用按錄音按鍵錄音,按停止按鍵停止,假如錄音段數特別多,就要頻繁地按上述按鍵,實在讓人疲憊不堪。此外,手動按下錄音及停止按鍵的時間也是很難掌握,這就容易產生段間空白,造成芯片空間浪費,對語音段特別多,而語句有特別短的提示,如一些單字、單詞更是浪費嚴重。不僅這樣,由于斷句中空白時間過長,合成方音時出現語音不連貫。
正是由于上述原因,需要將單片機系統和語音芯片聯系起來,形成一個智能化的語音播放系統。單片機需要完成以下兩個功能:
l 通過ISD2560芯片,錄制一段語音信息
l 利用單片機定時10秒,循環播放一段錄制的語音
3.電路設計
本電路采用的主要器件是ISD2560語音芯片和單片機,具體接口電路如下:
e. 電路原理和器件的選擇
下面是相關的、關鍵部分的器件名稱及起在電路中的功能
AT89C2051:主要通過對ISD2560的設置,完成對語音播放過程的控制。系統采用的微控制器是ATMEL公司生產的低電壓、高性能8位CMOS單片機AT89C2051,由于它將8位CPU和閃速存儲器組合在單個芯片中,為很多嵌入式控制應用系統提供了一個高度靈活且價格低廉的解決方案。AT89C2051帶有2K字節可編程的FlashMemory、128字節RAM、15根I/O線、2個16位定時/計數器、1個全雙向的串口、1個精密比較器。其與工業標準MCS-51的指令集和引腳結構完全兼容。
該單片機的P1口是一個雙向I/O口,其中P1.2~P1.7口內部提供了上拉電阻,P1.0、P1.1需外部上拉。P1.0、 P1.1同時也是片內精密比較器的正輸入端(AIN0)和負輸入端(AIN1)。P3口是7個帶有內部上拉電阻的雙向口(P3.6除外,其為片內比較器的輸出腳,而不能作為普通的I/O口使用)。
l ISD2560:語音芯片,在單片機的控制下實現語音的定時播放,并且可以通過按鍵實現錄音功能。
l SPEAKER:ISD2560語音芯片外接的揚聲器。
l MIC:ISD2560語音芯片外接麥克風。
l D0—D9:單片機和ISD2560語音芯片的地址連接,通過對D8、D9的設置,單片機可以控制芯片的工作方式。、
l PD:節電控制,和單片機的P3.2口相連,單片機可以控制芯片的開關。
l CE:片選,和單片機的p3.3口項鏈,單片機可以選中芯片。
l P/R:錄放模式,和單片機的p3.0口相連,單片機可以控制芯片處于錄音或放音的工作狀態。
l EOM:信息結尾標志,和單片機的p3.1口相連,EOM標志在錄音時有芯片自動插入到該信息的結尾。
C.功能簡介
錄音時,按下錄音鍵,單片機通過D端口線設置語音段的起始地址,再使PD端、P/R端為低電平啟動錄音;結束時,松開按鍵,單片機有讓P/R端回到高電平,即完成一段語音的錄制。同樣的方法可以錄取第二段、第三段等。值得注意的是,錄音時間不能超過預先設定的每段語音的時間。
放音時,根據需播放的語音內容,找到相應的語音段起始地址,并通過口線送出。
P/R端設為低電平,并讓/CE端產生一負脈沖啟動放音,這時單片機只需要等待ISD2560
信息結束信號。信號為一負脈沖,在負脈沖的上升沿,該段語音才播放結束,所以單片機必
須要檢測到的上升沿才能播放第二段,否則播放的語音就不連續。ISD2560與單片AT89C2051的接口電路以及外圍電路如圖
所示。單片機的P1口、P3.4和 P3.5分別與ISD2560的地址線相連,用以設置語音段的起始地址。P3.0~P3.3用以控制錄放音狀態。P3.7連接一按鍵,供錄音時使用。由TL7705構成可靠復位及電源監視電路。
ISD2560雖然提供了地址輸入線,但它的內部信息段的地址卻無法讀出。本系統采用單片機來控制,不需讀出信息地址,而直接設置信息段起始地址。其實現方式有兩種:一是由于ISD2560的地址分辨率為100 ms,所以可用單片機內部定時器定時100 ms,然后再利用一計數器對單片機定時次數進行計數,則計數器的計數值為語音段所占用的地址單元。該方式能充分利用ISD2560內部的E2PROM,在字段較多時可利用該方法。二是語音字段如果較少,則可根據每一字段的內容多少,直接分配地址單元。一般按每1 s說3個字計算,60 s可說180個字,再根據ISD2560的地址分辨率為100 ms,即可計算出語音段所需的地址單元數。本電路采用第二種方式。
2.程序設計
錄音源程序:
START: MOV R7,#00H
MOV P1,#00H
CLR P3.4 ;ISD2560地址初始化
CLR P3.5
CLR P3.2
CLR P3.0 ;設置為錄音狀態
LOOP: JB P3.7,LOOP ;錄音鍵按下否?
INC R7
CALL PRESS
LJMP LOOP
PRESS: CJNE R7,#1,NEXT1
MOV P1,#00H ;送字段1起始地址
CLR P3.4
CLR P3.5
LCALL RECORD
JMP BACK
NEXT1: CJNE R7,#2,NEXT2
MOV P1,#20H ;送字段2起始地址
CLR P3.4
CLR P3.5
LCALL RECORD
JMP BACK
NEXT2: CJNE R7,#3,NEXT3
MOV P1,#40H ;送字段3起始地址
CLR P3.4
CLR P3.5
LCALL RECORD
JMP BACK
NEXT3: CJNE R7,#4,NEXT4
MOV P1,#60H ;送字段4起始地址
CLR P3.4
CLR P3.5
LCALL RECORD
JMP BACK
NEXT4: CJNE R7,#5,BACK
MOV R7,#00H
MOV P1,#80H ;送字段5起始地址
CLR P3.4
CLR P3.5
LCALL RECORD
BACK: RET
RECORD: CLR P3.3 ;/CE端為低,開始錄音
JNB P3.7,$
SETB P3.3
RET
放音源程序:
BEGIN: SETB 20H.0 ; 置放音標志
SETB P3.0 ;置放音狀態
MOVP1,#00H ;ISD2560地址初始化
CLR P3.4
CLR P3.5
MOVR0,2FH ;放音起始地址送R0
LOOP1: JB 20H.0,LOOP1
LCALL PLAY ;20H.0=0 調放音程序
JMP LOOP1
PLAY: INC R0
LCALL FIND ;調查找播放地址子程
CJNE R0,#5,OUT
MOV R0,#2FH
OUT: RET
FIND: MOV A,@R0 ;查找播放語音地址
CJNE A,#1,PNEX1
MOV P1,#00H ;若A=#1放第一段
CLR P3.4
CLR P3.5
CALL SOUND
JMP PBACK
PNEX1: CJNE A,#2,PNEX2
MOV P1,#20H ;若A=#2放第二段
CLR P3.4
CLR P3.5
CALL SOUND
JMP PBACK
PNEX2: CJNE A,#3,PNEX3
MOV P1,#40H ;若A=#3放第三段
CLR P3.4
CLR P3.5
CALL SOUND
JMP PBACK
PNEX3: CJNE A,#4,PNEX4
MOV P1,#60H ;若A=#4放第四段
CLR P3.4
CLR P3.5
CALL SOUND
JMP PBACK
PNEX4: CJNE A,#5,PBACK
MOV P1,#80H ;若A=#5放第五段
CLR P3.4
CLR P3.5
CALL SOUND
PBACK: RET
SOUND: CLR P3.3 ;/CE端形成一負脈沖啟
NOP ;動播放
NOP
SETB P3.3
TURN1: JB P3.1,TURN1 ;等待語音段結束信號
TURN2: JNB P3.1,TURN2 ;等待EOM信號的上升沿
RET
致 謝
在兩個多月的課題研究及論文撰寫過程中,我非常感謝我的導師—張冀祥老師。無論是在課題立項還是在課題的研究階段,張老師都給了我很大的幫助。在畢業設計的這段時間中,李老師不僅使我在學業上有了很大的提高,而且言傳身教,使我學到了作為一名大學生所應具備的那種踏實勤懇、一絲不茍、認真求實的優良品質和學習作風。在我進行課題內容的研究中,從技術上給予了我極大的幫助和支持,而且在論文的最后評閱過程中,也給我提出了非常有價值的意見,使我獲益極深。衷心地謝謝您,張老師!
同時,我還要感謝電子實驗室的楊旭楊老師,無論是從資料上,還是從經驗和技
術上都提供了極大的幫助。并一直堅持向我提供最新技術資料,使畢業設計得以
最后完成。最后,對所有在這三年年里的學習和生活中,給予我各種關心我
幫助的人們,我僅表達我最衷心的謝意!謝謝你們!
參 考 文 獻
1 余永權. ATMEL89系列單片機應用技術[M].北京:北京航空航天大學出版社.
2 2002 數碼語音芯片、產品及應用電路資料匯編[M].
3 劉欣,等. IDS語音器件分段地址的獲取[J]. 電子技術應用,1999(10)
4 求是科技.單片機模塊設計實例導航.人民郵電出版社
5 《MCS-51單片機接口技術與運用》李華北京航天航空大學出版社
6 《單片機接口技術與運用》胡漢才 清華大學出版社
7 周航慈. 單片機應用程序設計技術(修訂版)[M]. 北京:北京:北京航空航天大學出版社,2002.47
8 《單片微型機原理`應用與實驗,第三版》張友德等編 復旦大學出版社
AT89C52資料:
Features
· Compatible with MCS-51TM Products
· 8 Kbytes of In-System Reprogrammable Flash Memory
Endurance: 1,000 Write/Erase Cycles
· Fully Static Operation: 0 Hz to 24 MHz
· Three-Level Program Memory Lock
· 256 x 8-Bit Internal RAM
· 32 Programmable I/O Lines
· Three 16-Bit Timer/Counters
· Eight Interrupt Sources
· Programmable Serial Channel
· LowPower Idle and Power Down Modes
Description
The AT89C52 is a low-power, high-performance CMOS 8-bit microcomputer with8 Kbytes of Flash programmable and erasable read only memory (PEROM). Thedevice is manufactured using Atmel’s high density nonvolatile memory technologyand is compatible with the industry standard 80C51 and 80C52 instruction setand pinout. The on-chip Flash allows the program memory to be reprogrammedin-system or by a conventional nonvolatile memory programmer. By combining aversatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89C52 is apowerful microcomputer which provides a highly flexible and cost effective solutionto many embedded control applications. The AT89C52 provides the followingstandard features: 8 Kbytes of Flash, 256 bytes of RAM, 32 I/O lines, three16-bit timer/counters, a six-vector two-level interrupt architecture, a fullduplex serial port, on-chip oscillator, and clock circuitry. In addition, theAT89C52 is
Description (Continued)
designed with static logic for operation down to zero frequency andsupports two software selectable power saving modes. The Idle Mode stops theCPU while allowing the RAM, timer/counters, serial port, and interrupt systemto continue functioning. The Power Down Mode saves the RAM contents but freezesthe oscillator, disabling all other chip functions until the next hardware reset.
Pin Description
VCC
Supply voltage.
GND
Ground.
Port 0
Port 0 is an 8-bit open drain bidirectional I/O port. As an output port,each pin can sink eight TTL inputs. When 1s are written to port 0 pins, thepins can be used as high-impedance inputs.
Port 0 can also be configured to be the multiplexed low-order address/databus during accesses to external program and data memory. In this mode, P0 hasinternal pullups. Port 0 also receives the code bytes during Flash programming andoutputs the code bytes during program verification. External pullups arerequired during program verification.
Port 1
Port 1 is an 8-bit bidirectional I/O port with internal pullups. The Port1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1pins, they are pulled high by the internal pullups and can be used as inputs.As inputs, Port 1 pins that are externally being pulled low will source current(IIL) because of the internal pullups. In addition, P1.0 and P1.1 can beconfigured to be the timer/counter 2 external count input (P1.0/T2) and the timer/counter2 trigger input (P1.1/T2EX), respectively, as shown in the following table.
Port 1 also receives the low-order address bytes during Flashprogrammingand program verification.
port 2 is an 8-bitbidirectional I/O port with internal pullups. The Port 2 output buffers cansink/source four TTL inputs. When 1s are written to Port 2 pins, they arepulled high by the internal pullups and can be used as inputs. As inputs, Port2 pins that are externally being pulled low will source current (IIL) becauseof the internal pullups. Port 2 emits the high-order address byte duringfetches from external program memory and during accesses to external data memorythat use 16-bit addresses (MOVX @ DPTR). In this application, Port 2 usesstrong internal pullups when emitting 1s. During accesses to external datamemory that use 8-bit addresses (MOVX @ RI), Port 2 emits the contents of theP2 Special Function Register. Port 2 also receives the high-order address bitsand some control
signals during Flash programming and verification.
Port 3
Port 3 is an 8-bit bidirectional I/O port with internal pullups. The Port3 output buffers can sink/source four TTL inputs. When 1s are written to Port 3pins, they are pulled high by the internal pullups and can be used as inputs.As inputs, Port 3 pins that are externally being pulled low will source current(IIL) because of the pullups. Port 3 also serves the functions of variousspecial features of the AT89C51, as shown in the following table.
Port 3 also receives some control signals for Flash programming andprogramming verification.
RST
Reset input. A high on this pin for two machine cycles while the oscillatoris running resets the device.
ALE/PROG
Address Latch Enable is an output pulse for latching the low byte of theaddress during accesses to external memory. This pin is also the program pulseinput (PROG) during Flash programming.
In normal operation, ALE is emitted at a constant rate of 1/6
the oscillator frequency and may be used for external timing or clockingpurposes. Note, however, that one ALE pulse is skipped during each access toexternal data memory. If desired, ALE operation can be disabled by setting bit 0of SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVCinstruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disablebit has no effect if the microcrontroller is in external execution mode.
PSEN
Program Store Enable is the read strobe to external program memory. Whenthe AT89C52 is executing code from external program memory, PSEN is activatedtwice each machine cycle, except that two PSEN activations are skipped duringeach access to external data memory.
Pin Description (Continued)
EA/VPP
External Access Enable. EA must be strapped to GND in order to enable thedevice to fetch code from external program memory locations starting at 0000Hup to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internallylatched on reset. EA should be strapped to VCC for internal program executions.This pin also receives the 12-volt programming enable voltage (VPP) duringFlash programming when 12-volt programming is selected.
XTAL1
Input to the inverting oscillator amplifier and input to the internal clockoperating circuit.
XTAL2
Output from the inverting oscillator amplifier.
Special FunctionRegisters
A map of the on-chip memory area called the Special Function Register(SFR) space is shown in Table 1. Note that not all of the addresses areoccupied, and unoccupied addresses may not be implemented on the chip. Readaccesses to these addresses will in general return random data, and write accesseswill have an indeterminate effect. User software should not write 1s to theseunlisted locations, since they may be used in future products to invoke newfeatures. In that case, the reset or inactive values of the new bits will alwaysbe 0.
Timer 2 Registers Control and status bits arecontained in registers T2CON (shown in Table 2) and T2MOD (shown in Table 4)for Timer 2. The register pair (RCAP2H, RCAP2L) are
the Capture/Reload registers for Timer 2 in 16-bit capture mode or 16-bitauto-reload mode.
Special FunctionRegisters (Continued)
Interrupt Registers The individual interrupt enablebits are in the IE register. Two priorities can be set for each of the sixinterrupt sources in the IP register.
Data Memory
The AT89C52 implements 256 bytes of on-chip RAM. The upper 128 bytesoccupy a parallel address space to the Special Function Registers. That meansthe upper 128 bytes have the same addresses as the SFR space but are physicallyseparate from SFR space. When an instruction accesses an internal locationabove address 7FH, the address mode used in the instruction specifies whether theCPU accesses the upper 128 bytes of RAM or the SFR space. Instructions that usedirect addressing access SFR space.
AT89C52
主要性能參數:
l 與MCS-51產品指令和引腳完全兼容
l 8K字節可重復檫寫FLASH閃速存儲器
l 1000次檫寫周期
l 全靜態操作:0HZ-24HZ
l 三級加密程序存儲器
l 256X8字節內容RAM
l 32個可編程I/O口線
l 3個16位定時/計數器
l 8個中斷源
l 可編程串行UART通道
l 低功耗空閑和掉電模式
功能特性概述:
AT89C52提供以下標準功能:8K字節閃速存儲器,256字節內部RAM,32個I/O口線,3個16位定時/計數器,一個6向量兩極中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,可降至0HZ的靜態邏輯操作,并支持良種軟件可選的節電工作模式。空閑方式停止CPU的工作,但允許RAM,定時/計數器,串行通信口及中斷系統繼續工作。掉電模式保存RAM中的內容,但振蕩器停止工作并禁止其他所有部件工作直到下一個硬件復位。
引腳功能說明
l VCC:電源電壓
l GND:地
l P0口:P0口是一組8位漏極開路雙向I/O口,也即地址/數據總線服用口。作為輸出口用時,每位能吸收電流的方式驅動8個TTL邏輯門電路,對斷口P0寫“1‘時,可作為高阻抗輸入端用。
在訪問外部數據存儲器或 程序存儲器時,這組口線分時轉換地址和數據總線復用,在訪問激活內部上拉電阻。
在FLASH編程時間,P0口接受指令字節,而在程序校驗時,輸出指令字節,校驗時,要求接上拉電阻。
l P1口:是一個帶內部上拉電阻的8位雙響I/O口,P1輸出緩沖級可驅動4個TTL邏輯門電路。對斷口寫“1“,通過內部的上拉電阻把斷口拉倒高電平,此時可作輸入口。做輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。
l P2口:是一個帶有內部上拉電阻的8位雙響I/O口,P2的輸出緩沖可驅動4個TTL邏輯門電路。對斷口P2寫1,通過內部的上拉電阻把斷口拉倒高電平,此時可作輸入口,做輸入口使用時,因為內部存在上拉電阻,某個引酵被外部信號拉低時會輸出一個電流。
在訪問外部程序存儲器或16位地址的外部數據存儲器時,P2口送出高8位地址數據。在訪問8位地址的外部數據存儲器時,P2口輸出P2鎖存器內容。
l P3口:P3口是一組帶有內部上拉電阻的8位雙響I/O口。P3口輸出緩沖可驅動4個TTL邏輯門電路。對P3口寫入“1“時間,它們被內部上拉電阻拉高并可作為輸入斷口。此時,被外部拉低的P3口將用上拉電阻輸出電I流。
P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能。
此外,P3口還接收一些用語FLASH閃速存儲編程和程序校驗的控制信號。
l RST:復位輸入。當振蕩器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。
l ALE/PROG;當訪問外部程序存儲器或數據存儲器時ALE輸出脈沖用語鎖存地址的低8位字節。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存儲器時間、將跳過一個ALE脈沖。
對FLASH存儲器編程期間,該引腳還用于輸入變成脈沖。
l PSEN:程序存儲允許輸出是外部程序存儲器的讀選通信號,當AT89C52由外部程序存儲器取指令時,每個機器周期量詞有效,即輸出兩個脈沖。在此期間,當訪問外部數據存儲器,將跳過兩次信號。
l EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器,EA端必須保持低電平接。需注意的是;如果加密LB1被編程,復位時內部會鎖存EA端狀態。
如EA端為高電平,CPU則執行內部程序存儲器中的指令。
FLASH存儲器編程時間,該引腳加上+12的變成允許電源,當然這必須是該器件是使用12編程電壓。
l XTAL1:振蕩器反相放大器的及內部時鐘發生器的輸入端
l XTAL2;振蕩器反相放大器的輸出端
l 特殊功能寄存器:
在AT89C52片內存儲器中,80H-FFH共128個單元為特殊功能寄存器,SFR的地址空間影象
并非所有的地址都被定義,從80H-FFH共128個字節只有一部分被定義,還 有相當一部分沒有定義。對沒有定義的單元讀寫是無效的,讀出的數值將不確定,而寫入的數據也將丟失。
不應將數據“1”寫如未定義的單元,由于這些單元在將來的產品中可能賦予新的功能,在這種情況下,復位后這些單元數值總是“0”。
l 中斷寄存器:
AT89C52有6個中斷源,2個中斷優先級,IE寄存器控制各中斷位,IP寄存器中6個中斷源的每一個可定為2個優先級。
l 數據存儲器:
AT89C52有256個字節的內部RAM,80H-FFH高128個字節與特殊功能寄存器地址是重疊的也是高128字節的RAM和特殊功能寄存器的地址是相同的,但物理上它們是分開的。
當一條指令訪問7FH以上的內部地址單元時,指令中使用的尋址方式是不同的,也即尋址方式決定是訪問高128字節RAM還是訪問特殊寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。
|