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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于stm32單片機(jī)的mp3播放器畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-07-11 02:13 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 CortexM3 內(nèi)核 。 CortexM3是 ARM 公司推出的最新的針對(duì)微控制器應(yīng)用的內(nèi)核,提供業(yè)界領(lǐng)先的高性能和低成本的解決方案,將成為 MCU 應(yīng)用的熱點(diǎn)和主流。但是目前能夠支持 CortexM3 架構(gòu)的開 發(fā)工具很少,包括 SDT、 等開發(fā)工具都不支持。 MDK 是目前性價(jià)比最高的支持 CortexM3 處理器的開發(fā)工具。故本次設(shè)計(jì)的軟件平臺(tái)是建立在軟件 MDK 之上的。 賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 11 程序設(shè)計(jì)流程圖 圖 31 程序設(shè)計(jì)流程圖 本系統(tǒng)的 程序設(shè)計(jì)流程圖如圖 31 所示, 工作過程大致為: STM32 通過從 SD 卡中讀取 MP3 文件,將所讀取的數(shù)據(jù)流發(fā)送到 VSl003 解碼 器 中 解碼 播放; TFT 觸摸屏則用于顯示歌曲的實(shí)時(shí)播放狀態(tài)、歌詞的顯示 、 功能按扭 和控制歌曲 的快進(jìn),快退,停止等。 各模塊軟件系統(tǒng)設(shè)計(jì) VS1003 驅(qū)動(dòng)程序 VS1003 初始 化的一般流程如下: ( 1) 硬復(fù)位, xReset = 0。 ( 2) 延時(shí), xDCS、 xCS、 xReset 置 1; ( 3) 等待 DREQ 為高; ( 4) 軟件復(fù)位: SPI_MODE = 0x0804。 開始 系統(tǒng)初始化 TFT 初始化 觸摸屏初始 化 SD 卡初始化 VS1003 初始化 MP3 播放程序 觸 摸 屏按下 ? 播放模式設(shè)置 讀取觸摸屏數(shù)據(jù),實(shí)行相應(yīng)操作 張藍(lán)凱 基于 STM32 的 MP3 播放器設(shè)計(jì) 12 ( 5) 等待 DREQ 為高(軟件復(fù)位結(jié)束); ( 6) 設(shè)置 VS1003 的采樣率: SPI_AUDATA = 0xBB81,采樣率,立體聲 。 ( 7) 設(shè)置重音: SPI_BASS = 0x0055。 ( 8) 設(shè)置音量: SCI_VOL = 0x2020。 ( 9) 向 VS1003 發(fā)送 4 個(gè)字節(jié)無效數(shù)據(jù),用以啟動(dòng) SPI 發(fā)送; VS1003 播放 MP3 的一般流程如下: ( 1) 打開一個(gè)指定的 MP3 文件 ; ( 2) 發(fā) 32 個(gè)字節(jié)的數(shù)據(jù)到 VS1003; ( 3) 檢測(cè) DREQ,當(dāng) DREQ 為高時(shí)發(fā)下一個(gè) 32 字節(jié)的數(shù)據(jù) ; ( 4) 是否發(fā)完 32 個(gè)字節(jié),否,則回到第 3 步 。 ( 5) 是否發(fā)完打開的 MP3 文件,否,則回到第 2 步; ( 6) 關(guān)閉打開的 MP3 的文件; VS1003 讀寫 函數(shù)如下: u16 Vs1003_REG_Read(u8 address)。//讀寄存器 void Vs1003_DATA_Write(unsigned char * buf)。//寫數(shù)據(jù) void Vs1003_CMD_Write(u8 address,u16 data)。//寫命令 void Vs1003_Init(void)。 //初始化 VS1003 void Mp3Reset(void)。 //硬復(fù)位 void Vs1003SoftReset(void)。 //軟復(fù)位 void set1003(void)。 //設(shè)置 VS1003 的音量 ,播放模式 等 void VsRamTest(void)。 //RAM 測(cè)試 void VsSineTest(void)。 //正弦測(cè)試 u16 GetDecodeTime(void)。 //得到解碼時(shí)間 u16 GetHeadInfo(void)。 //得到比特率 void ResetDecodeTime(void)。//重設(shè)解碼時(shí)間 void LoadPatch(void)。 //加載頻譜分析代碼 void GetSpec(u8 *p)。 //得到分析數(shù)據(jù) TFT 顯示 屏 驅(qū) 動(dòng)程序 驅(qū)動(dòng) TFT 顯示屏實(shí)際上就是對(duì) ILI9320 驅(qū)動(dòng) IC的操作 。對(duì) ILI9320 的初始化操作賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 13 如下: ( 1) 向 ILI9320 控制器寫入 0x00. ( 2) 如果返回的數(shù)據(jù)為不是 0x9320,則驅(qū)動(dòng) IC 不是 ILI9320,停止初始化。 ( 3) 如果返回的數(shù)據(jù)為 0x9320,則向相應(yīng)的寄存器寫入默認(rèn)的數(shù)據(jù),啟動(dòng)驅(qū)動(dòng) IC。 ( 4) 拉低片選信號(hào) CS,再寫 R22h 寄存器,接著寫入要寫的數(shù)據(jù)。 ( 5) 寫結(jié)束后再將 CS拉高。 TFT 顯示屏的讀寫函數(shù)如下: extern void TFT_Write_Start(void)。 //寫開始 extern void TFT_Write_End(void)。 //寫結(jié)束 extern void TFT_SetGRAMHVA(u16 x0,u16 y0)。 //設(shè)置 GRAM 的最初地址 extern void TFT_SetGRAMArea(u16 HSA,u16 HEA,u16 VSA,u16 VEA)。 //設(shè)置一個(gè) GRAM 顯示區(qū)域 extern void TFT_init(void)。 //TFT 顯示屏初始化 //extern void TFT_Test_Square(u16 x0,u16 x1,u16 y0,u16 y1,u16 Color)。 extern void TFT_Clear(u16 x0,u16 x1,u16 y0,u16 y1,u16 Color)。 //清屏函數(shù) extern void DrawOnePixel(u16 x, u16 y, u16 Color)。 //畫點(diǎn)函數(shù) extern void Write_Asc8x16E(u16 x,u16 y,u16 TextColor,u16 BackColor,u16 W_Char)。//8*16 英文字 符 extern void Write_Asc12x24E(u16 x,u16 y,u16 TextColor,u16 BackColor,u16 W_Char)。 extern void Write_Asc12x24E_String(u16 x,u16 y,u16 TextColor,u16 BackColor,u8 *W_String)。 extern void Write_Asc20x40E(u16 x,u16 y,u16 TextColor,u16 BackColor,u16 W_Char)。 extern void Write_GB16(u16 x,u16 y,u16 TextColor,u16 BackColor,u8 *W_Char)。//16*16 中文字符 extern void Write_GB_16_And_Asc8x16E(u16 x,u16 y,u16 TextColor,u16 BackColor,u8 *W_String)。 extern void Write_GB_24_And_Asc12x24E(u16 x,u16 y,u16 TextColor,u16 BackColor,u8 *W_String)。 張藍(lán)凱 基于 STM32 的 MP3 播放器設(shè)計(jì) 14 extern void Display_Picture(u16 x,u16 y,u16 Width,u16 Height ,u16 *Picture)。 //顯示圖片 SD 卡驅(qū)動(dòng)程序 驅(qū)動(dòng)模 選擇 SD 卡上電時(shí),如果 CS 接地, SD 將進(jìn)入 SPI 模式, CS 接高電平,將進(jìn)入 SD BUS模式。在 SD BUS 模式時(shí),發(fā)送 CMDO SD 卡不會(huì)回應(yīng),在 SPI 模式時(shí),發(fā)送 CMD0,SD 卡能回應(yīng) R1 信息。 初始化 SD卡 進(jìn)入 SD BUS 模式后,發(fā)送 CMDO 復(fù)位 SD 卡。由于處于 SD BUS 模式 , SD 卡此時(shí)不會(huì)回復(fù)信息。發(fā)送命令的時(shí)候需要注意 SD卡命令狀態(tài),不同的狀態(tài)只能響應(yīng)待定的命令,下面為初始化命令發(fā)送流程: ( 1) CMDO 復(fù)位卡 。 ( 2) CDM55 用戶命令 。 ( 3) CMD41 SD 卡工作電壓設(shè)置命令 。 ( 4) CMD2 從默認(rèn)地址獲取 SD 卡 ID。 ( 5) CMD3 獲取一個(gè)新地址 。 ( 6) CMD9 從新地址讀取 SD卡 ID。 ( 7) CMD7 選擇新地址的 SD卡為有效卡 。 ( 8) CMD55 用戶命令 。 ( 9) CMD6 設(shè)置數(shù)據(jù)位寬 。 ( 10) CMD16 設(shè)置 BLOCK 長(zhǎng)度 。 ( 11) CMD13 讀取當(dāng)前 SD 卡狀態(tài) 。 ( 12) 初始化完成 。 發(fā)送 SD 卡支持的操作命令 不同的 SD卡所支持的命令稍有不同,但基本命令都是支持的。詳細(xì)支持哪類命令要從 SD 卡的 ID 中獲得。這一步主要為讀,寫,擦這三個(gè)功能。讀 CMD17,寫 CMD24,擦 CMD38。 退出 SD 卡操作 如果總線上掛有多個(gè) SD卡,就需要用 CMD7 命令退出當(dāng)前 SD卡,從面選擇其他的SD 卡操作。 CMD7 命令為選擇卡或取消卡,在初始化的時(shí)候發(fā)送 CMD7 命令, SD卡將進(jìn)賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 15 入數(shù)據(jù)發(fā)送模式,在數(shù)據(jù)模式里發(fā)送 CMD7 則退出當(dāng)前卡的操作。需要注意的是,在數(shù)據(jù)模 式里不同的狀態(tài)只支持特定命令。 SD 卡 讀寫 函數(shù)如下: u8 SPI_ReadWriteByte(u8 TxData)。 //SPI 總線讀寫一個(gè)字節(jié) u8 SD_WaitReady(void)。 //等待 SD卡就緒 u8 SD_SendCommand(u8 cmd, u32 arg, u8 crc)。 //SD 卡發(fā)送一個(gè)命令 u8 SD_SendCommand_NoDeassert(u8 cmd, u32 arg, u8 crc)。 u8 SD_Init(void)。 //SD 卡初始化 u8 SD_ReceiveData(u8 *data, u16 len, u8 release)。//SD 卡讀數(shù)據(jù) u8 SD_GetCID(u8 *cid_data)。 //讀 SD 卡 CID u8 SD_GetCSD(u8 *csd_data)。 //讀 SD 卡 CSD u32 SD_GetCapacity(void)。 //取 SD 卡容量 u8 SD_ReadSingleBlock(u32 sector, u8 *buffer)。 //讀一個(gè) sector u8 SD_WriteSingleBlock(u32 sector, const u8 *buffer)。 //寫一個(gè) sector u8 SD_ReadMultiBlock(u32 sector, u8 *buffer, u8 count)。 //讀多個(gè) sector u8 SD_WriteMultiBlock(u32 sector, const u8 *data, u8 count)。 //寫多個(gè) sector 4 系統(tǒng) 調(diào)試 運(yùn)行過程 ( 1) 使用 MDK uvision 編譯程序生成相應(yīng)的 hex 文件。 ( 2) 使用串口線將板子的串口與 PC機(jī)連接, 設(shè)置啟動(dòng)方式,將 Boot0 接高電平,Boot1 接低電平。 ( 3) 打開 mcuisp — 單片機(jī)在線編程專家,加載 MDK 生成的 hex 文件 ,將程序燒錄到控制器中。 ( 4) 設(shè)置啟動(dòng)方式,將 Boot0 接低電平, Boot1 接低電平。 ( 5) 復(fù)位一下硬件,即可進(jìn)入 MP3 播放界 面。 ( 6) 插上耳機(jī),即能聽到美妙的音樂。 張藍(lán)凱 基于 STM32 的 MP3 播放器設(shè)計(jì) 16 設(shè)計(jì)過程遇到的困難和問題 硬件方面 在本次設(shè)計(jì)中,由于首次用到 Altium Designer 來設(shè)計(jì) PCB,遇到 了 各種各樣的困難和問題。 例 如: 由于設(shè)計(jì)的原理圖很大, 如果把所有的元件都畫在同一張?jiān)韴D上,那么將會(huì)顯得非常的雜亂,煩瑣。 在這里我使用了層次圖的設(shè)計(jì)方法,把子模塊各放到一個(gè)層中設(shè)計(jì),在頂層中再把子模塊連接起來,不僅使設(shè)計(jì)顯得更加直觀,而且利于模塊之間的移植。還有, 層之間的元件重疊,不顯示綠色報(bào)錯(cuò)。 在設(shè)計(jì)中第一次用到貼片元件,也是本次設(shè)計(jì)中的一次挑戰(zhàn)。 經(jīng)過多 次嘗試努力,終于找到了焊接貼片元件的訣竅: ( 1)
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1