




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄1 系統總體方案31.1 公交車報站器可選方案31.2 設計方案的可行性分析和選擇51.3 公交車報站器的硬件框圖52 系統硬件設計62.1 SPCE061A簡介62.2 系統電源設計102.3 語音存儲電路設計102.4 音頻輸出電路設計122.5 顯示電路設計132.6 鍵盤電路設計143 系統軟件設計153.1 語音處理153.2 主函數流程圖173.3 初始化函數243.4 語音播放的實現293.5 更新時間323.6 設置時間33參考文獻46辭47附錄一公交車報站器電路圖49附錄二公交車報站器程序50在當今社會,即使在私家車越來越多的今天,公交車仍然是人們出行的首選,因為公交車具
2、有方便、快捷、車票便宜等優點。傳統的公交車報站主要由售票員報站,但是有些售票員有著濃重的地方口音,給外地人乘坐公交車造成了困難,另外,隨著無人售票車逐漸增多,公交車報站器就越顯得重要了。 目前我國公交車輛己從原有的人工語音報站發展到現在的自動語音報站。就報站語音而論,絕大多數報站裝置都采用IsD系列的語音芯片,部分報站產品也有采用最新的數字語音處理合成技術,兩者各有優缺點。前者成本低,但音質較差,且更改報站信息不靈活,當公交車輛臨時改道時必須重新對語音芯片編程;后者受信息容量、語音音質的限制,且更換信息仍需專業設備。因此設計一款能夠方便地更換報站信息、播放高音質語音信息的公交車報站器愈顯重要。
3、本方案利用單片機的語音處理功能,以與其強大的處理能力,完成語音的合成技術,再配合存儲器 ,擴大存儲容量,很容就可以實現公交車報站器,從而為市民提供了更加人性化的服務。這些優點使得本方案成為制作公交報站器一種最經濟實用的選擇。1 系統總體方案公交報站系統的設計要求報站系統可以完整地播放一條公交線路的站名??梢栽陲@示屏上顯示當前的時間,具有時間日期的設置功能,還可以播放音樂或廣告。經過查閱資料,可選方案有基于MP3/U盤的公交車報站設計,基于GPS的公交車報站器系統設計和基于SPCE061A的公交車報站系統設計等.1.1 公交車報站器可選方案1.1.1 基于MP3/U盤的公交車報站設計方案采用AT
4、89C51SND1C單片機(部集成MP3解碼器)作為主控CPU與解碼MP3數據,實現對報站信息播放、點陣字符顯示、文件存儲以與用作優盤功能時USB與PC機聯機的控制。利用FAT16在K9F1208上實現文件系統,形成一個Windows可識別訪問的64MB尋址區域。結合USB控制器,系統可作為優盤在Windows下使用,從而實現在Windows下對文件的管理以與數據存儲功能。這樣通過程序的設定,公交車可通過鍵盤實現MP3格式聲音信號的報站以與各種信息的廣播。列表文件在系統對閃存初始化時生成,系統在對閃存進行格式化的同時生成該名為SCHED-ULE.LST的列表文件。該列表文件可在Windows下
5、利用記事本打開,編輯所需播放的MP3名稱。播放報站信息的同時通過16個16×16的LED點陣顯示相應的播放容。系統框圖如圖1.1所示。閃存電路USB接口電路LED點陣顯示電路MP3解碼與DAC電路語音輸入電路MCU功放電路鍵盤指示電路圖1.1 方案一系統框圖1.1.2 基于GPS的公交車自動報站系統設計方案 GPS的公交車自動報站系統利用GPS,通過GPS接收單元接收衛星發送的信號確認車輛的動態位置(經度、緯度)、時間、狀態等信息,與公交線路信息庫中存儲的車站的位置進行比較,根據預先設定的距離和規則向乘客通報車站和線路的語音信息;并且能把車輛運行的詳細情況記錄下來,對公共汽車的運營狀
6、況進行全程監控并記錄。系統的組成見圖1.2。GPS 天線電源音頻功放CPU語音合成喇叭光耦鍵盤圖1.2 方案二系統框圖1.1.3 基于SPCE061A的公交車報站系統設計方案系統以 SPCE061A 為核心,可以劃分為鍵盤輸入、數碼管顯示、SPR4096資源存儲與語音播放等部分,如圖1.3所示。SPCE061A作為整個系統的核心控制,并且負責語音的輸出。SPR4096 作為語音資源的存儲介質。LED鍵盤顯示模組作為時間顯示與用戶輸出設備.使用SPCE061A可以非常方便靈活的實現語音的錄放。兩路10位精度的DAC,只需要外接功放(SPY0030A)即可完成語音的播放。單片機控制系統語音輸出電路
7、語音存儲電路顯示電路鍵盤電路圖 1.3 方案三系統框圖 1.2 設計方案的可行性分析和選擇這三種方案各有各的優勢?;贛P3/U盤的公交報站系統能夠作為U盤與電腦連接,可自行下載報站器的播放容,也可方便地更改播放容,播放高品質的音樂,無報站播放時可作為MP3播放器,提高公交車服務質量。但是MP3操作頁面對于司機來說太小,分散過多的注意力,實用性不夠。基于GPS的公交報站系統用先進的衛星定位,進站、出站自動播報站名與服務用語,準確、與時、完全不需要人工介入,實現了公交車報站器的完全智能化。國GPS語音自動報站系統處于試驗階段,可行性太小?;赟PCE061A公交報站系統,SPCE061A芯片有語
8、音處理能力使得系統設計簡化,外圍電路較少;另外具有一套指令系統和集成開發環境易學易用效率較高。SPR4096能夠存儲大量語音數據,符合任務書所給要求。1.3 公交車報站器的硬件框圖 查閱各種相關資料,設計出公交報站系統。系統電路原理圖見附錄一。2 系統硬件設計硬件電路設計可以分為單片機控制系統設計;語音存儲電路設計;音頻輸出電路設計;顯示電路設計。2.1 SPCE061A簡介SPCE061A型單片機是凌陽科技公司推出的一款16位微處理器,具有體積小、集成度高、易擴展、可靠性高、功耗低、結構簡單、中斷處理能力強等特點,嵌32K字閃存FLASH,處理速度高,能夠很方便的完成普通單片機的功能,尤其適
9、應于數字語音播報和識別等應用領域,是數字語音識別與語音信號處理的理想產品,得到廣泛的應用。 SPCE061A單片機的主要性能有:l 16位 unSP 微處理器 l 工作電壓(CPU)VDD 為 3.03.6V,(I/O)VDDH為 3.05.5V l CPU時鐘:0.3249.152MHz l 置 2K字 SRAM l 置 32K字FLASH l 可編程音頻處理 l 晶體振蕩器 l 系統處于備用狀態下(時鐘處于停止狀態),耗電僅為 2uA/3.6V l 2 個16 位可編程定時器/計數器(可自動預置初始計數值) l 2 個10位 DAC(數/模轉換)輸出通道 l 32 位通用可編程輸入/輸出通
10、道 l 14 個中斷源可來自定時器 A/B、時基、2 個外部時鐘源輸入和鍵喚醒 l 具備觸鍵喚醒的功能 l 使用凌陽音頻編碼 SACM_S480 可以播放壓縮的語音資源 l 鎖相環 PLL 振蕩器提供系統時鐘信號 l 32768Hz 實時時鐘 l 7 通道10 位電壓模/數轉換器(ADC)和單通道聲音模/數轉換器 l 聲音模/數轉換器輸入通道置麥克風放大器,并具有自動增益控制(AGC)功能 l 具備串行設備接口 l 具備低電壓復位功能和低電壓檢測功能 l 置在線仿真電路接口 l 具有 WatchDog 功能 圖2.1為 SPCE061A單片機的部結構框圖: 圖 2.1 SPCE061A 部結構
11、圖 SPCE061A引腳排列如圖2.2所示,引腳功能如表2.1所示圖2.2 SPCE061A引腳圖表 2.1 SPCE061A引腳功能表引腳名稱類型引腳功能IOA15:8輸入輸出OA15:8:雙向 IO 端口IOA7:0 輸入輸出IOA7:0:通過編程,可設置成喚醒管腳 IOA6:0:與 ADC Line_In 輸入共用 IOB15:11 IOB10 IOB9 IOB8 IOB7 IOB6 IOB5 IOB4 IOB3 IOB2 IOB1 IOB0輸入輸出 輸入輸出 輸入輸出 輸入輸出 輸入輸出 輸入輸出 輸入輸出 輸入輸出 輸入輸出 輸入輸出輸入輸出輸出 IOB15:11:雙向 IO 端口。
12、IOB10-0 除用作普通的 IO端口,還可作為如下功能: IOB10:通用異步串行數據發送管腳 Tx IOB9:TimerB 脈寬調制輸出管腳 BPWMO IOB8:TimerA 脈寬調制輸出管腳 APWMO IOB7:通用異步串行數據接收管腳 Rx IOB6:雙向 IO 端口 IOB5:外部中斷源 EXT2 的反饋管腳 IOB4:外部中斷源 EXT1 的反饋管腳 IOB3:外部中斷源 EXT2 IOB2:外部中斷源 EXT1 IOB1:串行接口的數據傳送管腳IOB0:串行接口的時鐘信號 DAC1輸出DAC1 數據輸出管腳 DAC2輸出DAC2 數據輸出管腳OSCI輸入32768Hz晶振輸入
13、管腳 OSCO輸出32768Hz晶振輸出管腳 VCP輸入PLL的 RC 濾波器連接管腳 AGC輸入AGC 的控制管腳MICN輸入麥克風負向輸入管腳MICP輸入麥克風正向輸入管腳 VREF2輸出電壓源 2.0V產生5mA 的驅動電流,可用作外部 ADC Line_In 通道的最高參考輸入電壓,不可作為電壓源使用 MICOUT輸出麥克風 1 階放大器輸出管腳,管腳外接電阻決定AGC增益倍數 OPI輸入麥克風 2 階放大器輸入管腳 VRTPAD輸入ADC Line_In 通道的最高參考輸入電壓管腳VMIC輸出麥克風電源VCM輸出AD 參考電壓(由部 ADC 產生)VDD輸入邏輯電源的正向電壓VSS輸
14、入邏輯電源和 IO 口的參考地VDDIO輸入IO 端口的正向電壓管腳VSSIO輸入IO 端口的參考地AVDD輸入模擬電路(A/D、D/A 和 2V 穩壓源)正向電壓 AVSS輸入模擬電路(A/D、D/A 和 2V 穩壓源)參考地RSETB輸入低電平有效的復位管腳SLEEP輸出睡眠模式(高電平激活)ICE輸入激活 ICE(高電平激活ICECLK輸入ICE 串行接口時鐘管腳ICESDA輸入輸出ICE 串行接口數據管腳TEST輸入測試模式時接高電平,正常模式時接地 GND 或懸浮ROMT輸入測試閃爍存儲器,正常模式時懸浮 NC輸入正常使用時接地2.2 系統電源設計圖2.3是電源部分的電路,61單片機
15、的核工作電壓是3.3V,而IO口電壓可以是3.3V也可以是5V。公交蓄電池12V直流電壓經過7805產生5V電壓,再經過SPY0029后產生3.3V電壓分別給系統供電。LM7805是常用的三端正電源穩壓電路,使用的是TO-220封裝,能提供直流電源5V的輸出電壓,含短路和熱過載保護電路,應用圍非常廣泛。帶散熱片時能持續提供1A的電流,如果使用外圍器件,它還能提供不同的電壓和電流。它有三個引腳,引腳1為輸入電壓,引腳2為+5V輸出電壓,引腳3接地。SPY0029是凌陽公司設計的電壓調整IC,采用CMOS工藝,具有靜態電流低,驅動能力強,線性調整出色等特點。它有三個引腳,引腳1接地,引腳2為輸入電
16、壓,引腳3為輸出電壓。圖2.3 單片機電源電路2.3語音存儲電路設計因為SPCE061A的FLASH只有32K字,要存放大量的語音資源,就要外擴存儲器。本次設計選用SPR4096芯片。2.3.1 SPR4096芯片簡介 SPR4096是一個高性能的4M-bit(512K×8-bit)FLASH,分為256個扇區(Sector),每個扇區為2KB。SPR4096還置了一個4K×8bit的SRAM。SPR4096置了一個總線存儲器接口和一個串行接口,它允許單片機通過8bit并行模式或者1bit串行模式訪問FLASH/SRAM存儲區。本設計使用品行模式,串行接口的工作頻率可達5M
17、Hz.有兩個電源輸入端VDDI和VDDQ.VDDI是給部FLASH和控制邏輯供電的;VDDQ是專門為I/O供電的。最大讀電流為2mA。SPR4096按串行接口模式工作,要把CF2CF0 均接高電平。CF7為低電平時選中FLASH,高電平時選中SRAM.3.3.2語音存儲電路 圖2.4是SPR4096與單片機的硬件連接圖。SPR4096 的SCK接SPCE061A的IOB0,SDA接 SPCE061A的IOB1。CF0CF2 接高電平,CF7 接低電平,選中FLASH。 圖2.4 SPR4096電路圖2.4 音頻輸出電路設計 SPCE061A置2路10位精度的 DAC,芯片輸出的音頻信號功率較小
18、,在報站時要求比較大的聲音,就要對芯片輸出的聲音信號進行功率放大,因此電路選用了SPY0030音頻功率放大電路。圖2.5為音頻輸出電路。SPCE061A的音頻輸出采用雙通道數模轉換DAC方式,即數字信號通過10位DAC轉換成3mA驅動的電流模擬信號輸出。語音提示輸出直接采用DAC通道,經信號放大后,由SPEAKER(揚聲器)輸出。圖2.5 音頻輸出電路 SPY0030芯片是一個音頻驅動,其增益可以通過外部電阻(最長增益調整為20)。它的輸出功率約700mW,電壓可調圍很廣(2.4V-6.8V),具有雙端輸出模式,低失真,低待機電流等特點。簡單易用,僅需2.4V(兩顆電池)即可工作。圖2.6為S
19、PY0030芯片的引腳圖。表2.2為引腳功能表。圖 2.6 SPY0030芯片引腳圖表2.2 SPY0030芯片引腳功能表引腳名稱引腳號類型引腳功能VDD8輸入電源的正向電壓VSS3輸入電源地SPP2輸出音頻輸出正極SPN1輸出音頻輸出負極ACIN5輸入信號輸入正極INN4輸入信號輸入負極CE7輸入芯片使能VREF6輸出參考電壓2.5 顯示電路設計 圖2.7為顯示電路圖。整個顯示過程中采用動態顯示,即六位顯示器逐一輪流顯示,每位持續 1ms,10ms或 20ms之循環一遍,刷新速度不要小于每秒三十楨。由于視覺暫留,我們看到的便是6只顯示器同時在顯示。圖2.7 顯示電路圖 顯示電路中只要有ULN
20、2003A、WD0521CX和WD05643CX等元器件組成。 ULN2003A:其部為三極管陣列,它的IN 腳相當于三極管的B極,OUT較相當于三極管的C極。若IN腳輸入高電平,對應的OUT腳接地;IN腳輸入低電平,對應的OUT腳截止輸出。 WD0521CX:共陰極2位數碼管.adp為數碼管的段信號,G1、G2為2位數碼管的位信號。段信號高有效,位信號低有效。WD05643CX:共陰極4位數碼管.adp為數碼管的段信號,d1、d2為時鐘冒號的段信號;G1G4 為4位數碼管的位信號,G5為時鐘冒號的位信號。段信號高有效,位信號低有效。2.6 鍵盤電路設計鍵盤輸入電路如圖2.8所示。各按鍵功能不
21、同,根據各按鍵功能列出表2.3.圖 2.8 鍵盤輸入電路 表2.3 鍵盤各按鍵功能表按鍵公交車報站狀態時間設置狀態S0逐次播放上行各站提示語,每按一次按順序播放一個無效S1逐次播放下行各站提示語,每按一次按順序播放一個 無效S2播放警告用語“車輛拐彎,請注意安全”無效S3播放提示語“車上有老弱病殘孕乘客,請讓座”無效S4播放娛樂音樂或廣告無效S5進入設置時間狀態設置切換S6顯示在時間/日期/年之間切換增加S7打開或關閉數碼管減小3 系統軟件設計3.1 語音處理語音處理是建立在語言學和數字信號處理基礎之上的綜合學科。語音處理大致可以分為 A/D 采樣輸入、編碼處理、存儲、解碼處理以與 D/A 等
22、。SPCE061A 是16位單片機,有2個16位定時/計數器;CPU 時鐘最高達49MHz ,16 位乘法器和積運算,有能力執行復雜壓縮算法,有完善的語音處理函數庫支持等。這些都無疑為語音的播放、錄放、合成與識別提供了條件。3.1.1壓縮存儲采樣輸入是指音頻采樣和量化,將模擬的(連續的)聲音波形數字化(離散化);語音信號的時域分析,直接利用語音信號的時域波形進行分析;語音信號的頻域分析,對語音信號的頻譜、功率譜等進行分析;語音信號的線性預測分析,把語音信號用一個模型來表示,利用模型的參數來描述語音信號的波形和頻譜特性。編碼處理采用壓縮編碼,它具有高效存儲和高速傳輸等特點。壓縮編碼可分為三類:1
23、. 波形編碼:sub-band即SACM_A2000。特點:高質量、高碼率,適于高保真語音音樂。 2. 參數編碼:聲碼器(vocoder)模型表達,抽取參數與激勵信號進行編碼。如:SACM_S240。特點:壓縮比大,計算量大,音質不高,廉價! 3. 混合編碼:CELP即SACM_S480。特點:綜合參數和波形編碼之優點。 本次系統設計方案采用混合編碼方式。壓縮分無損壓縮和有損壓縮。無損壓縮一般指:磁盤文件,壓縮比低:2:14:1。而有損壓縮則是指:音視頻文件,壓縮比可高達 100:1。 凌陽音頻壓縮算法根據不同的壓縮比分為以下幾種: SACM_A2000:壓縮比為8:,8:1.25,8:1.5
24、 SACM_S480: 壓縮比為80:3,80:4.5 SACM_S240: 壓縮比為80:1.5 按音質排序:A2000>S480>S240 壓縮算法中SACM_A2000、 SACM_S480、 SACM_S240 主要是用來放音,可用于語音提示,而DVR則用來錄放音。3.1.2 語音識別語音的識別可分為下列幾個部分:預處理,語音信號數字化;特征提取,抽取反應語音本質的特征參數,形成特征矢量序列;語音模型庫,從一個或多個講話者多次重復講話中提取的語音參數模板;模式匹配,把輸入語音的特征參數與語音模型庫進行比較分析,得到識別結果。識別的過程可用圖3.1表示。圖3.1 語音的識別3
25、.1.3 語音合成語音合成是將以其他方式表示或存儲的信息轉換成語音。最常見的語音合成技術是將文本轉換為語音(TTS)。文本轉換成語音如圖3.2所示。語音合成韻律處理文本處理語音輸出文本輸入語音數據庫詞典與語言規范圖3.2 文本轉換成語音圖3.2 主函數流程圖在主函數中完成SPR4096 的初始化、鍵盤、顯示的初始化,并且進行顯示時間與播報公交車報站的站點,然后進入循環根據鍵盤的值執行相關的操作。主函數流程圖如圖3.3所示。開始初始化局部變量初始化SPR4096,鍵盤,時間播報所有站點,行車路線根據變量進行顯示顯示時間顯示月日顯示年獲取鍵值根據鍵值執行操作播放娛樂音樂或廣告時間日月年之間切換播放
26、警告用語逐次播放上行站提示語,每按一次按順序播放一個打開或關閉數碼管逐次播放下行站提示語,每按一次按順序播放一個 播放提示語進入設置時間狀態清看門狗圖3.3 主函數流程圖 主函數程序:int main(void)unsigned int uiKey;/鍵盤值unsigned int uiOn_Off;/數碼管顯示或不顯示標志unsigned int uiKey1_Count;/key1按下次數unsigned int uiKey2_Count;/key2按下次數unsigned int uiflag;/按鍵key1、key2的奇偶標志unsigned int uiTemp;/臨時變量uiOn_
27、Off = 0;/局部變量初始化uiKey1_Count = 0;/uiKey2_Count = 16;/uiflag = 0;SP_SIOInitial();/初始化SPR模組,SPR4096DIG_Init();/初始化數碼管Key_Init();/初始化鍵盤Time_Init();/初始化顯示時間DIG_Set(1,0);DIG_Set(2,0);DIG_Set(3,DatauiHour_H);DIG_Set(4,DatauiHour_L);DIG_Set(5,DatauiMinite_H);DIG_Set(6,DatauiMinite_L);Broadcast(52);/播放站點whi
28、le(1)if(uiDisp = 0)/顯示時間DIG_Set(1,0);DIG_Set(2,0);DIG_Set(3,DatauiHour_H);DIG_Set(4,DatauiHour_L);DIG_Set(5,DatauiMinite_H);DIG_Set(6,DatauiMinite_L);if(uiDisp = 1)/顯示月日DIG_Set(1,DatauiMonth_H);DIG_Set(2,DatauiMonth_L);DIG_Set(3,0x0077);DIG_Set(4,DatauiDay_H);DIG_Set(5,DatauiDay_L);DIG_Set(6,0x007f)
29、;if(uiDisp = 2)/顯示年DIG_Set(1,0x0040);DIG_Set(2,DatauiYear_H);DIG_Set(3,DatauiYear_MH);DIG_Set(4,DatauiYear_ML);DIG_Set(5,DatauiYear_L);DIG_Set(6,0x0040);uiKey = Key_Get();/得到鍵值,掃建程序在128Hz中斷中調用switch(uiKey)case KEY1:uiA2000_S480 = 0;/選擇S480放音,在中斷FIQuiKey = 0;if(uiflag < 1) uiKey1_Count+;NextStatio
30、n(uiKey1_Count);/播放提示下一站*uiflag = 1;elseuiflag = 0;ComingStation(uiKey1_Count);/*站到了*if(uiKey1_Count = 16)uiKey1_Count = 0;/如果是終點站,重新初始化break;case KEY2:uiA2000_S480 = 0;if(uiflag = 0)uiKey2_Count-;NextStation(uiKey2_Count);uiflag = 1;elseuiflag = 0;ComingStation(uiKey2_Count);if(uiKey2_Count = 0)uiK
31、ey2_Count = 16;break;case KEY3:uiA2000_S480 = 0;PlaySnd_S480(65,3);/播放提示語,車在運行中,請做好扶穩break;case KEY4:uiA2000_S480 = 0;PlaySnd_S480(67,3);/請讓座break;case KEY5:/廣告或娛樂uiA2000_S480 = 1;PlaySnd_A2000(70,3);break;case KEY6:g_4Hz_On = 1;/進入4Hz中斷代碼,實現閃爍效果uiSetflag+;Set_Time();/設置時間break;case KEY7:uiKey = 0;u
32、iDisp+;/切換顯示時間/月日/年if(uiDisp = 3)uiDisp = 0;if(uiDisp = 0)uiTemp = *P_INT_Ctrl_New;/打開2Hz中斷,顯示秒針uiTemp |= C_IRQ5_2Hz;*P_INT_Ctrl_New = uiTemp;elseuiTemp = *P_INT_Ctrl_New;/關閉2Hz中斷,不顯示秒針uiTemp &= 0xfffb;*P_INT_Ctrl_New = uiTemp;uiTemp = *P_IOB_Buffer;uiTemp &= 0xfffb;*P_IOB_Data = uiTemp;brea
33、k;case KEY8:if(uiOn_Off = 0)DIG_Off();/關閉數碼管uiOn_Off = 1;elseDIG_On();/打開數碼管uiOn_Off = 0;break;default:break;*P_Watchdog_Clear = 0x0001;/清看門狗3.3 初始化函數系統要對 SPR4096、鍵盤、顯示、時間初始化。SPR4096初始化流程圖如圖3.4所示。開始設置系統時鐘為49M設置IOB0,IOB1為輸出結束圖3.4 spr4096 初始化 SPR4096初始化程序如下:.PUBLIC_SP_SIOInitial_SP_SIOInitial:.PROC /系
34、統時鐘設定 r1 = 0x0098; /Fosc=49mHz P_SystemClock = r1;r1 = P_IOB_Dir;r1 |= 1;/set bit0 output for sckP_IOB_Dir = r1;r1 = P_IOB_Attrib;r1 |= 1;/buffer outputP_IOB_Attrib = r1;r1 = P_IOB_Buffer;r1 |= 1;/output highP_IOB_Data = r1; retf.ENDP 鍵盤初始化流程圖如圖3.5所示,開始初始化IOB8-IOB15為下拉電阻輸入口初始化鍵盤變量打開128Hz (IRQ6_TMB)中
35、斷結束圖3.5 鍵盤初始化 鍵盤初始化程序如下: F_Key_Init:_Key_Init:push r1 to spINT Offr1 = P_Key_Dir/ 初始化IO為下拉輸入r1 &= Key_ALLP_Key_Dir = r1r1 = P_Key_Attribr1 &= Key_ALLP_Key_Attrib = r1r1 = 0ScanCnt = r1/ 初始化變量KeyCode = r1KeyUp = r1r1 = C_TMB2_128Hz/ 開啟IRQ6_TMB2(128Hz)中斷P_TimeBase_Setup = r1r1 = P_INT_Maskr1 |
36、= C_IRQ6_TMB2P_INT_Mask = r1INT FIQ,IRQpop r1 from sp Retf.ENDP開始 數碼管初始化流程圖如圖3.6所示,初始化顯示緩沖區與顯示變量初始化IOA口為輸出口打開4Hz中斷結束圖3.6 數碼管初始化 數碼管初始化程序如下:_DIG_Init:F_DIG_Init:push r1,bp to spINT Offr1 = DIG_Countr2 = 0x0000bp = R_DIG_Buf?DIG_InitBuf:/Clear Display Bufferbp+ = r2r1 -= 1jnz ?DIG_InitBufR_CurDIG = r2
37、/Reset Dig Pointerr1 = P_SEG_Attrib/Initial IO Ports for Segr1 |= PIN_SEG_ALLP_SEG_Attrib = r1r1 = P_SEG_Bufr1 &= PIN_SEG_ALLP_SEG_Data = r1r1 = P_SEG_Dirr1 |= PIN_SEG_ALLP_SEG_Dir = r1r1 = P_DIG_Attrib/Initial IO Ports for Digr1 |= PIN_DIG_ALLP_DIG_Attrib = r1r1 = P_DIG_Bufr1 &= PIN_DIG_ALL
38、P_DIG_Buf = r1r1 = P_DIG_Dirr1 |= PIN_DIG_ALLP_DIG_Dir = r1r1 = P_INT_Mask/Enable IRQ4_4KHz Intr1 |= C_IRQ4_4KHzP_INT_Mask = r1INT FIQ,IRQpop r1,bp from sp retf.ENDP時間初始化流程圖如圖3.7所示。開始設置IOB2為高電平輸出(秒)打開2Hz,4Hz中斷結束圖3.7 時間初始化時間初始化程序:void Time_Init(void)unsigned int uiTemp;uiTemp = *P_IOB_Dir;/設置IOB2為高電平
39、輸出uiTemp |= 0x0004;*P_IOB_Dir = uiTemp;uiTemp = *P_IOB_Attrib;uiTemp |= 0x0004;*P_IOB_Attrib = uiTemp;uiTemp = *P_IOB_Data;uiTemp |= 0x0004;*P_IOB_Data = uiTemp;uiTemp = *P_INT_Ctrl_New;/開2Hz、4Hz中斷uiTemp |= C_IRQ5_2Hz;uiTemp |= C_IRQ5_4Hz;*P_INT_Ctrl_New = uiTemp;3.4 語音播放的實現由于語音資源存儲在外廓的存儲器 SPR4096 上
40、面,要實現語音播放必須采用手動方式。需要獲得語音資源,關鍵解決語音資源的起始地址,然后通過讀取函數獲得語音資源。函數流程圖如圖3.8所示。 開始取得語音資源的開始地址與結束地址初始化放音,隊列與解碼Y判斷解碼隊列是否為空?N獲得語音資源是否播放結束?Y 語音播放結束語音資源解碼N N是否有鍵按下?Y結束放音清看門狗圖3.8 手動方式播放流程圖 手動方式播放程序:void PlaySnd_A2000(unsigned int SndIndex,unsigned int DAC_Channal)unsigned int uiStatus;/ 語音播放狀態unsigned int uiRet;/ 存
41、儲語音資源unsigned long ulCon_AddrHighest;/ 語音資源的最高字節地址unsigned long ulCon_AddrHigh;/ 語音資源的高字節地址unsigned long ulCon_AddrLow;/ 語音資源的低字節地址unsigned long ulCon_AddrLowest;/ 語音資源的最低字節地址unsigned long ulCon_EndAddr;/ 語音資源的末地址unsigned long ulCon_StartAddr;unsigned int uiKey;ulCon_AddrHighest = SP_SIOReadAByte(BA
42、SE_START_ADDRESS + SndIndex*12);/ 第一個播放文件地址ulCon_AddrHighest = ulCon_AddrHighest << 24;ulCon_AddrHigh = SP_SIOReadAByte(BASE_START_ADDRESS + SndIndex*12+1);ulCon_AddrHigh = ulCon_AddrHigh << 16;ulCon_AddrLow = SP_SIOReadAByte(BASE_START_ADDRESS + SndIndex*12+2);ulCon_AddrLow = ulCon_Addr
43、Low << 8;ulCon_AddrLowest = SP_SIOReadAByte(BASE_START_ADDRESS + SndIndex*12+3);ulCon_StartAddr = ulCon_AddrHighest | ulCon_AddrHigh/ 開始地址| ulCon_AddrLow | ulCon_AddrLowest;ulCon_AddrHighest = SP_SIOReadAByte(BASE_END_ADDRESS + SndIndex*12);ulCon_AddrHighest = ulCon_AddrHighest << 24;ulC
44、on_AddrHigh = SP_SIOReadAByte(BASE_END_ADDRESS + SndIndex*12+1);ulCon_AddrHigh = ulCon_AddrHigh << 16;ulCon_AddrLow = SP_SIOReadAByte(BASE_END_ADDRESS + SndIndex*12+2);ulCon_AddrLow = ulCon_AddrLow << 8;ulCon_AddrLowest = SP_SIOReadAByte(BASE_END_ADDRESS + SndIndex*12+3);ulCon_EndAddr =
45、ulCon_AddrHighest | ulCon_AddrHigh/ 結束地址| ulCon_AddrLow | ulCon_AddrLowest;SACM_A2000_Initial(0);/初始化放音SACM_A2000_InitQueue();/初始化隊列SACM_A2000_InitDecoder(DAC_Channal);/初始化解碼uiStatus = 1;/初始化放音狀態while(uiStatus)while(SACM_A2000_TestQueue() != 1)/解碼隊列是否為空if(ulCon_StartAddr >= ulCon_EndAddr)/文件結束?ui
46、Status = 0;/如果文件結束,結束放音break;uiRet = SP_SIOReadAWord(ulCon_StartAddr);/取得語音資源SACM_A2000_FillQueue(uiRet);/填充解碼隊列ulCon_StartAddr+;/移動資源指針ulCon_StartAddr+;if(uiStatus)/解碼SACM_A2000_Decoder();else/停止放音SACM_A2000_Stop();uiKey = Key_Get();if(uiKey != 0)uiStatus = 0;*(unsigned int *)0x7012 = 0x0001;3.5 更新
47、時間可以使用SPCE061A單片機的2Hz時基中斷,在 2Hz 時基中斷中調用更新函數,函數要作的就是換算好進位的關系。比如 60 秒進位 1 分鐘,然后秒清零。更新時間程序如下:void Time_Run(void)/更新時分if(g_uiSecond_half = 120)g_uiSecond_half = 0;uiMinite_L+;if(uiMinite_L = 10)uiMinite_L = 0;uiMinite_H+;if(uiMinite_H = 6)uiMinite_H = 0;uiHour_L+;if(uiHour_H = 2)&&(uiHour_L = 4)uiHour_H = 0;uiHour_L = 0;uiDay_L+;elseif(uiHour_L = 10)uiHour_L = 0;uiHour_H+;3.6 設置時間在設置時間時出現動態閃爍效果,這個問題使用 4Hz 的時基
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石子廠合資協議書
- 棚屋區回遷協議書
- 大學訂單班協議書
- 小米代加工協議書
- 合同終止和協議書
- 車保險轉讓協議書
- 工資代還款協議書
- 多方簽戰略協議書
- 好朋友吵架協議書
- 學校研究生協議書
- 數字化電力系統轉型-洞察闡釋
- 小學四年級下冊語文期末考試試卷含答案共6套
- MOOC 中國電影經典影片鑒賞-北京師范大學 中國大學慕課答案
- 醫院小型壓力蒸汽滅菌器的使用及管理
- 中藥學電子版教材
- 課件亞洲與非洲音樂 課件-2022-2023學年高中音樂人音版(2019) 必修 音樂鑒賞
- 導數在經濟中的應用課件
- GB∕T 33217-2016 沖壓件毛刺高度
- 六一兒童節主題通用ppt模板
- 基于“鄂爾多斯婚禮”談民族舞蹈及音樂的傳承發揚
- 公司管理制度:格林美管理手冊
評論
0/150
提交評論