freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的sd卡錄音筆設(shè)計(jì)與實(shí)現(xiàn)_畢業(yè)設(shè)計(jì)論文-閱讀頁(yè)

2025-03-18 10:23本頁(yè)面
  

【正文】 D 卡返回的數(shù)據(jù)。而本系統(tǒng)中,需要令 SD 卡工作于 SPI 模式。 Length:R2 push r1, r5 to [sp] push r2 to [sp] push r1 to [sp] call _FS_ReadingFile sp += 2 pop r1, r5 from [sp] RETF。 Length:R2 push r1, r5 to [sp] push r2 to [sp] push r1 to [sp] call _FS_WritingFile sp += 2 pop r1, r5 from [sp] RETF。 SD 卡進(jìn)入 SPI 模式后,用戶可以通過(guò)調(diào)用SD_SendCmd()函數(shù)發(fā)送命令對(duì) SD 卡進(jìn)行控制。但是,在語(yǔ)音錄制過(guò)程中,編碼器是以幀為單位向SD 卡內(nèi)寫(xiě)入數(shù)據(jù)的,而幀的長(zhǎng)度并不剛好是 Block Size個(gè)。 為了解決這個(gè)矛盾,需要首先來(lái)看一下 SD 卡 Block讀寫(xiě)的過(guò)程。 首先,單片機(jī)發(fā)送 CMD17 命令以及希望讀取的 Block的地址參數(shù)給 SD 卡,然后 SD 卡返回一個(gè) byte 的響應(yīng)數(shù)據(jù),告知單片機(jī)該操作是否可以正常進(jìn)行。 讀 Block 操作: 1)發(fā)送 CMD17,啟動(dòng)讀 Block 操作; 2)接收數(shù)據(jù),直至接收完畢 Block Size 個(gè)數(shù)據(jù); 3)接收 CRC 校驗(yàn),結(jié)束讀 Block 操作。 首先單片機(jī)發(fā)送 CMD24 命令以及希望寫(xiě)入的 Block的地址參數(shù)給 SD 卡,然后, SD 卡返回一個(gè) byte 的響應(yīng)數(shù)據(jù),告知單片機(jī)該操作是否可以正常進(jìn)行。 .public _SPI_SendByte _SPI_SendByte: .proc r1 = sp + 3 r1 = [r1] r2 = 8 ?L_SPI_SendByte_Lop: test r1, 0x0080 jz ?L_SPI_SendByte_Bit8_0 SPI_DOUT_SET jmp ?L_SPI_SendByte_Bit8_End ?L_SPI_SendByte_Bit8_0: SPI_DOUT_CLR ?L_SPI_SendByte_Bit8_End: SPI_SCK_CLR SPI_SCK_SET r1 = r1 lsl 1 r2 = 1 jnz ?L_SPI_SendByte_Lop retf .endp 51 最后,單片機(jī)發(fā)送 CRC 校驗(yàn),并等待 SD 卡完成這些數(shù)據(jù)的燒寫(xiě)。 .public _SPI_RecByte _SPI_RecByte: .proc r1 = 0 r2 = 8 ?L_SPI_RecByte_Loop: SPI_SCK_CLR SPI_SCK_SET r1 = r1 lsl 1 r3 = [SD_BUS_Data] test r3, SD_BUS_Din jz ?L_SPI_RecByte_NoAdd r1 += 1 ?L_SPI_RecByte_NoAdd: r2 = 1 jnz ?L_SPI_RecByte_Loop retf .endp 53 語(yǔ)音文件操作管理程序 語(yǔ)音文件操作管理程序主要完成對(duì)語(yǔ)音文件的管理,以及在錄 /放音的過(guò)程中對(duì)寫(xiě)入 SD 卡的數(shù)據(jù)進(jìn)行控制,保證數(shù)據(jù)按照 Block 為單位寫(xiě)入。 // 語(yǔ)音文件的起始Block 地址 unsigned long int EndSec。 // 語(yǔ)音文件在最后一個(gè)Block 中的使用量 } FileList。 // 文件索引表 54 語(yǔ)音文件操作管理相關(guān)函數(shù)中通過(guò)定義一個(gè)全局變量 CurOffset 存儲(chǔ)當(dāng)前 Block 已經(jīng)寫(xiě)入的數(shù)量,以便在寫(xiě)入(讀?。┬碌臄?shù)據(jù)時(shí)對(duì)是否超出 Block 進(jìn) 行判斷。同時(shí),程序中規(guī)定語(yǔ)音文件在存儲(chǔ)的時(shí)候如果最后一個(gè) Block 沒(méi)有使用完,則下一段語(yǔ)音從下一個(gè) Block 的起始地址開(kāi)始存儲(chǔ)。壓縮算法中 SACMA1600、 SACMS5SACMS480/S7 SACMS200主要是用來(lái)放音,可用于語(yǔ)音提示,而 DVR1600則用來(lái)錄 /放音。 Len = 1。 SD_WriteFinished()。 CurFileEndSec = CurFileSec。 CurOffset = Len i。 SD_WriteNewBlock(CurFileSec)。Buf[i])。 CurOffset += Len。 Len = 1。 SD_ReadFinished()。 i = SD_BLOCKSIZE CurOffset。 i = 1。 SD_ReadingBlockData((unsigned long int)CurOffset, (unsigned char *)amp。 else SD_ReadingBlockData((unsigned long int)Len, (unsigned char *)Buf)。 57 5 系統(tǒng)測(cè)試及性能分析 系統(tǒng)的硬件部分和軟件部分完成以后,應(yīng)對(duì)系統(tǒng)進(jìn)行嚴(yán)格的測(cè)試及性能分析。 系統(tǒng)測(cè)試流程圖如 圖 。 步驟 1:接通電源,用萬(wàn)用表測(cè)量喇叭的正負(fù)極看是否有電壓。 現(xiàn)象 1:萬(wàn)用表可以測(cè)量出電壓。 現(xiàn)象 2:程序下載并運(yùn)行后,聲音能正常播放。 程序下載及運(yùn)行 在程序下載前,先按照硬件連接圖 連接好硬件,然后把 3 節(jié)五號(hào)電池裝入電池盒并把電源線與系統(tǒng)連接。打開(kāi)電池盒開(kāi)關(guān), POWER 指示燈和 LCD 液晶顯示屏上的電源指示燈都被點(diǎn)亮,證明系統(tǒng)連接正常,可以開(kāi)始下載。選擇“ USE ICE”如 圖 。下載進(jìn)程如 圖 。這時(shí)程序下載完成,打開(kāi)電池盒開(kāi)關(guān)運(yùn)行。此時(shí),用戶需要去除 SD 卡寫(xiě)保護(hù),并重新運(yùn)行程序; 如果 SD 卡正常插入并且沒(méi)有寫(xiě)保護(hù),等待 SD 卡初始化成功后會(huì)有 “ 就緒 ” 的提示音。再次按下 Key3 鍵結(jié)束本次錄音,此時(shí),會(huì)有“ 結(jié)束錄音 ” 的提示音; 停止錄音后,按下 Key2 播放上一段錄音,按下 Key1播放下一段錄音; 61 長(zhǎng)按 Key2 鍵將清除所有已錄語(yǔ)音,此時(shí)會(huì)有 “SD 卡已擦除 ” 的提示音; 長(zhǎng)按 Key1 鍵將停止放音 。 結(jié)論 本課題是基于單片機(jī)的 SD 卡錄音筆設(shè)計(jì)與實(shí)現(xiàn),根據(jù)課題的要求設(shè)計(jì)了 SD 卡數(shù)碼錄音筆,在設(shè)計(jì)中主要完成了以下幾個(gè)方面的內(nèi)容: 系統(tǒng)硬件結(jié)構(gòu)設(shè)計(jì): SPCE061A 開(kāi) 發(fā)板, SD 卡模組。 在本課題中,用 SPCE061A 開(kāi)發(fā)板上的 MIC 作為語(yǔ)音信號(hào)采集器,喇叭作語(yǔ)音播放器,通過(guò)單片機(jī)內(nèi)部存儲(chǔ)器并調(diào)用語(yǔ)音模塊對(duì)輸入的命令進(jìn)行處理,完成錄音的過(guò)程。這些問(wèn)題可以通過(guò)外接 SPR 模組擴(kuò)充系統(tǒng)存儲(chǔ)空間來(lái)解決。 SD 卡錄音筆的研究和開(kāi)發(fā)將極大的提高人機(jī)交互質(zhì)量,因而我相信在不久的將來(lái) SD 卡數(shù)碼錄音筆會(huì)得到充分的發(fā)展和應(yīng)用。一直以來(lái),邢老師不但為我們創(chuàng)造了良好的學(xué)習(xí)氛圍而且給我們提供了畢業(yè)設(shè)計(jì)的設(shè)備。在此,向邢老師致以深深的謝意。同時(shí)我也真誠(chéng)的感謝我的班級(jí)導(dǎo)師邢志強(qiáng)老師,從剛進(jìn)大學(xué)的毛頭小子成長(zhǎng)到現(xiàn)在,都得到了邢老師熱情的幫助和無(wú)微不至關(guān)懷。在與他們共同學(xué)習(xí),共同生活的四年里,與他們的交流和討論,擴(kuò)展了我的思路,對(duì)論文的完成頗有益處。 64 參考文獻(xiàn) [1] 姜志玲 .用凌陽(yáng)單片機(jī)實(shí)現(xiàn)多路數(shù)據(jù)采集與傳輸系統(tǒng) [J]. 西華大學(xué)學(xué)報(bào) .2021 [2] 王素珍,田振清 .用 ISP 實(shí)現(xiàn)對(duì) ISD25120 語(yǔ)音芯片的錄放音控制 [J].電聲技術(shù) .2021 [3] 林陽(yáng) .凌陽(yáng) 16位單片機(jī)與其它主流單片機(jī)的比較 [J]. 電子世界 . 2021 [4] 王竹便 .錄音技術(shù)及技巧淺議 [J].科技情報(bào)開(kāi)發(fā)與經(jīng)濟(jì) .2021 [5] 孟憲超 . 數(shù)碼錄音筆原理及應(yīng)用 [J].信息時(shí)代導(dǎo)刊 .2021 [6] 薛駒義,張彥斌等 .凌陽(yáng) 16 位單片機(jī)原理及應(yīng)用 [M].北京:北京航空航天大學(xué)出版社, 2021 [7] 羅亞非 等編 .凌陽(yáng) 16 位單片機(jī)應(yīng)用基礎(chǔ) [M].北京 :北京航空航天大學(xué)出版社, 2021 65 [8] Digital Voice Recorder Design.[DB/OL].Sunplus Technology, ,2021 Version [9] John [M].北京:計(jì)量出版社,1995 [10] 鄧元慶 .數(shù)字電路與邏輯設(shè)計(jì) [M].北京:電子工業(yè)出版社, 2021 [11] 胡隆,許靜波 .錄音、調(diào)音與音響技術(shù) [M].北京:北京工業(yè)大學(xué)出版社,第 1 版 [12] 王宏民 .錄音與調(diào)音 [M].北京:中國(guó)廣播電視出版社, 第 1 版 [13] 楊行峻 ,遲惠生 .語(yǔ)音信號(hào)數(shù)字處理 [M].北京:電子工業(yè)出版社,第 1 版 [14] One based on monolithic integrated circuit39。 void StatusProcess()。 // 系統(tǒng)狀態(tài), SysStatus 定義在 中 int SpeechIndex。 //================================================= // 語(yǔ)法格式: int main(void) // 實(shí)現(xiàn)功能: 主函數(shù) //================================================= int main() { 68 SpeechIndex = 0。 Status = IDLE。 SD_IOInit()。 SetINTStatus(C_IRQ4_1KHz)。 SACM_DVR1600_Initial()。 PlaySnd(VOICE_SDCARDNOTINSERT, DAC1 + DAC2)。 // 等待卡插入 } if(1 == SD_ChkCardWP()) // 檢測(cè)卡是否有寫(xiě)保護(hù) { WriteProtect = 1。 PlaySnd(VOICE_SDCARDWRITEPROTECT, DAC1 + DAC2)。 // 沒(méi)有寫(xiě)保護(hù),執(zhí)行初始化操作 PlaySnd(VOICE_READY, DAC1 + DAC2)。 // 按鍵處理 StatusProcess()。 // 錄 /放音服務(wù) } return 0。 Status = IDLE。 case PLAY: if(FS_CheckFileEnd()) // 檢測(cè)當(dāng)前語(yǔ)音是否播放完畢 72 { SACM_DVR1600_Stop()。 Status = IDLE。 } } //================================================= // 語(yǔ)法格式: int KeyProcess(void) // 實(shí)現(xiàn)功能: 按鍵處理函數(shù) //================================================= void KeyProcess() 73 { unsigned int Key, KeyType。KeyType)。 } return。 // 如果正在放音,則先停止播放 FS_CloseOpenFile()。 } if(IDLE == Status) { if((g_FileNum = FS_MAX_FILENUM) || (FS_GetUnusedSecNum() = 0)) { // 文件已滿,退出 PlaySnd(VOICE_DANG, DAC1 + DAC2)。 } PlaySnd(VOICE_START, DAC1 + DAC2)。 FS_WriteFile(0)。 SACM_DVR1600_Rec(RceMonitorOff, ADC_Channel, BIT_RATE_24K)。 } else if(RECORD == Status) { SACM_DVR1600_Stop()。 76 PlaySnd(VOICE_OVER, DAC1 + DAC2)。 } } break。amp。 if(g_FileNum 0) { if(PLAY == Status) // 如果正在放音,則先停止播放 { SACM_DVR1600_Stop()。 } 77 else if(RECORD == Status) // 如果正在錄音則不處理 { break。 PlaySnd(VOICE_SDCARDERASED, DAC1 + DAC
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1