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

正文內(nèi)容

基于單片機的sd卡錄音筆設(shè)計與實現(xiàn)_畢業(yè)設(shè)計論文-wenkub.com

2025-02-22 10:23 本頁面
   

【正文】 PlaySnd(VOICE_SDCARDERASED, DAC1 + DAC2)。 if(g_FileNum 0) { if(PLAY == Status) // 如果正在放音,則先停止播放 { SACM_DVR1600_Stop()。 } } break。 } else if(RECORD == Status) { SACM_DVR1600_Stop()。 FS_WriteFile(0)。 } if(IDLE == Status) { if((g_FileNum = FS_MAX_FILENUM) || (FS_GetUnusedSecNum() = 0)) { // 文件已滿,退出 PlaySnd(VOICE_DANG, DAC1 + DAC2)。 } return。 } } //================================================= // 語法格式: int KeyProcess(void) // 實現(xiàn)功能: 按鍵處理函數(shù) //================================================= void KeyProcess() 73 { unsigned int Key, KeyType。 case PLAY: if(FS_CheckFileEnd()) // 檢測當前語音是否播放完畢 72 { SACM_DVR1600_Stop()。 // 錄 /放音服務(wù) } return 0。 // 沒有寫保護,執(zhí)行初始化操作 PlaySnd(VOICE_READY, DAC1 + DAC2)。 // 等待卡插入 } if(1 == SD_ChkCardWP()) // 檢測卡是否有寫保護 { WriteProtect = 1。 SACM_DVR1600_Initial()。 SD_IOInit()。 //================================================= // 語法格式: int main(void) // 實現(xiàn)功能: 主函數(shù) //================================================= int main() { 68 SpeechIndex = 0。 void StatusProcess()。在與他們共同學習,共同生活的四年里,與他們的交流和討論,擴展了我的思路,對論文的完成頗有益處。在此,向邢老師致以深深的謝意。 SD 卡錄音筆的研究和開發(fā)將極大的提高人機交互質(zhì)量,因而我相信在不久的將來 SD 卡數(shù)碼錄音筆會得到充分的發(fā)展和應(yīng)用。 在本課題中,用 SPCE061A 開發(fā)板上的 MIC 作為語音信號采集器,喇叭作語音播放器,通過單片機內(nèi)部存儲器并調(diào)用語音模塊對輸入的命令進行處理,完成錄音的過程。再次按下 Key3 鍵結(jié)束本次錄音,此時,會有“ 結(jié)束錄音 ” 的提示音; 停止錄音后,按下 Key2 播放上一段錄音,按下 Key1播放下一段錄音; 61 長按 Key2 鍵將清除所有已錄語音,此時會有 “SD 卡已擦除 ” 的提示音; 長按 Key1 鍵將停止放音 。這時程序下載完成,打開電池盒開關(guān)運行。選擇“ USE ICE”如 圖 。 程序下載及運行 在程序下載前,先按照硬件連接圖 連接好硬件,然后把 3 節(jié)五號電池裝入電池盒并把電源線與系統(tǒng)連接。 現(xiàn)象 1:萬用表可以測量出電壓。 系統(tǒng)測試流程圖如 圖 。 else SD_ReadingBlockData((unsigned long int)Len, (unsigned char *)Buf)。 i = 1。 SD_ReadFinished()。 CurOffset += Len。 SD_WriteNewBlock(CurFileSec)。 CurFileEndSec = CurFileSec。 Len = 1。同時,程序中規(guī)定語音文件在存儲的時候如果最后一個 Block 沒有使用完,則下一段語音從下一個 Block 的起始地址開始存儲。 // 語音文件在最后一個Block 中的使用量 } FileList。 .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 語音文件操作管理程序 語音文件操作管理程序主要完成對語音文件的管理,以及在錄 /放音的過程中對寫入 SD 卡的數(shù)據(jù)進行控制,保證數(shù)據(jù)按照 Block 為單位寫入。 首先單片機發(fā)送 CMD24 命令以及希望寫入的 Block的地址參數(shù)給 SD 卡,然后, SD 卡返回一個 byte 的響應(yīng)數(shù)據(jù),告知單片機該操作是否可以正常進行。 首先,單片機發(fā)送 CMD17 命令以及希望讀取的 Block的地址參數(shù)給 SD 卡,然后 SD 卡返回一個 byte 的響應(yīng)數(shù)據(jù),告知單片機該操作是否可以正常進行。但是,在語音錄制過程中,編碼器是以幀為單位向SD 卡內(nèi)寫入數(shù)據(jù)的,而幀的長度并不剛好是 Block Size個。 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。而本系統(tǒng)中,需要令 SD 卡工作于 SPI 模式。 F_USER_DVR1600_GetData 函數(shù)主要完成從用戶存儲器讀取語音資料至緩沖區(qū)的作用。 } return(Key)。 else Key = ui_KeyID。 endif 45 功 能:該函數(shù)將返回當前按鍵的鍵值,并通過入口參數(shù)KeyType 返回該按鍵的類型。= ~KEY_PORT_MASK。 unsigned int KeyScan_GetKey(unsigned int *KeyType)。當按鍵抬起時,則從 AfterLKey 狀態(tài) 44 進入 ReleaseDebounce 狀態(tài),去抖后得到一個抬起的長按鍵( KeyState = LKeyRelease)。當有鍵被按下后, KeyScanState 便進入 Debounce去抖狀態(tài),此時 KeyCount 開始每 1/1024 秒計時累加一次。 FS_CloseOpenFile()。 時基中斷中的按鍵掃描服務(wù)程序采用了狀態(tài)機的形式對按鍵狀態(tài)進行判斷。 (C_LReleaseKeyState != KeyType)) if(g_FileNum 0) if(PLAY == Status) //如果正在放音,則先停止播放 SACM_DVR1600_Stop()。 else if(C_SReleaseKeyState == KeyType)// 短按鍵播放上一曲 40 圖 下一曲鍵流程圖 部分程序如下 : 正在錄音? 當前有錄音片段? 是 是 停止播放 正在播放? 否 否 短按鍵? 否 長按鍵? 否 系統(tǒng)狀態(tài)置空閑 是 啟動聲音播放下一曲 系 統(tǒng)狀態(tài)置播放 否 是 是 開始 返回 41 系統(tǒng)狀態(tài)處理程序主要完成在錄音時判斷是否超出SD 卡容量限制,或者在放音時當前語音是否播放完畢。 SACM_DVR1600_Stop()。 37 當按下上一曲鍵,短按鍵(小于一秒)播放上一曲,長按鍵清除 SD 卡上所有錄音。 Status = RECORD。圖 錄音鍵流程圖 部分程序如下 : 正在播放? 短按鍵? 是 是 停止播放,關(guān)閉讀取 SD 卡 系統(tǒng)狀態(tài)置空閑 SD 卡已 滿 ? 否 是 否 系統(tǒng)空閑? 否 啟動寫入 SD 卡,開始錄音 系統(tǒng)狀態(tài)置錄音 否 是 正在錄音? 結(jié)束錄音,錄音收尾 是 否 開始 返回 36 case C_Record: // Record if(C_SReleaseKeyState == KeyType) // 短按鍵,錄 /放音控制 if(PLAY == Status) SACM_DVR1600_Stop()。“錄音”按鍵處理程初始化 判斷是否有寫保護標志 ? 否 判斷按鍵 Key3 錄音鍵 是 Key2 上一曲 鍵 Key1 下一曲 鍵 返回 開始 Key = KeyScan_GetKey(amp。 // 播放 就緒 // while(1) KeyProcess()。 while(0 == SD_ChkCard())。按鍵處理流程圖如圖 。 31 圖 主程序流程圖 主程序完成系統(tǒng)初始化后檢測 SD 卡是否插入以及是否有寫保護,并有相應(yīng)的語音提示,告知用 戶當前的系統(tǒng)狀態(tài)。 SD 卡模組同時提供卡插入檢測和寫保護檢測接口。電路中 SPY0030 是凌陽公司一款音頻放大芯片。 26 圖 SPCE061A 最小系統(tǒng)圖 27 按鍵電路 本系統(tǒng)使用三個按鍵完成錄放音控制。 SPCE061A 控制端口輸出控制信息,并控制喇叭輸出聲音信息。圖 為硬件連接實物圖。每增加一段錄音,程序會將起始地址、終止地址等相關(guān)信息保存,以便可以回放。 22 圖 硬件總體框圖 系統(tǒng)軟件設(shè)計架構(gòu) 軟件 系統(tǒng)包括以下部分 : 主程序:完成系統(tǒng)的初始化,處理按鍵信息,并根據(jù)按鍵,在語音文件操作管理程序的配合下,創(chuàng)建語音文件進行錄音,或控制讀取語音文件進行回放。 編譯過程里的語法錯誤顯示在 Output 窗口內(nèi); 選擇 [Build]→[Start Debug]→[Download] ,把程序加載到 RAM,然后,用戶可以用 Debug 菜單內(nèi)所提供的調(diào)試命令來優(yōu)化和運行程序。 圖 文件編輯器 二進制代碼編輯器 ,如 圖 。 Find in Files:顯示在文件中查找字符的結(jié)果。在 17 窗口底部有幾個視窗標簽: Build、 Debug 和 Find in Files等。用戶可用拖曳的辦法改變文件的邏輯位置。 External 16 Dependencies 文件夾用于保存對工程的一些標注信息。 Files 文件夾包含了源程序、程序接口和說明硬件配置情況的文件。 15 圖 工具界面參照圖 Workspace窗口 , 如圖 。 u’nSP IDE 集成開發(fā)環(huán)境支持匯編語言和 C 語言混合編程進行程序開發(fā),集程序的編輯、編譯、鏈接、調(diào)試以及仿真等功能為一體并且支持軟件仿真和調(diào)試 的功能 。以下是它的性能簡介: ( 1) 16 位的高性能 u’nSP 內(nèi)核單片機 ( 2) CPU 時鐘范圍: ~49MHz ( 3) 片內(nèi) 32K 字的 Flash 程序存儲器、 2K 字的 SRAM 數(shù)據(jù)存儲器 ( 4) 4 個 16 位 I/O 端口 ( 5) 14 個中斷源 ( 6) 1 通道專用音頻 AD 轉(zhuǎn)換通道, 7 通道 AD 轉(zhuǎn)換通道 ( 7) 內(nèi)置 MIC 放大電路和自動增益 (AGC)放大電路 ( 8) 2 路電流輸出型的 DA 轉(zhuǎn)換 通道 ( 9) 2 個 16 位通用定時器 /計數(shù)器 ( 10) 實時實鐘( RTC) 13 ( 11) 低電壓復(fù)位、低電壓監(jiān)測 ( 12) 內(nèi)置在線仿真接口( ICE) ( 13) 具有保密功能 ( 14) 具有 Watchdog 功能 SPCE061A 片內(nèi)結(jié)構(gòu),主要包括 SPCE061A 時鐘電路,PPL 鎖相環(huán)及外圍電路, SPCE061A 系統(tǒng)時鐘和 Watchdog。 11 SPCE061A 對 SD卡的讀寫
點擊復(fù)制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1