2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  硬件課程設(shè)計(jì)報(bào)告</b></p><p>  --課題:簡(jiǎn)易電子書</p><p><b>  姓名:</b></p><p><b>  學(xué)號(hào):</b></p><p><b>  同組人姓</b></p>&

2、lt;p><b>  指導(dǎo)老師</b></p><p>  課設(shè)評(píng)價(jià): </p><p>  課設(shè)成績(jī): </p><p><b>  目錄</b></p><p><b>  1. 概述4</b></p><

3、p>  1.1 課程設(shè)計(jì)的核心任務(wù)4</p><p>  1.2 課程設(shè)計(jì)的工作進(jìn)程4</p><p><b>  2. 需求分析4</b></p><p>  2.1 功能分析4</p><p>  2.2 可行性分析5</p><p>  2.2.1 技術(shù)可行性分析5<

4、/p><p>  2.2.2 經(jīng)濟(jì)可行性5</p><p><b>  3. 概要設(shè)計(jì)5</b></p><p>  3.1 對(duì)MSP430F149單片機(jī)的使用5</p><p>  3.2 SD卡及FAT32文件系統(tǒng)的讀寫6</p><p>  3.3 菜單顯示6</p>&

5、lt;p>  3.4 電子書顯示6</p><p>  3.5 音樂播放功能7</p><p>  3.6 游戲功能7</p><p><b>  4. 詳細(xì)設(shè)計(jì)7</b></p><p>  4.1 SD卡及其結(jié)構(gòu)7</p><p>  4.2 12864液晶屏結(jié)構(gòu)及用法11&

6、lt;/p><p>  4.2.1 12864液晶屏的硬件結(jié)構(gòu)11</p><p>  4.2.2 12864內(nèi)部的數(shù)據(jù)緩存12</p><p>  4.2.3 12864液晶屏的指令13</p><p>  4.2.4 12864液晶屏驅(qū)動(dòng)函數(shù)14</p><p>  4.3 FAT32文件系統(tǒng)14</p

7、><p>  4.3.1 FAT32文件系統(tǒng)結(jié)構(gòu)簡(jiǎn)介14</p><p>  4.3.2 FAT32文件系統(tǒng)驅(qū)動(dòng)函數(shù)16</p><p>  4.4 VS1003音頻解碼芯片17</p><p>  4.5 整機(jī)結(jié)構(gòu)18</p><p>  4.5.1 MSP430開發(fā)板與12864液晶屏的連接19</p&

8、gt;<p>  4.5.2 MSP430開發(fā)板與SD卡的連接19</p><p>  4.5.3 MSP430開發(fā)板與VS1003芯片的連接20</p><p>  4.6 菜單功能20</p><p>  4.7 電子書顯示功能21</p><p>  4.7.1 實(shí)現(xiàn)顯示功能的基本函數(shù)21</p>

9、<p>  4.7.2 向下翻頁功能22</p><p>  4.7.3 向上翻頁功能22</p><p>  4.7.4 顯示閱讀時(shí)間23</p><p>  4.7.5 按百分比跳轉(zhuǎn)23</p><p>  4.7.6 書簽功能的實(shí)現(xiàn)23</p><p>  4.7.7 英文單詞的人性化顯示2

10、4</p><p>  4.8 音樂播放功能24</p><p>  4.9 俄羅斯方塊游戲功能25</p><p>  4.10 按鍵檢測(cè)27</p><p>  5. 系統(tǒng)測(cè)試28</p><p>  5.1 菜單功能的測(cè)試28</p><p>  5.2 電子書閱讀功能測(cè)試29

11、</p><p>  5.3 音樂播放功能測(cè)試31</p><p>  5.4 游戲功能的測(cè)試31</p><p>  6. 心得體會(huì)31</p><p>  7. 參考文獻(xiàn)32</p><p><b>  1. 概述</b></p><p>  1.1 課程設(shè)計(jì)的

12、核心任務(wù)</p><p>  隨著嵌入式技術(shù)的飛速發(fā)展,各種電子產(chǎn)品出現(xiàn)了小型化,智能化,多功能化方向發(fā)展的趨勢(shì)。在這種趨勢(shì)下,許多小型電子產(chǎn)品層出不窮,并且逐漸開始替代傳統(tǒng)的生活用品,并走近我們的生活。電子書閱讀器的出現(xiàn)就再圖書信息的承載和閱讀方式上有了很大的革新。本項(xiàng)目的目的就是制作一個(gè)電子閱讀器,可以讓人們方便的進(jìn)行隨身閱讀。同時(shí)在閱讀疲勞時(shí)還可以利用其中的mp3播放器和內(nèi)置的游戲進(jìn)行放松娛樂。</p

13、><p>  1.2 課程設(shè)計(jì)的工作進(jìn)程</p><p>  本課設(shè)由段經(jīng)璞,趙冰潔,張琢三人組隊(duì)共同完成。大家相互之間進(jìn)行分工合作,以取得快速的工作進(jìn)展和優(yōu)秀的最后結(jié)果。</p><p><b>  2. 需求分析</b></p><p><b>  2.1 功能分析</b></p>&

14、lt;p>  電子書,最出名的代表應(yīng)該是亞馬遜公司的kindle電子書閱讀器。Kindle使用電子墨水屏幕,可以提供接近紙質(zhì)書的閱讀體驗(yàn)。同時(shí)還可以進(jìn)行音樂播放,以及無線上網(wǎng)等功能。并且kindle通過和亞馬遜的網(wǎng)上書店整合,可以實(shí)現(xiàn)圖書的快速查找,購(gòu)買以及閱讀。而現(xiàn)在,單純的電子書幾乎不存在,電子書的功能幾乎都被整合在了各式各樣掌上終端中。這樣的掌上終端在進(jìn)行電子書閱讀的同時(shí),可以播放音樂,無線瀏覽網(wǎng)頁以及進(jìn)行游戲。因此單純的電

15、子書可以說是完全沒有市場(chǎng)的,它必須被整合其他的功能才能實(shí)現(xiàn)良好的效果。</p><p>  通過以上的分析可以發(fā)現(xiàn),電子書閱讀器必須與其他功能進(jìn)行整合才能被推入市場(chǎng)。當(dāng)然,在整合其他功能的同時(shí),我們更要把電子書閱讀的功能完善好。根據(jù)分析,我們決定在課設(shè)中實(shí)現(xiàn)電子書,音樂播放以及俄羅斯方塊游戲的功能。</p><p>  電子書閱讀部分,我們決定實(shí)現(xiàn)以下功能:</p><

16、p>  1. SD卡及FAT32文件系統(tǒng)的讀寫</p><p>  2.長(zhǎng)/短文件名的顯示</p><p><b>  3.電子書的顯示</b></p><p>  4.按閱讀進(jìn)度百分比直接跳轉(zhuǎn)</p><p><b>  5.閱讀時(shí)間顯示</b></p><p>&l

17、t;b>  6.書簽功能</b></p><p>  7.英文單詞的人性化顯示</p><p>  在音樂播放部分,我們決定實(shí)現(xiàn)以下功能:</p><p><b>  1.歌曲名稱的顯示</b></p><p><b>  2.歌曲音量的調(diào)節(jié)</b></p><

18、p>  3.歌曲的前進(jìn),后退,快進(jìn),快退及暫停的功能。</p><p><b>  2.2 可行性分析</b></p><p>  2.2.1 技術(shù)可行性分析</p><p>  在電子書閱讀部分,我們組使用msp430f149芯片作為主控芯片。使用SD卡作為存儲(chǔ)設(shè)備。因?yàn)閙sp430f149芯片自帶spi控制器,所以可以直接使用spi接

19、口,利用SD卡的spi模式與SD卡進(jìn)行數(shù)據(jù)交換。同時(shí)準(zhǔn)備使用12864液晶屏作為我們電子書的顯示部分。12864具有內(nèi)建的英文及中文字庫(kù),可以方便的顯示各種文字信息,從而實(shí)現(xiàn)電子書的顯示。</p><p>  在音樂播放部分,我們組使用vs1003音頻解碼芯片來進(jìn)行音頻解碼。Vs1003自帶spi接口,可以方便的利用spi總線與msp430f149主控芯片進(jìn)行連接。在進(jìn)行音樂播放時(shí),只要把音頻文件從SD卡中取出再

20、直接發(fā)送到vs1003中即可。</p><p>  在游戲部分,我們利用12864的繪圖功能實(shí)現(xiàn)俄羅斯方塊游戲。</p><p>  2.2.2 經(jīng)濟(jì)可行性</p><p>  因?yàn)槲覀冃〗M不具備自己焊接電路板的時(shí)間和能力,因此我們組直接從市場(chǎng)上購(gòu)買現(xiàn)成的開發(fā)板。最終購(gòu)買的開發(fā)板的價(jià)格如下:</p><p>  1、msp430f149開發(fā)板

21、:64元。</p><p>  2、12864液晶屏:56元。</p><p>  3、vs1003音頻解碼芯片:43元。</p><p>  4、1GB大小的SD卡:20元</p><p>  5、SD卡插座:6元。</p><p>  整體系統(tǒng)的總價(jià)格:179元。</p><p>  整體價(jià)

22、格在可以接受的范圍內(nèi)。而且如果可以自己直接購(gòu)買芯片并焊接電路板的話,就可以大幅度降低整體系統(tǒng)的價(jià)格。</p><p><b>  3. 概要設(shè)計(jì)</b></p><p>  3.1 對(duì)MSP430F149單片機(jī)的使用</p><p>  MSP430F149單片機(jī)是由TI公司開發(fā)的一款高性能低功耗單片機(jī)。實(shí)驗(yàn)中主要使用F149的CPU內(nèi)核,SP

23、I控制器,IO端口及TimerA定時(shí)器。</p><p>  3.2 SD卡及FAT32文件系統(tǒng)的讀寫</p><p>  要想實(shí)現(xiàn)電子書閱讀功能,就必須實(shí)現(xiàn)SD卡的讀寫,因?yàn)殡娮訒耙魳窋?shù)據(jù)都是以SD卡作為存儲(chǔ)介質(zhì)的。為了使用SD卡,就必須實(shí)現(xiàn)SD卡的初始化功能,讀扇區(qū)功能及寫扇區(qū)功能。同時(shí),我們組在進(jìn)行設(shè)計(jì)時(shí),確定了使用FAT32文件系統(tǒng)作為SD卡上得文件系統(tǒng)。FAT32文件系統(tǒng)是一種

24、簡(jiǎn)單高效的文件系統(tǒng),在實(shí)現(xiàn)SD卡讀寫扇區(qū)功能的基礎(chǔ)上,我們需要基于FAT32文件系統(tǒng)的特性實(shí)現(xiàn)對(duì)FAT32文件系統(tǒng)的讀寫,這樣才能獲取SD卡上的文本文件及音樂文件數(shù)據(jù)。</p><p><b>  3.3 菜單顯示</b></p><p>  一個(gè)完整可用的電子書系統(tǒng)一定要有良好的菜單系統(tǒng)的支持。我們組設(shè)計(jì)了兩級(jí)菜單顯示,其設(shè)計(jì)思想如下:</p><

25、;p>  1、主菜單:當(dāng)進(jìn)入系統(tǒng)時(shí),會(huì)顯示主菜單,其中包含電子書,音樂,游戲三個(gè)選項(xiàng),用戶選擇這三個(gè)選項(xiàng)中的一個(gè)就可以進(jìn)入下一級(jí)菜單。</p><p>  2、目錄菜單:當(dāng)在主菜單中選擇電子書或音樂時(shí),就會(huì)進(jìn)入電子書或音樂的目錄菜單。在電子書目錄菜單中,會(huì)列出當(dāng)前SD卡中所存儲(chǔ)的所有電子書的文件名,用戶選擇項(xiàng)閱讀的文件即可進(jìn)行閱讀。同樣的,在音樂目錄菜單中,會(huì)列出當(dāng)前SD卡中所存儲(chǔ)的所有音樂文件的文件名,用

26、戶選擇項(xiàng)播放的音樂即可進(jìn)行音樂播放。</p><p><b>  3.4 電子書顯示</b></p><p>  電子書顯示功能是一個(gè)電子書閱讀器的核心,它以12864液晶顯示屏作為基礎(chǔ),從SD卡中讀取文件并顯示在屏幕上。整個(gè)電子書的顯示功能是為12864液晶屏量身設(shè)計(jì)的,它文本模式可以顯示4行文字,每行顯示8個(gè)漢字或16個(gè)英文字母。為了取得良好的閱讀體驗(yàn),我們組設(shè)計(jì)

27、了以下的功能:</p><p>  1、向上向下翻頁功能:當(dāng)人在閱讀電子書時(shí),如果翻來一頁新的文字時(shí),讀者有可能會(huì)因暫時(shí)性忘記上一頁最后一行的若干內(nèi)容而造成對(duì)下一頁起始內(nèi)容的理解困難。因此,我們決定在向下翻頁時(shí),僅會(huì)翻三行內(nèi)容,也就是說,我們會(huì)以當(dāng)前屏幕的最后一行,為新一頁的第一行。這樣就可以保證閱讀的流暢性。同理,在向上翻頁時(shí),我們會(huì)以當(dāng)前屏幕的第一行,為后一頁的最后一行。</p><p&g

28、t;  2、按比例跳轉(zhuǎn)功能:讀者在讀書的時(shí)候,有時(shí)會(huì)想直接跳轉(zhuǎn)到這本書的后面去進(jìn)行閱讀。這時(shí)候就需要一個(gè)按書內(nèi)容的百分比進(jìn)行跳轉(zhuǎn)的功能。本課設(shè)中實(shí)現(xiàn)了這個(gè)功能。</p><p>  3、英文單詞的人性化顯示功能:為了保證在閱讀英文文章時(shí)的流暢性,我們必須保證每一個(gè)詞都不會(huì)因?yàn)閾Q行而被截?cái)?。本課設(shè)就實(shí)現(xiàn)了這個(gè)功能,從而保證了閱讀英文文章時(shí)的流暢性。</p><p>  4、書簽功能:這個(gè)功能

29、對(duì)電子書至關(guān)重要,因?yàn)樽x者幾乎無法連續(xù)的讀完一本書,當(dāng)讀者退出閱讀時(shí),他需要保存當(dāng)前的閱讀進(jìn)度以便在下次方便的繼續(xù)閱讀。這也是本課設(shè)中所實(shí)現(xiàn)的關(guān)鍵功能。</p><p>  5、閱讀時(shí)間的顯示:大家都知道,閱讀時(shí)間過長(zhǎng)對(duì)視力不好。因此一個(gè)完善的電子書閱讀器必須可以顯示當(dāng)前電子書的閱讀時(shí)間,以使讀者可以清楚的知道自己何時(shí)需要休息。</p><p>  3.5 音樂播放功能</p>

30、<p>  在前面已經(jīng)討論過,一個(gè)成熟的電子書,一定要集成其他的附加功能才能提升整個(gè)系統(tǒng)的檔次。音樂播放功能就是非常重要的一個(gè)功能。本課設(shè)中利用vs1003制作了一個(gè)mp3播放器,可以播放高品質(zhì)的音樂。并且實(shí)現(xiàn)了調(diào)整音量,暫停,快進(jìn)快退,向前向后選擇歌曲的功能。這樣,當(dāng)閱讀電子書感到疲勞時(shí),就可以聽聽音樂放松一下心情。</p><p><b>  3.6 游戲功能</b><

31、;/p><p>  課設(shè)中利用12864的繪圖模式制作了俄羅斯方塊的游戲。這樣讀者可以在閱讀疲勞時(shí)玩玩俄羅斯方塊來放松心情。</p><p><b>  4. 詳細(xì)設(shè)計(jì)</b></p><p>  4.1 SD卡及其結(jié)構(gòu)</p><p>  SD卡SPI模式下與單片機(jī)的連接圖:</p><p>  S

32、D卡支持兩種總線方式:SD方式與SPI方式。其中SD方式采用6線制,使用CLK、CMD、DAT0~DAT3進(jìn)行數(shù)據(jù)通信。而SPI方式采用4線制,使用CS、CLK、DataIn、DataOut進(jìn)行數(shù)據(jù)通信。SD方式時(shí)的數(shù)據(jù)傳輸速度與SPI方式要快,采用單片機(jī)對(duì)SD卡進(jìn)行讀寫時(shí)一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。這里只對(duì)其SPI方式進(jìn)行介紹。</p><p>  1、SP

33、I方式驅(qū)動(dòng)SD卡的方法</p><p>  SD卡的SPI通信接口使其可以通過SPI通道進(jìn)行數(shù)據(jù)讀寫。從應(yīng)用的角度來看,采用SPI接口的好處在于,很多單片機(jī)內(nèi)部自帶SPI控制器,不光給開發(fā)上帶來方便,同時(shí)也見降低了開發(fā)成本。然而,它也有不好的地方,如失去了SD卡的性能優(yōu)勢(shì),要解決這一問題,就要用SD方式,因?yàn)樗峁└蟮目偩€數(shù)據(jù)帶寬。SPI接口的選用是在上電初始時(shí)向其寫入第一個(gè)命令時(shí)進(jìn)行的。以下介紹SD卡的驅(qū)動(dòng)方

34、法,只實(shí)現(xiàn)簡(jiǎn)單的扇區(qū)讀寫。</p><p><b>  1)命令與數(shù)據(jù)傳輸</b></p><p>  SD卡自身有完備的命令系統(tǒng),以實(shí)現(xiàn)各項(xiàng)操作。命令格式如下:</p><p>  命令的傳輸過程采用發(fā)送應(yīng)答機(jī)制,過程如下:</p><p>  每一個(gè)命令都有自己命令應(yīng)答格式。在SPI模式中定義了三種應(yīng)答格式,如下表所

35、示:</p><p><b>  2)初始化</b></p><p>  SD卡的初始化是非常重要的,只有進(jìn)行了正確的初始化,才能進(jìn)行后面的各項(xiàng)操作。在初始化過程中,SPI的時(shí)鐘不能太快,否則會(huì)造初始化失敗。在初始化成功后,應(yīng)盡量提高SPI的速率。在剛開始要先發(fā)送至少74個(gè)時(shí)鐘信號(hào),這是必須的。在很多讀者的實(shí)驗(yàn)中,很多是因?yàn)槭韬隽诉@一點(diǎn),而使初始化不成功。隨后就是寫入

36、兩個(gè)命令CMD0與CMD1,使SD卡進(jìn)入SPI模式</p><p><b>  初始化時(shí)序圖:</b></p><p>  在項(xiàng)目中,初始化SD卡的函數(shù)為:unsigned char InitMmc()。</p><p><b>  3)扇區(qū)讀</b></p><p>  扇區(qū)讀是對(duì)SD卡驅(qū)動(dòng)的目的

37、之一。SD卡的每一個(gè)扇區(qū)中有512個(gè)字節(jié),一次扇區(qū)讀操作將把某一個(gè)扇區(qū)內(nèi)的512個(gè)字節(jié)全部讀出。過程很簡(jiǎn)單,先寫入命令,在得到相應(yīng)的回應(yīng)后,開始數(shù)據(jù)讀取。</p><p><b>  扇區(qū)讀的時(shí)序:</b></p><p>  在項(xiàng)目中,讀SD卡扇區(qū)的函數(shù)由</p><p>  ReadMmcSector(unsigned long lba,

38、unsigned int Bytes,unsigned char *buffer),調(diào)用</p><p>  WriteMmcSectorAddress(unsigned long sector)和 MMC_get_data(unsigned int Bytes,unsigned char *buffer) 實(shí)現(xiàn)。其中ReadMmcSector輸入的參數(shù)為SD卡的物理扇區(qū)號(hào)lba,要讀出的字節(jié)數(shù)Bytes,以及讀

39、出后的數(shù)據(jù)所存放的數(shù)組的首地址buffer。</p><p><b>  4)寫扇區(qū)</b></p><p>  扇區(qū)寫是SD卡驅(qū)動(dòng)的另一目的。每次扇區(qū)寫操作將向SD卡的某個(gè)扇區(qū)中寫入512個(gè)字節(jié)。過程與扇區(qū)讀相似,只是數(shù)據(jù)的方向相反與寫入命令不同而已。</p><p><b>  扇區(qū)寫的時(shí)序:</b></p>

40、;<p>  在項(xiàng)目中,寫SD卡的函數(shù)為SD_write_sector(unsigned long addr,unsigned char *Buffer)。輸入?yún)?shù)為SD卡的物理扇區(qū)號(hào)以及寫入SD卡指定扇區(qū)中的內(nèi)容的數(shù)組的首地址。</p><p>  4.2 12864液晶屏結(jié)構(gòu)及用法 </p><p>  4.2.1 12864液晶屏的硬件結(jié)構(gòu) </p>

41、<p>  12864是一種具有具有4位/8位并行,2線或3線串行多種接口方式。在本課設(shè)中使用了8位并行方式與MSP430單片機(jī)進(jìn)行鏈接。該液晶屏內(nèi)部含有國(guó)標(biāo)一級(jí),二級(jí)簡(jiǎn)體中文字庫(kù)的點(diǎn)陣圖形液晶顯示模塊,其顯示分辨率為128x64。其漢字的分辨率為16x16。其ASCii字符的分辨率為16x8。也就是說12864液晶屏總共可以顯示四行字符,每一行可以顯示8個(gè)漢字或16個(gè)英文字母。其8位串行狀態(tài)下引腳接口如下表所示:</

42、p><p>  4.2.2 12864內(nèi)部的數(shù)據(jù)緩存</p><p>  下面僅介紹課設(shè)中使用倒的兩個(gè)數(shù)據(jù)緩存:</p><p>  1、顯示RAM(DDRAM)</p><p>  顯示RAM提供64x2字節(jié)的空間,最多可以顯示4行每行8個(gè)漢字,或4行每行16個(gè)ASCii字符。只要直接將漢字或ASCii的編碼寫入DDRAM中,屏幕中就會(huì)出現(xiàn)相應(yīng)

43、的文字。屏幕上第一行到第四行所對(duì)應(yīng)的DDRAM中的地址分別為0x80-0x87,0x90-0x97,0x88-0x8f,0x98-0x9f。其中,每一個(gè)地址對(duì)應(yīng)屏幕上分辨率為16x16的一個(gè)區(qū)域。在其中可以顯示兩個(gè)ASCii字符,或一個(gè)漢字。要將文字寫入顯存并顯示在屏幕中指定的位置上,就必須先向12864芯片寫入指定位置的地址,然后再連續(xù)的寫入兩字節(jié)的數(shù)據(jù)。然后這兩字節(jié)的數(shù)據(jù)所對(duì)應(yīng)的文字就會(huì)顯示在地址指定位置的16x16的點(diǎn)陣區(qū)域內(nèi)。因

44、為漢字編碼為兩個(gè)字節(jié),而ASCii編碼為1一個(gè)字節(jié)。所以屏幕上指定位置的16x16的點(diǎn)陣區(qū)域可以顯示兩個(gè)英文字符或一個(gè)漢字。</p><p>  12864屏幕上的位置以及其在DDRAM中所對(duì)應(yīng)的地址如下圖所示。注意,其中每一個(gè)位置均表示一個(gè)16x16的區(qū)域。</p><p>  2、繪圖RAM(GDRAM)</p><p>  繪圖RAM中每一位的值用來控制128

45、64液晶屏上每一個(gè)像素點(diǎn)的亮滅。值為1,對(duì)應(yīng)的像素點(diǎn)就被點(diǎn)亮,值為0,對(duì)應(yīng)的像素點(diǎn)就被熄滅。在設(shè)定繪圖RAM的值時(shí),先寫入垂直地址,再寫入水平地址。之后向繪圖RAM里連續(xù)寫入兩字節(jié)的數(shù)據(jù)。這樣可以完成12864液晶屏上連續(xù)16個(gè)像素點(diǎn)控制。繪圖RAM的地址所控制的像素點(diǎn)在屏幕上的對(duì)應(yīng)位置如下圖所示:</p><p>  4.2.3 12864液晶屏的指令</p><p>  以下僅僅列出程

46、序中所使用的指令:</p><p>  4.2.4 12864液晶屏驅(qū)動(dòng)函數(shù)</p><p>  寫數(shù)據(jù)函數(shù):void LCD_write_data(unsigned char data) </p><p>  2、讀數(shù)據(jù)函數(shù):unsigned char LCD_read_data()</p><p>  3、寫命令函數(shù):void LCD_w

47、rite_com(unsigned char com) </p><p>  4、文本顯示模式初始化函數(shù):void LCD_init(void) </p><p>  其初始化過程為,先發(fā)送兩次命令0x30,設(shè)置顯示模式為基本指令集。然后發(fā)送命令</p><p>  0x0c,打開液晶屏屏幕顯示。最后發(fā)送命令0x01,清屏。</p><p>

48、  將一個(gè)長(zhǎng)度為17的字符串顯示在屏幕指定行的函數(shù):void DisplayCgrom(uchar addr,uchar </p><p><b>  *hz)</b></p><p>  繪圖模式初始化函數(shù):void Graph_Init(void)</p><p>  初始化好繪圖模式之后,就可以利用繪圖模式來進(jìn)行俄羅斯方塊游戲。</

49、p><p>  點(diǎn)亮屏幕上指定位置像素的函數(shù):void Put_Pixel( unsigned char row, unsigned char </p><p><b>  column )</b></p><p>  該函數(shù)先將指定位置像素所在的GDRAM中的連續(xù)16個(gè)像素點(diǎn)的值讀出來,改變需要改變的那個(gè)像素點(diǎn)的值,在將這16個(gè)像素點(diǎn)的值寫回G

50、DRAM的原位置中。</p><p>  清楚屏幕上指定位置像素點(diǎn)的函數(shù):void Clear_Pixel( unsigned char row, unsigned char </p><p><b>  column )</b></p><p>  該函數(shù)的實(shí)現(xiàn)機(jī)制和上一個(gè)函數(shù)相同。</p><p>  4.3 FAT

51、32文件系統(tǒng)</p><p>  4.3.1 FAT32文件系統(tǒng)結(jié)構(gòu)簡(jiǎn)介</p><p>  課設(shè)中選用了FAT32文件系統(tǒng)來存儲(chǔ)文件。下面簡(jiǎn)介FAT32文件系統(tǒng)</p><p>  主引導(dǎo)扇區(qū)(MBR):主引導(dǎo)扇區(qū)位于整個(gè)SD卡物理扇區(qū)的第0號(hào)扇區(qū)。從中可以讀取引導(dǎo)代碼以及文件系統(tǒng)的起始位置。在課設(shè)中,僅從MBR中讀取整個(gè)SD卡大小以及文件系統(tǒng)的其實(shí)扇區(qū)位置。&l

52、t;/p><p>  隱藏扇區(qū)(Hidden Sectors):從MBR一直到文件系統(tǒng)的起始扇區(qū)之間的扇區(qū)被稱為隱藏扇區(qū)。</p><p>  保留扇區(qū)(Reserved Sectors):文件系統(tǒng)的起始扇區(qū)及其后的若干扇區(qū)被稱為保留扇區(qū)。保留扇區(qū)中的第一個(gè)扇區(qū),也就是文件系統(tǒng)的起始扇區(qū)是整個(gè)SD卡中最重要的部分。這個(gè)扇區(qū)又被稱為DBR。DBR記錄了文件系統(tǒng)的基本信息,其中包括:每扇區(qū)字節(jié)數(shù),

53、每簇扇區(qū)數(shù),保留扇區(qū)數(shù),F(xiàn)AT表個(gè)數(shù),文件系統(tǒng)總扇區(qū)數(shù),每個(gè)FAT表的扇區(qū)數(shù),根目錄的其實(shí)簇號(hào)(通常為2)及其他一些附加信息。課設(shè)中,系統(tǒng)初始化時(shí),就需要讀取DBR扇區(qū),并在內(nèi)存中記錄其中的信息。</p><p>  FAT表:位于保留扇區(qū)后的是FAT表區(qū),它由兩個(gè)完全相同的FAT表組成。FAT表有兩個(gè)重要的作用,分別是描述簇的分配狀態(tài)以及表明文件或目錄的下一簇的簇號(hào)。在FAT表中,每個(gè)簇由4個(gè)字節(jié)的FAT表項(xiàng)來

54、進(jìn)行代表。FAT表從第0號(hào)簇開始進(jìn)行劃分,每四個(gè)字節(jié)代表一個(gè)簇。其中第0號(hào)簇和第1號(hào)通常情況下不使用。如果某個(gè)簇未被分配使用,則它所對(duì)應(yīng)的FAT表內(nèi)的FAT表項(xiàng)值為0。當(dāng)某個(gè)簇已經(jīng)被分配使用時(shí),則它所對(duì)應(yīng)的FAT表項(xiàng)內(nèi)的FAT表項(xiàng)值也就是在該文件中,該簇的下一個(gè)簇的簇號(hào)。若這個(gè)簇號(hào)為0x0fffffff,則表明當(dāng)前簇為該文件的最后一個(gè)簇。</p><p>  5)根目錄:FAT表后面就是數(shù)據(jù)區(qū)。數(shù)據(jù)區(qū)的開始是整個(gè)

55、文件系統(tǒng)的根目錄。它由目錄項(xiàng)組成,用來記錄每個(gè)文件的文件名,大小,起始簇號(hào),類型,創(chuàng)建時(shí)間等信息。</p><p>  6)目錄項(xiàng):每個(gè)目錄項(xiàng)占32個(gè)字節(jié),其結(jié)構(gòu)如下圖所示:</p><p>  7)長(zhǎng)文件名目錄項(xiàng):FAT32系統(tǒng)在為文件分配一個(gè)普通目錄項(xiàng)時(shí),還會(huì)為那些文件名長(zhǎng)度超過8字節(jié)的文件分配長(zhǎng)文件名目錄項(xiàng),長(zhǎng)文件名目錄項(xiàng)專門用來記錄它所對(duì)應(yīng)的文件的文件名。長(zhǎng)文件名目錄項(xiàng)通常順序排列

56、在短文件名目錄項(xiàng)的上面,其結(jié)構(gòu)如下圖所示:</p><p>  4.3.2 FAT32文件系統(tǒng)驅(qū)動(dòng)函數(shù)</p><p>  1、unsigned char strcmp(char* string1, char* string2)</p><p>  這個(gè)函數(shù)主要是比較兩個(gè)字符串是否是相同的,相同就返回1,不相同就返回0;</p><p>  

57、簡(jiǎn)單來說就是比較后綴的。</p><p>  2、void ReadMBR()</p><p>  這個(gè)函數(shù)主要是讀出文件系統(tǒng)的起始扇區(qū)號(hào)</p><p>  3、void ReadDBR()</p><p>  DBR中保存的是文件系統(tǒng)的基本信息,每簇扇區(qū)數(shù),隱藏扇區(qū)數(shù)(起始扇區(qū)數(shù)前面的那 </p><p>  些

58、沒有讀的,)FAT表的個(gè)數(shù),F(xiàn)AT表扇區(qū)數(shù),保留扇區(qū)數(shù)等</p><p>  4、void ReadSectorFromCluster(unsigned long ClusterNumber,unsigned char SectorOffset)</p><p>  這個(gè)函數(shù)作用的是找到扇區(qū)的位置,然后讀出512字節(jié)</p><p>  5、void GetFile

59、Number(void)</p><p>  這里面是包含這種文件,只要不是被刪除的文件或者是長(zhǎng)文件名(特征是他的第11字節(jié)是0X0F)則所找到的文件都會(huì)是filenumber+1,同時(shí)各種文件類型各自加1.。同時(shí)比較文件名是不是convert,或者是dirtable,若果是convert,那么長(zhǎng)文件名轉(zhuǎn)碼文件是存在的,置一,以長(zhǎng)文件名顯示;若是dirtable,那么是存在書簽的,則在下次讀取文本信息的時(shí)候就會(huì)調(diào)

60、用書簽信息,實(shí)現(xiàn)書簽功能。</p><p>  7、unsigned long GetAudioFile(unsigned long AudioFileIndex)</p><p>  8、unsigned long GetTextFile(unsigned long TextFileIndex)</p><p>  這兩個(gè)函數(shù)的原理是有些相同的,第一,先在根目錄中

61、找每一個(gè)目錄項(xiàng),如果說是音頻文件且他的音頻索引是audiofileindex,那么這就是要找到的音頻文件。同理第八個(gè)函數(shù)就是所要找到的文本文件。</p><p>  對(duì)于第七個(gè)函數(shù),首先,要記住來兩個(gè)信息,1,記錄當(dāng)前目錄項(xiàng)在整個(gè)根目錄所有目錄的偏置信息,2,記錄當(dāng)前目錄項(xiàng)在整個(gè)音頻文件目錄項(xiàng)中的偏置位置。然后返回當(dāng)前音頻文件的起始簇號(hào)。</p><p>  對(duì)于第八個(gè)函數(shù),只用記錄當(dāng)前目

62、錄項(xiàng)在真整個(gè)根目錄所有目錄項(xiàng)中的偏置信息,然后返回當(dāng)前文本文件的起始簇號(hào)。</p><p>  9、unsigned long FindNextCluster(unsigned long ThisCluster)</p><p>  10、 unsigned long FindPreviousCluster(unsigned long ThisCluster)</p><

63、;p>  第九第十就是找一個(gè)文件中當(dāng)前讀的簇的下一個(gè)簇或是上一個(gè)簇,然后返回簇號(hào)</p><p>  11、void GetDirItem(unsigned long DirItemIndex)</p><p>  在根目錄項(xiàng)中找到DIRitemindex這個(gè)目錄項(xiàng),將這32字節(jié)值保存在全局?jǐn)?shù)組DIRitem[32]中。這個(gè)函數(shù)主要是給7 8 這兩個(gè)函數(shù)調(diào)用用的,7,8用這個(gè)函數(shù)找到

64、所需要的目錄項(xiàng)</p><p>  12、void ReadSectorFromFile(unsigned long ThisCluster,unsigned long offset)</p><p>  Long offset 是扇區(qū)在整個(gè)文件的偏置 根據(jù)這個(gè)偏置信息找到相應(yīng)的扇區(qū),讀取相應(yīng)的信息</p><p>  13、void WriteSectorTo

65、File(unsigned long ThisCluster,unsigned long offset)</p><p>  這個(gè)就是12函數(shù)的一個(gè)寫操作。。</p><p>  15、void InitFAT()</p><p>  初試化FAT就是調(diào)用read MBR和read DBR這兩個(gè)函數(shù)</p><p><b>  4.

66、5 整機(jī)結(jié)構(gòu)</b></p><p>  課設(shè)的整機(jī)結(jié)構(gòu)由MSP430F149開發(fā)板與12864液晶屏,VS1003解碼芯片,SD卡及SD卡插座組成。整機(jī)結(jié)構(gòu)圖如下所示:</p><p>  4.5.1 MSP430開發(fā)板與12864液晶屏的連接</p><p>  液晶接口原理圖圖下圖所示:</p><p>  液晶模塊端口分配

67、資源如下表所示:</p><p>  4.5.2 MSP430開發(fā)板與SD卡的連接</p><p>  在spi模式下,SD卡與單片機(jī)的連接原理圖如下圖所示:</p><p>  MSP430有兩個(gè)USART端口,分別為P3.1-P3.3以及P5.1-P5.3。課設(shè)中選用P3.1-P3.3端口來連接SD卡。其中P3.1為SIMO端,用來與SD卡在SPI模式下的MOS

68、I端相連。P3.2為SOMI端,用來與SD卡在SPI模式下的MISO端相連。而P3.3為UCLK端,用來與SD卡在SPI模式下的SCK端相連。使用P3.0為片選信號(hào),并直接使用開發(fā)板上的3.3V電源向SD卡供電。</p><p>  5、在本實(shí)驗(yàn)中,我主要負(fù)責(zé)俄羅斯方塊游戲部分:</p><p><b>  俄羅斯方塊游戲功能</b></p><p

69、>  本課設(shè)利用12864液晶屏的繪圖功能實(shí)現(xiàn)了俄羅斯方塊游戲的功能。該游戲時(shí)先初始化繪圖模式,然后通過在主菜單函數(shù)Main_Menu中調(diào)用game()函數(shù)來實(shí)現(xiàn)的。</p><p>  俄羅斯方塊的基本流程如下圖所示:</p><p>  俄羅斯方塊功能的代碼分析如下:</p><p>  1、typedef struct</p><p&

70、gt;<b>  {</b></p><p>  unsigned char * box;</p><p>  unsigned char cube;</p><p>  unsigned char state;</p><p>  signed char row;</p><p>  signe

71、d char column;</p><p><b>  }block</b></p><p>  這是方塊的數(shù)據(jù)結(jié)構(gòu)的定義,它又記錄方塊的形狀的數(shù)組box,方塊形狀的編號(hào)cube,方塊的旋轉(zhuǎn)方向state,以及方塊形狀數(shù)組第0行,第0列在整個(gè)游戲位圖中的行數(shù)row和列數(shù)column組成。</p><p>  unsigned char cub

72、eMap[MAXROW][2]</p><p>  這是游戲的位圖,整個(gè)游戲界面就保存在這個(gè)味圖中。游戲界面為20行10列。因此MAXROW被定義為20,同時(shí)表示一行的兩個(gè)字節(jié)值用到了第一字節(jié)和第二字節(jié)的高2位。</p><p>  unsigned char cube[]</p><p>  這是保存游戲每一個(gè)方塊形狀位圖的數(shù)組。每一個(gè)方塊的形狀位圖由連續(xù)四個(gè)字節(jié)

73、的低四位組成。每一個(gè)方塊具有4個(gè)方向,同一個(gè)方塊的四個(gè)方向的位圖被連續(xù)保存。因此只要給出方塊編號(hào)cube,再給出方塊的旋轉(zhuǎn)方向state,就可以通過4*cube+state找出該方塊的形狀位圖。</p><p>  unsigned char asii[]</p><p>  這是保存游戲中顯示的英文字母和數(shù)字的位圖。每一個(gè)英文字母或數(shù)字由連續(xù)的5個(gè)字節(jié)組成位圖、</p>&

74、lt;p>  5、unsigned char downok = 0;</p><p>  unsigned int score=0;</p><p>  unsigned char speed=1;</p><p>  unsigned long downtime = 100;</p><p>  unsigned char next;

75、</p><p>  這是5個(gè)全局變量。Downok表示著方塊在下落過程中觸底,無法繼續(xù)下落。Score表示當(dāng)前游戲的得分,speed表示當(dāng)前游戲速度。Downtime表示方塊隔100個(gè)時(shí)鐘中斷,即1秒鐘就會(huì)強(qiáng)制一格。Next表示下一個(gè)方塊的形狀編號(hào)。</p><p>  void Put_Double_Pixel(unsigned char x, unsigned char y)<

76、/p><p>  因?yàn)樵谟螒蛑?,每一個(gè)方塊的每一個(gè)小格用兩行兩列的點(diǎn)陣來表示,因此這個(gè)函數(shù)的作用就是在游戲界面相對(duì)位置的第x行,第y列顯示一個(gè)方格。</p><p>  void Clear_Double_Pixel(unsigned char x, unsigned char y)</p><p>  這個(gè)函數(shù)和上一個(gè)函數(shù)作用相似,只是它的作用是消除一個(gè)方格。<

77、/p><p>  void showChar(unsigned char num, unsigned char x, unsigned char y)</p><p>  將ascii數(shù)組中保存的字符位圖顯示在屏幕第x行,第y列開始的位置上。</p><p>  void Game_Init()</p><p>  該函數(shù)先打印游戲界面的邊框,然

78、后顯示next,speed,score。</p><p>  void Show_Speed_Score()</p><p>  這個(gè)函數(shù)會(huì)將當(dāng)前的得分和速度顯示在屏幕上。</p><p>  void createCube(unsigned char num) </p><p>  當(dāng)downok被置1時(shí),調(diào)用這個(gè)函數(shù)來重新創(chuàng)建一個(gè)方塊。&

79、lt;/p><p>  void showCubeMap(void)</p><p>  當(dāng)消掉行時(shí),調(diào)用這個(gè)函數(shù)來在屏幕上刷新位圖中的內(nèi)容。</p><p>  void writeCubeToMap(void)</p><p>  每當(dāng)向左,向右,向下移動(dòng)方塊或旋轉(zhuǎn)方塊后,最后都通過該函數(shù)將移動(dòng)后的方塊顯示在屏幕上,及寫入位圖中。</p

80、><p>  void clearCubeFromMap(void)</p><p>  每當(dāng)向左,向右,向下移動(dòng)方塊或旋轉(zhuǎn)方塊前,最后都通過該函數(shù)將移動(dòng)后的方塊在屏幕上清除,及在位圖中清除。</p><p>  unsigned char checkBorder(void)</p><p>  檢測(cè)當(dāng)前的方塊是否碰到邊框。如果碰到左邊框,就不能

81、向左移動(dòng),如果碰到右邊框,就不能向右移動(dòng)。如果觸底,就觸發(fā)downok。</p><p>  unsigned char checkClask(void)</p><p>  檢測(cè)當(dāng)前的方塊是否碰到其他方塊.</p><p>  void checkMap(void)</p><p>  檢測(cè)位圖中是否有被填滿的行,如果有就消掉該行,并且加響

82、應(yīng)的分,并根據(jù)當(dāng)前分?jǐn)?shù)調(diào)整速度。</p><p>  18、void moveRight(void) void moveLeft(void) </p><p>  void moveDown(void) void cubeRotation(void)</p><p>  這四個(gè)函數(shù)分別表示向左,向右,向下移動(dòng)方塊及旋轉(zhuǎn)方塊。在這些函數(shù)中,先移動(dòng)方塊,再檢

83、測(cè)是否碰到邊框或者碰到其他方塊。若沒碰到,就退出函數(shù)。若碰到了,就返回原來的位置。對(duì)于moveDown。若在該函數(shù)中檢測(cè)到了碰到邊框或碰到其他方塊,就會(huì)置位downok標(biāo)識(shí)。</p><p>  void game(void)</p><p>  該函數(shù)的流程就如一開始給出的程序流程圖。</p><p><b>  4.10 按鍵檢測(cè)</b>&

84、lt;/p><p>  本課設(shè)中利用定時(shí)器中斷檢測(cè)按鍵。在定時(shí)器中斷函數(shù),添加了一個(gè)有限狀態(tài)機(jī),可以判別短按鍵和長(zhǎng)按鍵。當(dāng)發(fā)生短按鍵時(shí),置位短按鍵標(biāo)志spress_flag,并給出鍵值key。當(dāng)發(fā)生長(zhǎng)按鍵時(shí),置位長(zhǎng)按鍵標(biāo)志位lpress_flag。并給出按鍵值key。這樣做使得按鍵檢測(cè)非常靈敏,并且可以利用長(zhǎng)短按鍵的組合產(chǎn)生各種功能,節(jié)省按鍵數(shù)量。</p><p><b>  系統(tǒng)測(cè)

85、試</b></p><p><b>  游戲功能的測(cè)試</b></p><p>  游戲功能可以正常初始化,方塊可以正常下落,左移右移及旋轉(zhuǎn)??梢哉5那宄惶顫M的行。當(dāng)方塊觸頂時(shí),會(huì)游戲結(jié)束而退出游戲。</p><p>  下面給出游戲過程中的截圖:</p><p><b>  心得體會(huì)</

86、b></p><p>  從確定課設(shè)題目開始,我們組就在老師的催促下開始做實(shí)驗(yàn),當(dāng)時(shí)心里有點(diǎn)不以為然,覺得沒有必要那么早開始,后來真正實(shí)踐的時(shí)候,問題不斷的時(shí)候,才知道,要做一個(gè)像樣的東西出來是多么不容易,慶幸當(dāng)初沒有拖到最后才開始做。</p><p>  實(shí)驗(yàn)過程中,從搜集資料到選定器件,都是非常考驗(yàn)信息搜索能力的。最困難的是,在測(cè)試的時(shí)候,bug不斷,都是要</p>

87、<p><b>  參考文獻(xiàn)</b></p><p>  【1】MSP430x1xx User Guide</p><p>  【2】12864液晶屏中文資料</p><p>  【3】FAT32文件系統(tǒng)詳解</p><p>  【4】SD卡在單片機(jī)上的應(yīng)用</p><p>  【5】

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論