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

正文內(nèi)容

基于單片機(jī)的sd卡錄音筆設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-07-24 19:54 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ;(2)在 File 文本框內(nèi)輸入工程名稱(chēng);(3)在 Location 文本框內(nèi)輸入工程文件的路徑;(4)在 Select Body Here 區(qū)域內(nèi)選擇 Probe;(5)單擊[OK],創(chuàng)建工程。圖 創(chuàng)建工程對(duì)話(huà)窗口 開(kāi)發(fā)操作過(guò)程從[開(kāi)始 ]菜單內(nèi)啟動(dòng)工具;選擇[File]→[Open Project],在‘打開(kāi)’對(duì)話(huà)框內(nèi)選擇所要打開(kāi)的工程;窗口(工作區(qū)窗口)顯示在工具的左半邊,在這個(gè)窗口內(nèi),用戶(hù)可以看到當(dāng)前工程所包含的所有文件;13選擇[Build]→[Rebuild All],進(jìn)行源文件的編譯和鏈接。 編譯過(guò)程里的語(yǔ)法錯(cuò)誤顯示在 Output 窗口內(nèi);選擇[Build]→[Start Debug]→[Download],把程序加載到 RAM,然后,用戶(hù)可以用 Debug 菜單內(nèi)所提供的調(diào)試命令來(lái)優(yōu)化和運(yùn)行程序。選擇[Build]→[Start Debug]→[Go],在調(diào)試器內(nèi)運(yùn)行程序。143 錄音筆總體設(shè)計(jì)方案及硬件設(shè)計(jì) 總體設(shè)計(jì)方案 硬件設(shè)計(jì)總體框圖系統(tǒng)采用 SPCE061A 做為主控制器,使用其通用 I/O 口控制 SD 卡設(shè)備,實(shí)現(xiàn)存儲(chǔ)器擴(kuò)展;利用電路板上的三個(gè)按鍵對(duì)錄放音進(jìn)行控制;利用SPCE061A 帶有 AGC 的專(zhuān)用 A/D 轉(zhuǎn)換通道做為音頻輸入,完成語(yǔ)音錄制功能;利用 SPCE061A 的 D/A 進(jìn)行音頻輸出,實(shí)現(xiàn)語(yǔ)音播放功能。圖 為硬件總體框圖。 輸入指令麥克風(fēng)揚(yáng)聲器電源線錄音放音 電源SD 卡SPCE061A 儲(chǔ)存或刪除數(shù)字信號(hào)提取數(shù)字信號(hào)按鍵鍵盤(pán)圖 硬件總體框圖15 系統(tǒng)軟件設(shè)計(jì)架構(gòu) 軟件系統(tǒng)包括以下部分:主程序:完成系統(tǒng)的初始化,處理按鍵信息,并根據(jù)按鍵,在語(yǔ)音文件操作管理程序的配合下,創(chuàng)建語(yǔ)音文件進(jìn)行錄音,或控制讀取語(yǔ)音文件進(jìn)行回放。按鍵掃描程序:完成對(duì) IOA 口低八位的 18 按鍵進(jìn)行掃描,并完成去抖、判斷長(zhǎng)/短按鍵等功能。SD 卡驅(qū)動(dòng)程序:該部分完成對(duì) SD 卡的初始化、得到卡的容量信息、讀寫(xiě)操作、擦除操作等。語(yǔ)音文件操作管理程序:該部分完成對(duì)多段錄音的管理。每增加一段錄音,程序會(huì)將起始地址、終止地址等相關(guān)信息保存,以便可以回放。錄/放音程序:實(shí)現(xiàn)對(duì) A/D 采樣數(shù)據(jù)的編碼和存儲(chǔ),以及從 SD 卡讀取錄音數(shù)據(jù)并解碼然后送至 D/A 播放等操作。16 系統(tǒng)硬件設(shè)計(jì) 系統(tǒng)硬件連接實(shí)物圖 系統(tǒng)主要由 SPCE061A 單片機(jī),麥克風(fēng),揚(yáng)聲器,電源及儲(chǔ)存器構(gòu)成。SPCE061A 單片機(jī)控制板作為整個(gè)系統(tǒng)的主控板,對(duì)麥克風(fēng)采集來(lái)的聲音信號(hào)進(jìn)行數(shù)字處理并儲(chǔ)存號(hào)功能。圖 為硬件連接實(shí)物圖。 系統(tǒng)硬件連接實(shí)物圖 SPCE061A 最小系統(tǒng)本設(shè)計(jì)選用的單片機(jī)模塊為 SPCE061A 單片機(jī)模塊,該模塊包括SPCE061A 芯片(MCU)、片內(nèi) FLASH 和其外圍的基本模塊。外圍模塊有:電機(jī)驅(qū)動(dòng)電路板、鎖相環(huán)外圍電路(PLL)、復(fù)位電路( RESET)等。17SPCE061A 的主控芯片,負(fù)責(zé)構(gòu)建語(yǔ)音錄放的數(shù)據(jù)結(jié)構(gòu),并在單片機(jī)內(nèi)部 Flash 中保存有語(yǔ)音內(nèi)容和相關(guān)語(yǔ)音信息。SPCE061A 控制端口輸出控制信息,并控制喇叭輸出聲音信息。實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的控制。通過(guò)本系統(tǒng)中的音頻輸入電路和 MIC,可以采集語(yǔ)音信號(hào)并處理。圖 為 SPCE061A 最小系統(tǒng)圖。圖 SPCE061A 最小系統(tǒng)圖18 按鍵電路 本系統(tǒng)使用三個(gè)按鍵完成錄放音控制。圖 為按鍵電路圖。Key1 為“下一曲”鍵,Key2 為“上一曲” 鍵,Key3 為“錄音鍵” 。圖 按鍵電路圖 音頻輸出電路 SPCE061A 內(nèi)置 2 路 10 位精度的 DAC,只需要外接功放電路即可完成語(yǔ)音的播放。電路中 SPY0030 是凌陽(yáng)公司一款音頻放大芯片。它和 LM386相比,LM386 工作電壓需在 4V 以上, SPY0030 僅需 即可工作(兩顆電池即可工作);LM386 輸出功率 100mW 以下, SPY0030 約 700mW。圖 為音頻輸出電路圖。圖 音頻輸出電路圖19 SD 卡模組電路在本系統(tǒng)中,SPCE061A 通過(guò) SPI 總線實(shí)現(xiàn)對(duì) SD 卡設(shè)備的訪問(wèn)。SD 卡模組同時(shí)提供卡插入檢測(cè)和寫(xiě)保護(hù)檢測(cè)接口。圖 為 SD 卡模組電路圖。圖 SD 卡模組電路圖204 系統(tǒng)軟件設(shè)計(jì) 主程序設(shè)計(jì)主程序采用的是匯編語(yǔ)言和 C 語(yǔ)言混合編程。主程序流程圖如圖 。 系統(tǒng)初始化 檢測(cè) SD 卡是否插入?否 檢查 SD 卡是否寫(xiě)保護(hù)?置寫(xiě)保護(hù)標(biāo)志播放“SD 卡寫(xiě)保護(hù)”是否初始化 SD 卡按鍵處理系統(tǒng)狀態(tài)處理是播放“注意 SD 卡沒(méi)有插入” 檢測(cè) SD 卡是否插入?否是播放“就緒”語(yǔ)音提示程序開(kāi)始圖 主程序流程圖21 主程序完成系統(tǒng)初始化后檢測(cè) SD 卡是否插入以及是否有寫(xiě)保護(hù),并有相應(yīng)的語(yǔ)音提示,告知用戶(hù)當(dāng)前的系統(tǒng)狀態(tài)。如果 SD 卡正確插入,則系統(tǒng)根據(jù)用戶(hù)的不同按鍵進(jìn)行錄/放音控制。同時(shí),在循環(huán)中對(duì)系統(tǒng)當(dāng)前的狀態(tài)進(jìn)行檢測(cè),控制系統(tǒng)在錄制語(yǔ)音時(shí)不至于超出存儲(chǔ)器容量限制,或控制系統(tǒng)在放音時(shí)播放至文件尾部自動(dòng)停止播放。部分程序如下:SACM_DVR1600_Initial()。 // 語(yǔ)音初始化if(0 == SD_ChkCard()) // 檢測(cè)卡是否插入PlaySnd(VOICE_ATTENTION, DAC1 + DAC2)。PlaySnd(VOICE_SDCARDNOTINSERT, DAC1 + DAC2)。while(0 == SD_ChkCard())。 // 等待卡插入if(1 == SD_ChkCardWP()) // 檢測(cè)卡是否有寫(xiě)保護(hù)WriteProtect = 1。elseFS_Init()。 // 沒(méi)有寫(xiě)保護(hù),執(zhí)行初始化操作PlaySnd(VOICE_READY, DAC1 + DAC2)。 // 播放就緒//while(1)KeyProcess()。 // 按鍵處理StatusProcess()。 // 系統(tǒng)狀態(tài)處理SACM_DVR1600_ServiceLoop()。 // 錄/放音服務(wù)22 按鍵處理程序流程 按鍵處理程序中,當(dāng)檢測(cè)到有 SD 卡寫(xiě)保護(hù)時(shí),會(huì)播放“卡有寫(xiě)保護(hù)” 的提示音,對(duì)按鍵不做處理。按鍵處理流程圖如圖 。初始化 判斷是否有寫(xiě)保護(hù)標(biāo)志?否 判斷按鍵Key3 錄音鍵是Key2 上一曲鍵 Key1 下一曲鍵返回開(kāi)始圖 按鍵處理流程圖部分程序如下:Key = KeyScan_GetKey(amp。KeyType)。if(1 == WriteProtect) // 卡有寫(xiě)保護(hù),拒絕按鍵操作if((C_SReleaseKeyState == KeyType) || (C_LReleaseKeyState == KeyType))return。 switch(Key)23 當(dāng)按下錄音鍵時(shí),若為短按鍵且 SD 卡未滿(mǎn),提示錄音開(kāi)始并置錄音標(biāo)志,開(kāi)始錄音?!颁浺簟卑存I處理程序的流程圖如圖 所示。圖 正在播放? 短按鍵?是是停止播放,關(guān)閉讀取 SD 卡系統(tǒng)狀態(tài)置空閑 SD 卡已滿(mǎn)?否是否 系統(tǒng)空閑?否啟動(dòng)寫(xiě)入 SD 卡,開(kāi)始錄音系統(tǒng)狀態(tài)置錄音否是 正在錄音?結(jié)束錄音,錄音收尾是否開(kāi)始返回錄音鍵流程圖部分程序如下:case C_Record: // Recordif(C_SReleaseKeyState == KeyType) // 短按鍵,錄/ 放音控制if(PLAY == Status)24SACM_DVR1600_Stop()。 // 如果正在放音,則先停止播放FS_CloseOpenFile()。Status = IDLE。if(IDLE == Status)if((g_FileNum = FS_MAX_FILENUM) || (FS_GetUnusedSecNum() = 0)) // 文件已滿(mǎn),退出PlaySnd(VOICE_DANG, DAC1 + DAC2)。Status = RECORD。else if(RECORD == Status)SACM_DVR1600_Stop()。while(RECORD == Status) // 等待完成錄音收尾工作SACM_DVR1600_ServiceLoop()。PlaySnd(VOICE_OVER, DAC1 + DAC2)。 25 當(dāng)按下上一曲鍵,短按鍵(小于一秒)播放上一曲,長(zhǎng)按鍵清除 SD 卡上所有錄音?!?上一曲” 按鍵處理程序的流程圖如圖 。 正在錄音? 正在播放?是 判斷是否有文件?結(jié)束放音是否 短按鍵?否否是 長(zhǎng)按鍵?是 清除 SD 卡內(nèi)所有文件系統(tǒng)狀態(tài)置空閑讀取語(yǔ)音段,啟動(dòng)聲音播放上一曲系統(tǒng)狀態(tài)置播放否是否開(kāi)始返回圖 上一曲鍵流程圖部分程序如下: if(PLAY == Status) // 如果正在放音,則先停止播放26SACM_DVR1600_Stop()。FS_CloseOpenFile()。else if(RECORD == Status) // 如果正在錄音則不處理if(C_LReleaseKeyState == KeyType)//長(zhǎng)按鍵,擦除所有語(yǔ)音段FS_Init()。Status = IDLE。else if(C_SReleaseKeyState == KeyType)//短按鍵播放上一曲當(dāng)按下下一曲鍵,短按鍵(小于一秒)播放下一曲,長(zhǎng)按鍵停止放音?!跋乱磺卑存I處理程序的流程圖如圖 。 正在錄音?當(dāng)前有錄音片段?是是停止播放 正在播放?否否 短按鍵?否 長(zhǎng)按鍵?否系統(tǒng)狀態(tài)置空閑是啟動(dòng)聲音播放下一曲系統(tǒng)狀態(tài)置播放否是是開(kāi)始返回圖 下一曲鍵流程圖27部分程序如下:case C_Next: // Play Nextif((C_SReleaseKeyState != KeyType) amp。amp。 (C_LReleaseKeyState != KeyType))if(g_FileNum 0)if(PLAY == Status) //如果正在放音,則先停止播放SACM_DVR1600_Stop()。FS_CloseOpenFile()。else if(RECORD == Status) // 如果正在錄音則不處理if(C_LReleaseKeyState == KeyType)//長(zhǎng)按鍵,停止當(dāng)前播放Status = IDLE。else if(C_SReleaseKeyState == KeyType)// 短按鍵,播放下一曲系統(tǒng)狀態(tài)處理程序主要完成在錄音時(shí)判斷是否超出 SD 卡容量限制,或者在放音時(shí)當(dāng)前語(yǔ)音是否播放完畢。系統(tǒng)狀態(tài)流程圖如圖 。 檢查 SD 卡是否已滿(mǎn)? 是否正在錄音? 播放是否結(jié)束?停止錄音系統(tǒng)狀態(tài)置空閑 是否正在播放?停止讀取系統(tǒng)狀態(tài)置空閑是否 否否是是是否返回開(kāi)始圖 系統(tǒng)狀態(tài)處理流程圖28部分程序如下:switch(Status)case RECORD:if(FS_GetUnusedSecNum() 1) // 檢測(cè)是否超出 SD 卡容量范圍SACM_DVR1600_Stop()。 Status = IDLE。case PLAY:if(FS_CheckFileEnd()) // 檢測(cè)當(dāng)前語(yǔ)音是否播放完畢SACM_DVR1600_Stop()。FS_CloseOpenFile()。Status = IDLE。 按鍵掃描程序系統(tǒng)使用 1024Hz 時(shí)基中斷對(duì) IOA 口低八位進(jìn)行掃描,并進(jìn)行去抖、長(zhǎng)短按鍵判斷等工作。時(shí)基中斷中的按鍵掃描服務(wù)程序采用了狀態(tài)機(jī)的形式對(duì)按鍵狀態(tài)進(jìn)行判斷。使用變量 KeyScanState 記錄當(dāng)前按鍵的掃描狀態(tài),并對(duì)掃描狀態(tài)進(jìn)行計(jì)時(shí),通過(guò)判斷計(jì)時(shí)變量 KeyCount 的值來(lái)判斷按鍵的類(lèi)型 KeyState(短按鍵、長(zhǎng)按鍵等)。 通常狀況下,沒(méi)有鍵按下,KeyScanState 處于 First 狀態(tài)。當(dāng)有鍵被按下后,KeyScanState 便進(jìn)入 Debounce 去抖狀態(tài),此時(shí) KeyCount 開(kāi)始每 1/102429秒計(jì)時(shí)累加一次。當(dāng) KeyCount 超過(guò)去抖規(guī)定的時(shí)間后(通常為幾十毫秒),便進(jìn)入 Repeat 狀態(tài),這時(shí)候可以認(rèn)為一個(gè)短按鍵被按下(KeyState = SKey )。此時(shí)如果檢測(cè)到鍵抬起,則進(jìn)入 ReleaseDebounce 狀態(tài),對(duì)按鍵抬起進(jìn)行去抖,去抖成功后則可以認(rèn)為形成了一個(gè)抬起的短按鍵(KeyState = SKeyRelease)。相反,如果在 Repeat 狀態(tài)下超過(guò)了一個(gè)長(zhǎng)按鍵規(guī)定的時(shí)間(1 秒)后按鍵仍未抬起,則認(rèn)為一個(gè)長(zhǎng)按鍵被按下(KeyState = LKey),此時(shí)進(jìn)入 AfterLKey 狀態(tài),無(wú)需再進(jìn)行計(jì)時(shí)操作,只需等待按鍵抬起即可。當(dāng)
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1