




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、電氣信息工程學(xué)院DSP技術(shù)及應(yīng)用 綜合訓(xùn)練大作業(yè)班 級(jí) 11電子1 姓 名 xxx 學(xué) 號(hào) 1131xxxx 指導(dǎo)老師 吳全玉 潘玲佼 得 分 2014 年 11 月目 錄序 言3第一章 DSP理論技術(shù)概述51.1 課程設(shè)計(jì)目的與意義51.2 DSP芯片的選擇與封裝51)芯片的選擇原則:52)芯片的封裝:51.3 DSP系統(tǒng)設(shè)計(jì)的方法和步驟61.4DSP前沿技術(shù)與應(yīng)用8第二章 DSP硬件部分設(shè)計(jì)102.1 硬件設(shè)計(jì)任務(wù)概述102.2 總體方案設(shè)計(jì)102.3 模塊電路原理圖設(shè)計(jì)112.3.1主芯片為T(mén)MS320C5502112.3.2外設(shè)電路原理圖設(shè)計(jì)112.3.3電源模塊112.3.4 時(shí)鐘電
2、路模塊122.3.5 JTAG仿真模塊132.3.6 復(fù)位電路模塊132.3.7數(shù)碼管電路模塊142.3.8 FLASH:AM29LV400B 模塊152.4 硬件電路PCB設(shè)計(jì)162.5硬件設(shè)計(jì)小結(jié)18第三章 DSP軟件部分設(shè)計(jì)183.1.1、軟件設(shè)計(jì)任務(wù)概述183.1.2 . 程序設(shè)計(jì)思路與算法原理183.1.3. 軟件設(shè)計(jì)流程193.1.4設(shè)計(jì)程序編寫(xiě)193.2 音樂(lè)噴泉293.2.1、軟件設(shè)計(jì)任務(wù)概述293.2.2 . 程序設(shè)計(jì)思路與算法原理293.2.3、設(shè)計(jì)程序編寫(xiě)293.3 人機(jī)界面主題設(shè)計(jì)- 42 -3.3.1設(shè)計(jì)程序編寫(xiě)- 42 -3.3.2軟件設(shè)計(jì)結(jié)果與小結(jié)- 43 -3.
3、3.3、軟件設(shè)計(jì)小結(jié)- 61 -第四章小結(jié)- 62 -參考文獻(xiàn)- 63 -序 言DSP數(shù)字信號(hào)處理(Digital Signal Processing,簡(jiǎn)稱DSP)是一門(mén)涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。自1965年由Cooley和Tukey提出DFT(離散傅里葉變換)的高效快速算法(Fourier Transform,簡(jiǎn)稱FFT)以來(lái),DSP已有近50年的歷史。隨著計(jì)算機(jī)和信息技術(shù)的發(fā)展,數(shù)字信號(hào)處理技術(shù)已形成一門(mén)獨(dú)立的學(xué)科系統(tǒng)。最初的DSP器件只是被設(shè)計(jì)成用以完成復(fù)雜數(shù)字信號(hào)處理的算法。DSP器件緊隨著數(shù)字信號(hào)理論的發(fā)展而不斷發(fā)展。在20世紀(jì)60年代,數(shù)字信號(hào)處理技術(shù)才剛剛起步
4、。60年代中期以后,快速傅里葉算法的出現(xiàn)及大規(guī)模集成電路的發(fā)展大大促進(jìn)了DSP技術(shù)與器件的飛速發(fā)展。DSP器件的發(fā)展大致可分為三個(gè)階段: (1)1980年前后的雛形階段。(2)1990年前后的成熟階段。(3)2000年之后的完善階段數(shù)字信號(hào)處理利用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備,以數(shù)字形式對(duì)信號(hào)進(jìn)行采集、變換、濾波、估值、增強(qiáng)、壓縮、識(shí)別等處理,得到符合人們所需要的信號(hào)形式。數(shù)字信號(hào)處理與模擬信號(hào)處理是信號(hào)處理的子集,數(shù)字信號(hào)處理技術(shù)及設(shè)備具有靈活、精確、抗干擾強(qiáng)、設(shè)備尺寸小、造價(jià)低、速度快等突出優(yōu)點(diǎn),這些都是模擬信號(hào)處理技術(shù)與設(shè)備所無(wú)法比擬的。數(shù)字信號(hào)處理是以眾多的學(xué)科為理論基礎(chǔ)的,它所涉及的范圍及其
5、廣泛。例如,在數(shù)學(xué)領(lǐng)域,微積分、概率統(tǒng)計(jì)、隨機(jī)過(guò)程、數(shù)值分析等都是數(shù)字信號(hào)處理的基本工具,與網(wǎng)絡(luò)理論、信號(hào)與系統(tǒng)、控制論、通信理論、故障診斷等也密切相關(guān)。一些新興的學(xué)科,如人工智能、模式識(shí)別、神經(jīng)網(wǎng)絡(luò)等,都與數(shù)字信號(hào)處理密不可分??梢哉f(shuō),數(shù)字信號(hào)處理是把許多經(jīng)典的理論體系作為自己的理論基礎(chǔ),同時(shí)又使自己成為一系列新興學(xué)科的理論基礎(chǔ)。DSP芯片,是一種特別適合于進(jìn)行數(shù)字信號(hào)處理運(yùn)算的微處理器,其主要應(yīng)用是實(shí)時(shí)快速地實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法。根據(jù)數(shù)字信號(hào)處理的要求,設(shè)計(jì)DSP應(yīng)用系統(tǒng),選擇DSP芯片是非常重要的一個(gè)環(huán)節(jié)。只有選定了DSP芯片,才能進(jìn)一步設(shè)計(jì)其外圍電路及系統(tǒng)的其他電路??偟膩?lái)說(shuō),DS
6、P芯片的選擇應(yīng)根據(jù)實(shí)際的應(yīng)用系統(tǒng)需要而確定。不同的DSP應(yīng)用系統(tǒng)由于應(yīng)用場(chǎng)合、應(yīng)用目的等不盡相同,對(duì)DSP芯片的選擇也是不同的。DSP處理器的著眼點(diǎn)是要求速度快、處理的數(shù)據(jù)量大、效率高。但是單純提高時(shí)鐘速度受到工藝等各種因素的限制,一般是緩慢的,所以必須從結(jié)構(gòu)上著手。某些概念其實(shí)在二十世紀(jì)40年代已經(jīng)出現(xiàn):其一是改造處理器的處理方法,用多總線、多存儲(chǔ)器體系結(jié)構(gòu);其二是提高程序和數(shù)據(jù)流的速度,采用流水線,并行處理等方法。盡管不同廠商采用不同的技術(shù)和措施,但在這些方面都有共同點(diǎn)。數(shù)字化技術(shù)有今天的飛速發(fā)展,是依仗于強(qiáng)大的軟、硬件環(huán)境支撐。作為數(shù)字信號(hào)處理的一個(gè)實(shí)際任務(wù)就是要求能夠快速、高效、實(shí)時(shí)完
7、成處理任務(wù),這就要通過(guò)通用或?qū)S玫臄?shù)字信號(hào)處理器來(lái)完成。因此,數(shù)字信號(hào)處理器是用來(lái)完成數(shù)字信號(hào)處理任務(wù)的一個(gè)軟、硬件環(huán)境和硬件平臺(tái)。在過(guò)去的二十多年時(shí)間里,數(shù)字信號(hào)處理已經(jīng)在通信等領(lǐng)域得到極為廣泛的應(yīng)用。德州儀器、Freescale等半導(dǎo)體廠商在DSP處理器的開(kāi)發(fā)上擁有很強(qiáng)的實(shí)力。第一章 DSP理論技術(shù)概述1.1 課程設(shè)計(jì)目的與意義本課程是一門(mén)以實(shí)踐為主的技術(shù)類專業(yè)選修課,課程的教學(xué)目的是使學(xué)生了解DSP及DSP控制器的發(fā)展過(guò)程及其特點(diǎn),使學(xué)生較熟練地在硬件上掌握DSP及DSP硬件器的結(jié)構(gòu)、各部件基本工作原理,在軟件上掌握DSP的指令系統(tǒng)、程序設(shè)計(jì)方法,學(xué)會(huì)TMS320系列中1至2種DSP芯片
8、的基本使用方法,并能重點(diǎn)利用DSP及DSP控制器設(shè)計(jì)典型的應(yīng)用系統(tǒng), 為今后從事相關(guān)設(shè)計(jì)與研究打下基礎(chǔ)。1.2 DSP芯片的選擇與封裝1)芯片的選擇原則:根據(jù)實(shí)際應(yīng)用系統(tǒng)需要、應(yīng)用場(chǎng)合、目的,選擇滿足所需功能、成本低、耗電小、使用方便、有技術(shù)支持、升級(jí)方便的芯片。DSP芯片的選擇是有技術(shù)指標(biāo)決定的,例如:由信號(hào)的頻率決定系統(tǒng)的采樣頻率;有采樣頻率句頂完成任務(wù)書(shū)中最復(fù)雜的算法所需的最大時(shí)間以及系統(tǒng)對(duì)實(shí)時(shí)程序的要求,判斷系統(tǒng)能否完成工作;有數(shù)量及程序的長(zhǎng)短決定RAM的容量,是否需要擴(kuò)展RAM及RAM的容量;等等。在確定DSP芯片型號(hào)之后,應(yīng)當(dāng)先進(jìn)行系統(tǒng)的總體的設(shè)計(jì)。首先采用高級(jí)語(yǔ)言matlab等對(duì)
9、算法進(jìn)行仿真,確定最佳算法并初步確定參數(shù),對(duì)系統(tǒng)的軟硬件進(jìn)行初步分工。2)芯片的封裝:1) DIP 雙列直插式封裝,插裝型封裝之一,引腳從封裝兩側(cè)引出,封裝材料有塑料和陶瓷兩種。2) SIP單列直插式封裝 引腳從封裝的一個(gè)側(cè)點(diǎn)引出,排列成一條直線。當(dāng)裝配到印刷基板上的封裝成側(cè)立狀。3) SOJ J型引腳小外型封裝表面貼裝型封裝之一,引腳從封裝兩側(cè)引出象下呈J字型。4) SDP 也叫SOIC小外型封裝,表面貼裝型封裝之一,引腳從封裝兩側(cè)引出呈海鷗翼型。5) PLCC 帶引線的塑料芯片載體,表面貼裝型封裝之一,引腳從封裝的四個(gè)側(cè)面引出,呈J字型,是塑料制品。6) QFP 四側(cè)引腳扁平封裝,引腳從四
10、個(gè)側(cè)面引出呈海鷗翼型,基材有陶瓷、金屬和塑料三種。7) BGA 球型觸點(diǎn)陣列表面封裝之一,在印刷基板的背面按陣列方式制作出球型凸點(diǎn),以代替引腳。1.3 DSP系統(tǒng)設(shè)計(jì)的方法和步驟下圖為一個(gè)典型DSP系統(tǒng)抗混疊濾波器DPS芯片A/DD/A平滑濾波器輸入輸出圖1-1 DSP典型系統(tǒng)框圖 先將輸入的模擬信號(hào)進(jìn)行帶限濾波和抽樣,在進(jìn)行A/D變換,將信號(hào)變換成數(shù)字比特流,經(jīng)DSP芯片處理后的數(shù)值樣值,再經(jīng)D/A變換成模擬樣值之后再進(jìn)行內(nèi)插和平滑濾波即可得到連續(xù)的模擬信號(hào)輸出。根據(jù)奈奎斯特抽樣定理,為保證信息不丟失,抽樣頻率至少是輸入帶限信號(hào)最高頻率的兩倍,其中抗混疊濾波的作用,就是將輸入的模擬信號(hào)中高于
11、折疊頻率的分量濾除,以防止信號(hào)頻譜出現(xiàn)混疊/DSP芯片是系統(tǒng)的關(guān)鍵。(1) 總體方案設(shè)計(jì)在進(jìn)行DSP系統(tǒng)設(shè)計(jì)之前首先應(yīng)給出明確的設(shè)計(jì)任務(wù),給出設(shè)計(jì)任務(wù)書(shū)。在設(shè)計(jì)任務(wù)書(shū)中應(yīng)將系統(tǒng)要達(dá)到的功能描述準(zhǔn)確、清楚;描述的方式可以是人工語(yǔ)言,也可以是流程圖或算法描述。之后將設(shè)計(jì)任務(wù)書(shū)轉(zhuǎn)化為量化的技術(shù)指標(biāo)。下圖為DSP應(yīng)用系統(tǒng)設(shè)計(jì)的一般步驟: 根據(jù)DSP應(yīng)用定義系統(tǒng)能指標(biāo)選擇DSP芯片軟件編程硬件設(shè)計(jì)軟件調(diào)試硬件調(diào)試系統(tǒng)集成系統(tǒng)測(cè)試和調(diào)校試圖1-2 總體設(shè)計(jì)方案流程圖(2) 軟件設(shè)計(jì)階段軟件變成步驟如下:1) 用C語(yǔ)言、匯編語(yǔ)言或者兩種變成語(yǔ)言混合編寫(xiě)程序,再把它們分別轉(zhuǎn)換成DSP的匯編語(yǔ)言并送到匯編語(yǔ)言匯
12、編器進(jìn)行匯編,生成目標(biāo)文件.2) 將目標(biāo)文件送入連接器進(jìn)行連接,得到可執(zhí)行文件.3) 將克制性文件掉如到調(diào)試器進(jìn)行調(diào)試,檢查運(yùn)行結(jié)果是否正確.如果著呢宮闕進(jìn)入下一步;如果不正確則返回第一步.4) 進(jìn)行代碼轉(zhuǎn)換將代碼寫(xiě)入EEPROM,并脫離仿真器進(jìn)行程序,檢查結(jié)果是否正確。如果不正確,返回上一步;如果正確,進(jìn)入下一步。5) 軟件調(diào)試,軟件調(diào)試借助DSP開(kāi)發(fā)工具,如軟件模擬器、DSP開(kāi)發(fā)系統(tǒng)或仿真器等。(3) 硬件設(shè)計(jì)階段1) 設(shè)計(jì)硬件實(shí)現(xiàn)方案 硬件實(shí)現(xiàn)方案是指根據(jù)性能指標(biāo)、工期、成本等,確定最優(yōu)硬件實(shí)現(xiàn)方案,并畫(huà)出硬件系統(tǒng)框圖。2) 器件的選型 除選擇DSP芯片外,一般還要考慮選擇A/D、D/A
13、、內(nèi)存、電源、邏輯控制、通信、人機(jī)接口、總線等基本部件。3) 原理圖設(shè)計(jì) 硬件設(shè)計(jì)階段原理圖設(shè)計(jì)是關(guān)鍵。在原理圖設(shè)計(jì)時(shí)必須清楚了解器件的使用和系統(tǒng)的開(kāi)發(fā),對(duì)于關(guān)鍵環(huán)節(jié)要做仿真。4) PCB板設(shè)計(jì) PCB設(shè)計(jì)要求DSP系統(tǒng)設(shè)計(jì)人員既要熟悉系統(tǒng)工作原理,又要清楚布線工藝和系統(tǒng)結(jié)構(gòu)設(shè)計(jì)。5) 軟、硬件調(diào)試 在采用硬件仿真器進(jìn)行調(diào)試時(shí),如果沒(méi)有仿真器、且系統(tǒng)不復(fù)雜,則可借助一般的工具進(jìn)行調(diào)試。(4) 系統(tǒng)集成 系統(tǒng)的軟、硬件設(shè)計(jì)分別調(diào)試完成之后,進(jìn)行系統(tǒng)集成。系統(tǒng)集成是將軟、硬件結(jié)合起來(lái),并組合成樣機(jī),在實(shí)際系統(tǒng)中運(yùn)行,進(jìn)行系統(tǒng)測(cè)試。1.4DSP前沿技術(shù)與應(yīng)用語(yǔ)音處理:語(yǔ)音編碼、語(yǔ)音合成、語(yǔ)音識(shí)別、語(yǔ)
14、音增強(qiáng)、語(yǔ)音郵件、語(yǔ)音儲(chǔ)存等。圖像/圖形:二維和三維圖形處理、圖像壓縮與傳輸、圖像識(shí)別、動(dòng)畫(huà)、機(jī)器人視覺(jué)、多媒體、電子地圖、圖像增強(qiáng)等。軍事:保密通信、雷達(dá)處理、聲吶處理、導(dǎo)航、全球定位、跳頻電臺(tái)、搜索和反搜索等。儀器儀表:頻譜分析、函數(shù)發(fā)生、數(shù)據(jù)采集、地震處理等。自動(dòng)控制:控制、深空作業(yè)、自動(dòng)駕駛、機(jī)器人控制、磁盤(pán)控制等。醫(yī)療:助聽(tīng)、超聲設(shè)備、診斷工具、病人監(jiān)護(hù)、心電圖等。家用電器:數(shù)字音響、數(shù)字電視、可視電話、音樂(lè)合成、音調(diào)控制、玩具與游戲等。生物醫(yī)學(xué)信號(hào)處理舉例:CT:計(jì)算機(jī)X射線斷層攝影裝置。(其中發(fā)明頭顱CT英國(guó)EMI公司的豪斯菲爾德獲諾貝爾獎(jiǎng)。)CAT:計(jì)算機(jī)X射線空間重建裝置。出
15、現(xiàn)全身掃描,心臟活動(dòng)立體圖形,腦腫瘤異物,人體軀干圖像重建。第二章 DSP硬件部分設(shè)計(jì)2.1 硬件設(shè)計(jì)任務(wù)概述 DSP 最小系統(tǒng)是由滿足DSP運(yùn)行的最小硬件組成,包括電源電路,復(fù)位電路,時(shí)鐘電路,JTAG 接口電路,電平轉(zhuǎn)換電路等。請(qǐng)選一55系列DSP芯片設(shè)計(jì)最小系統(tǒng)。要求: 1. DSP芯片選擇TMS320VC5502 外設(shè)擴(kuò)展部分: (1)液晶LCD12864;(2) 2片4位數(shù)碼管 (3)鍵盤(pán)和LED,設(shè)計(jì)設(shè)計(jì)一2X4鍵盤(pán)控制8個(gè)LED(4)SRAM:IS61LV6416(5)FLASH:AM29LV400B。在必選題的基礎(chǔ)上,可多加其它選題的外設(shè)功能。3.請(qǐng)運(yùn)用Protel或者Alti
16、um Designer等完成最小系統(tǒng)的schematic原理圖及PCB布線圖。4.設(shè)計(jì)完成,根據(jù)規(guī)范格式撰寫(xiě)設(shè)計(jì)報(bào)告,并附上布線3D效果截圖,器件物料表BOM等。 2.2 總體方案設(shè)計(jì)本次硬件電路設(shè)計(jì)大體方案設(shè)計(jì)如下:最小系統(tǒng)框圖如下:圖2-1 DSP最小系統(tǒng)框圖VCTMS320VC5502電源電路時(shí)鐘電路復(fù)位電路JTAG數(shù)碼管FLASH2.3 模塊電路原理圖設(shè)計(jì)2.3.1主芯片為T(mén)MS320C5502引腳圖如下:圖2-2 TMS320VC5502引腳圖2.3.2外設(shè)電路原理圖設(shè)計(jì)2.3.3電源模塊C55x數(shù)字信號(hào)處理器電源包括內(nèi)核電源和外部接口電源,其外部接口電源為3.3V,內(nèi)核則根據(jù)型號(hào)不
17、同而采用了不同電壓。由于C55x處理器大多應(yīng)用于低功耗場(chǎng)合,因此電源電路的設(shè)計(jì)應(yīng)注意電源的轉(zhuǎn)換效率和電路的復(fù)雜程度,而高效率的DC-DC轉(zhuǎn)換電路則十分適合這種應(yīng)用。TPS54110能夠提供1.5A的連續(xù)電流輸出,其輸出電壓可調(diào),電壓輸出范圍覆蓋0.93.3V,能夠較好的滿足C55x處理器的供電要求,圖3-1給出采用TPS76HD301實(shí)現(xiàn)DC-DC轉(zhuǎn)換的電路原理圖。圖2-3 電源模塊圖 2.3.4 時(shí)鐘電路模塊 任何工作都按時(shí)間順序。用于產(chǎn)生這個(gè)時(shí)間的電路就是時(shí)鐘電路?,F(xiàn)在流行的串行時(shí)鐘電路很多,如DS1302、DS1307、PCF8485等。這些電路的接口簡(jiǎn)單、價(jià)格低廉、使用方便,被廣泛地采
18、用。實(shí)時(shí)時(shí)鐘電路DS1302是DALLAS公司的一種具有涓細(xì)電流充電能力的電路,主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通20MHz晶振。 圖2-4時(shí)鐘電路模塊圖2.3.5 JTAG仿真模塊 JTAG 仿真器也稱為 JTAG 調(diào)試器,是通過(guò) ARM 芯片的 JTAG 邊界掃描口進(jìn)行調(diào)試的設(shè)備。 JTAG 仿真器比較便宜,連接比較方便,通過(guò)現(xiàn)有的 JTAG 邊界掃描口與 ARM CPU 核通信,屬于完全非插入式 ( 即不使用片上資源 ) 調(diào)試,它無(wú)需目標(biāo)存儲(chǔ)器,不占用目標(biāo)系統(tǒng)的任何端口,而這些是駐留監(jiān)控軟件所必需的。另外,由于 JTAG 調(diào)試
19、的目標(biāo)程序是在目標(biāo)板上執(zhí)行,仿真更接近于目標(biāo)硬件,因此,許多接口問(wèn)題,如高頻操作限制、 AC 和 DC 參數(shù)不匹配,電線長(zhǎng)度的限制等被最小化了。使用集成開(kāi)發(fā)環(huán)境配合 JTAG 仿真器進(jìn)行開(kāi)發(fā)是目前采用最多的一種調(diào)試方式。圖2-5 JTAG仿真模塊2.3.6 復(fù)位電路模塊在系統(tǒng)上電過(guò)程中,如果電源電壓還沒(méi)有不穩(wěn)定,這時(shí)DSP進(jìn)入工作狀態(tài)可能造成不可預(yù)知的后果,甚至造成硬件的損壞,解決這個(gè)問(wèn)題的方法就是DSP在上電過(guò)程中保持復(fù)位狀態(tài),因此有必要在系統(tǒng)中加入上電復(fù)位電路,上電復(fù)位電路的作用可以保證上電可靠,并在用戶需要時(shí)實(shí)現(xiàn)手工復(fù)位。圖2-6復(fù)位電路模塊2.3.7數(shù)碼管電路模塊一共12個(gè)引腳,4個(gè)位
20、選,8個(gè)段選。從上面一排左邊第一引腳開(kāi)始,按順時(shí)針順序依次往下遍歷所有引腳。由于DSP芯片屬于信號(hào)處理類,故帶載能力較差,由于需要驅(qū)動(dòng)8個(gè)數(shù)碼管所以需要加上其他的輔助電路,這里我選擇了74HC573鎖存器,使用這個(gè)芯片有兩個(gè)原因:其一是它能使DSP芯片帶動(dòng)8個(gè)數(shù)碼管,其二它有片選信號(hào)引腳,可以提高I/O口利用率 圖2-7 4位數(shù)碼管電路模塊2.3.8 FLASH:AM29LV400B 模塊如圖2-8所示,電路FLASH中的接口與DSP芯片VC5502的接口相連接構(gòu)成電路系統(tǒng)。圖2-8 FLASH:AM29LV400B2.4 硬件電路PCB設(shè)計(jì)利用Protel分別完成了電源電路、時(shí)鐘電
21、路、復(fù)位電路等外設(shè)電路的繪制,完成了最小系統(tǒng)的原理圖,繪制過(guò)程結(jié)束后進(jìn)行ERC檢測(cè),確保繪制無(wú)錯(cuò),并生成了PCB圖、PCB板及3D效果圖。硬件設(shè)計(jì)成果如圖2-9、圖2-10、圖2-11所示圖2-9電路原理圖圖2-10電路PCB圖 圖2-11 PCB 3D效果圖2.5硬件設(shè)計(jì)小結(jié)在一周的硬件設(shè)計(jì)中,最為麻煩的就是對(duì)于芯片資料的獲取。因?yàn)樵谡麄€(gè)設(shè)計(jì)的過(guò)程中,對(duì)于所使用的軟件Protel,因此使用起來(lái)沒(méi)有任何的難度。所以硬件設(shè)計(jì)的關(guān)鍵就是要查找所使用的芯片的資料,包括芯片的功能、管腳及其定義、封裝等等。因?yàn)槲覀兯檎业降男酒Y料幾乎都是英文資料,而且涉及的專業(yè)詞語(yǔ)較多,翻譯比較困難。 第三章 DSP
22、軟件部分設(shè)計(jì)3.1.1、軟件設(shè)計(jì)任務(wù)概述結(jié)合按鍵設(shè)計(jì)小游戲貪吃蛇。(1)控制游戲:按方向鍵"W","S","A","D"能控制蛇的移動(dòng); (2)蛇在固定的范圍內(nèi)移動(dòng),不能撞到自身,否則,游戲結(jié)束。 (3)固定范圍內(nèi)隨機(jī)出現(xiàn)食物,蛇每吃一個(gè)白子長(zhǎng)長(zhǎng)一格,長(zhǎng)度增加。3.1.2 . 程序設(shè)計(jì)思路與算法原理(1) 接受玩家按下的方向鍵消息,并保存到方向向量中。 (2) 定義一個(gè)時(shí)間定時(shí)器。 (3) 當(dāng)每次時(shí)間間隔到達(dá)時(shí),則根據(jù)方向變量來(lái)更新貪吃蛇BODY向量。 (
23、4) 判斷BODY向量的第一個(gè)元素的坐標(biāo)數(shù)是否碰到邊界或者蛇身,如果有,轉(zhuǎn)到第(7)步。(5) 判斷BODY向量的第一個(gè)元素中的坐標(biāo)數(shù)據(jù)是否與當(dāng)前果實(shí)坐標(biāo)重合,如果有,表示貪吃蛇已經(jīng)吃到果實(shí)。這時(shí)就像貪吃蛇游戲結(jié)束,顯示游戲時(shí)間和得分。BODY向量添加一個(gè)元素,并重新生成一個(gè)果實(shí)。 (6) 重繪整個(gè)貪吃蛇界面及果實(shí)。重復(fù)前面步驟(1)(6)。 (7) 游戲結(jié)束時(shí),計(jì)算當(dāng)前游戲得分,并顯示游戲所用時(shí)間。3.1.3. 軟件設(shè)計(jì)流程3.1.4設(shè)計(jì)程序編寫(xiě)19#include "LCD.h"#define MCTRKEY
24、(*(unsigned int *)0x602802) / port8005#define CTRCLKEY (*(unsigned int *)0x600803) / port8006#define CTRLED (*(unsigned int *)0x600802) / port8004int x,y,x1,y1,x2,x3,x4,y2,y3,y4,x5,y5,xx,yy,xx1=40,yy1=40,a,b,color,i,j=0,k=0,k1=0,k2=0,flag=0,c=8,d=8,xx2=160,yy2=60,tt=0;void keyscan();void fangshi1();
25、void fangshi2();void fangshi3();void fangshi4();void fangshi5();void draw();void draw1(int xx,int yy);void chi1();void chi2();void chi3();void jieshu();void xiayiguan();void dierguan();unsigned int ledkey116=0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, /黑色方塊0xffff,0xffff,0xffff,0xffff,0x
26、ffff,0xffff,0xffff,0xffff;unsigned int str28=0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff;unsigned int tu148=0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8000,0xC000,0xC000,0x6000,0x3FF8,0x000E,0x0006,0x0006,0x000C,0x1FF8,0x1900,0x1800,0x1800,0x1800,0x1800,0x180
27、0,0x1FC0,0x003C,0x0006,0x0006,0x0006,0x1F9E, /圖片0x33F0,0x2000,0x6000,0xC000,0xC000,0x8000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000;unsigned int tu248=0x0000,0x0000,0x0000,0x0800,0x7F00,0x83E0,0x0038,0x000C,0x0006,0x0003,0x0181,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x
28、0180,0x0180,0x0180,0x0000,0x0000,0x0000,0x0000,0x0000,0x0100,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0001,0x0001,0x0003,0x000E,0x003C,0x81F0,0xFFE0,0x0C00,0x0000,0x0000,0x0000,0x0000;unsigned int tu348=0x0000,0x0000,0x0000,0x0000,0x0000,0x0007,0x001C,0x0030,0x6060,0x7
29、0C0,0x08C0,0x0780,0x0700,0x6300,0x6300,0x0200,0x0200,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0200,0x0200,0x7300,0x7300,0x6300,0x0780,0x0D80,0x38C0,0x70C0,0x0060,0x0038,0x000E,0x0007,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000;unsigned int ledkey108=0x00,0x
30、00,0x7C,0x82,0x82,0x82,0x7C,0x00,/00x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00,/10x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00,/20x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00,0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00,0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00,0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00,0x00,0x00,0x02,0xC2,0
31、x32,0x0A,0x06,0x00,0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00,0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00;unsigned int str180=0x0080,0x0040,0x4240,0xE220,0x5250,0x4A48,0x4644,0x6243,0x2244,0x2248,0x2A50,0xF220,0x6260,0x00C0,0x0040,0x0000,0x0820,0x1C24,0x0B24,0x08E4,0x0C24,0x0524,0x4E24,0x2420,0x1010,0x0C10
32、,0x03FF,0x2010,0x4010,0x3FF0,0x0000,0x0000,0x0000,0x7FF8,0x108C,0x108B,0x1088,0x3FF8,0x0040,0x0030,0x008F,0x0308,0x2608,0x4008,0x2008,0x1FF8,0x0000,0x0000,0x4008,0x4008,0x2008,0x1008,0x0C08,0x0308,0x00F9,0x004A,0x204C,0x4048,0x4048,0x3FC8,0x0008,0x0008,0x0008,0x0000, /會(huì)動(dòng)的方塊0x0810,0x1810,0x0FFF,0x041
33、0,0x8510,0x4100,0x3108,0x0D08,0x03FF,0x0508,0x0908,0x1108,0x31F8,0x6100,0x2100,0x0000; unsigned int str380=0x0400,0x0420,0x2224,0x1924,0x00A4,0x407F,0x8024,0x7F24, 0x0024,0x087F,0x30A4,0x0924,0x3224,0x0424,0x0420,0x0000, 0x0200,0x0202,0x020A,0x7AEA,0x4AAA,0x4BAA,0x4AAA,0x4AAF, 0x4AAA,0x4BAA,0x4AAA,0
34、x7AEA,0x020A,0x0202,0x0200,0x0000, /恭喜過(guò)關(guān)! 0x4080,0x2081,0x1F8E,0x2004,0x2000,0x4010,0x4050,0x4390, 0x4110,0x4810,0x5010,0x4FFF,0x4010,0x4010,0x4010,0x0000, 0x0100,0x8110,0x4110,0x2110,0x1111,0x091E,0x0514,0x03F0, 0x0510,0x0918,0x3117,0x6112,0xC118,0x4110,0x0100,0x0000, 0x0000,0x0000,0x0000,0x0000,0x
35、0000,0x0000,0x0000,0xCFFF, 0xCFFF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000;unsigned int str448=0x0010,0x2008,0x2004,0x23D3,0x1256,0x125A,0x0A52,0x065A,0xFFF4,0x0253,0x0256,0x125A,0x2272,0x1E02,0x0002,0x0000,0x0000,0x1000,0x1004,0x1004,0x1004,0x1004,0x1004,0x1004, /第二關(guān)0x1004,0x1004,0x1004,0x1
36、006,0x1004,0x1800,0x1000,0x0000,0x0100,0x8110,0x4110,0x2110,0x1111,0x091E,0x0514,0x03F0,0x0510,0x0918,0x3117,0x6112,0xC118,0x4110,0x0100,0x0000; unsigned int str532=0x0000,0x0140,0x8120,0x4118,0x2116,0x1110,0x0D10,0x03FF,0x0510,0x0910,0x3110,0x6110,0xC110,0x4100,0x0100,0x0000,0x0000,0x4000,0x31FE,0x
37、0C02,0x03F2,0x0402,0xB9FE,0x5020, /失敗0x20F8,0x1317,0x0C12,0x1310,0x60F0,0xC010,0x4010,0x0000;unsigned int str632=0x4000,0x3000,0x0FF8,0x0048,0x0848,0x5048,0x4FC8,0x2008,0x10FF,0x0B08,0x0C09,0x120A,0x21C8,0x4088,0xF008,0x0000, /成功0x0400,0x0C04,0x0404,0x0404,0x03FC,0x4204,0x2214,0x1114,0x0C10,0x2390,0
38、x207F,0x6010,0x2010,0x1FF0,0x0000,0x0000;unsigned int str832=0x8000,0xE000,0x7800,0x1FFE,0x07FE,0x0248,0x024C,0x7FFC,0x7FFC,0x0124,0x6164,0xFFFC,0xFFFE,0x0004,0x0000,0x0000, /用時(shí)0x0000,0x0000,0x3FF8,0x3FF0,0x1990,0x1FF8,0x1FF8,0x0180,0x2780,0x66C0,0xFFFE,0xFFFE,0x0044,0x0040,0x0040,0x0040;unsigned in
39、t str716=0x0000,0x0000,0x0000,0x00C0,0x01E0,0x03F0,0x07F8,0x0FFC,0x0FFC,0x07F8,0x03F0,0x01E0,0x00C0,0x0000,0x0000,0x0000; /路障代碼unsigned int uWork1,uWork2,uWork3,nWork;unsigned int nScreenBuffer30*128;#define CTRSTATUS (*(unsigned int *)0x600800) /port8000#define z 16int w,ww,www;main() unsigned int
40、uWork,* pWork; PLL_Init(12);SDRAM_init(); LCDTurnOff(); LCDSetScreenBuffer(nScreenBuffer);for ( uWork=0,pWork=nScreenBuffer;uWork<30*128;uWork+,pWork+ )(*pWork)=0;LCDSetDelay(1);LCDTurnOn();/ 打開(kāi)顯示LCDCLS(); w=0; ww=500,www=5000; x=0;y=0;a=0;b=0;x1=128;y1=96;x2=48;y2=56;x3=180;y3=24;LCDPutCString(s
41、tr1,80,104,5,3); for(i=1;i<10;i+)LCDWriteBytes(ledkeyi,112,64,0); LCDWriteBytes(ledkey0,120,64,0);LCDPutCString(ledkey1,40+(i-1)*16,80,1,3);_Delay(8000); /畫(huà)進(jìn)度條 LCDWriteBytes(ledkey1,104,64,0); LCDWriteBytes(ledkey0,112,64,0); LCDWriteBytes(ledkey0,120,64,0); /寫(xiě)進(jìn)度數(shù)LCDPutCString(ledkey1,40+9*16,80,
42、1,3);_Delay(8000); LCDCLS(); draw();LCDPutCString(ledkey1,x1,y1,1,3);LCDWriteBytes(ledkeyj,0,128,0);LCDPutCString(str7,24,60,1,3); LCDPutCString(str7,80,90,1,3);LCDPutCString(str7,120,24,1,3); /畫(huà)路障LCDPutCString(str7,200,120,1,3); while ( 1 ) keyscan();chi1();chi2();chi3();LCDCLS();/ 清除顯示內(nèi)存 LCDTurnOf
43、f();LCDSetDelay(0);exit(0);void keyscan() /按鍵掃描 uWork1=MCTRKEY; CTRCLKEY=0; asm(" nop "); uWork2=MCTRKEY; CTRCLKEY=0; if(uWork1=uWork2&&uWork1!=0) nWork=uWork1; switch(nWork) case 0x02:fangshi1();break; case 0x10:fangshi2();break; case 0x20:fangshi3();break; case 0x40:fangshi4();br
44、eak; case 0x80:xiayiguan();break; void fangshi1()a=0;b=4;draw();x+=a;y+=b; void fangshi2()a=-4;b=0;draw();x+=a;y+=b;j=2; void fangshi3()a=0;b=-4;draw();x+=a;y+=b;j=3; void fangshi4()a=4;b=0;draw();x+=a;y+=b;j=4;void draw() color=2; LCDDrawLine(x,y,x+16,y,color);LCDDrawLine(x,y,x,y+16,color); /畫(huà)方框LCD
45、DrawLine(x+16,y,x+16,y+16,color);LCDDrawLine(x,y+16,x+16,y+16,color);LCDRefreshScreen();_Delay(w);LCDDrawLine(x,y,x+16,y,color);LCDDrawLine(x,y,x,y+16,color);LCDDrawLine(x+16,y,x+16,y+16,color);LCDDrawLine(x,y+16,x+16,y+16,color);void chi1()if(x=x1)&&(y=(y1-16) if(k=0) /吃第一個(gè)黑方塊 k=k+1; j=j+1;
46、LCDCLS();LCDWriteBytes(ledkey1,0,128,0); draw(); LCDPutCString(ledkey1,x2,y2,1,3); /出現(xiàn)第二個(gè)黑方塊void chi2() /吃第二個(gè)黑方塊if(x=x2)&&(y=(y2-16) if(k1=0) k1=k1+1; j=j+1;LCDCLS();LCDWriteBytes(ledkey2,0,128,0);draw(); LCDPutCString(ledkey1,x3,y3,1,3); /出現(xiàn)第三個(gè)黑方塊void chi3() /吃第三個(gè)黑方塊if(x=x3)&&(y=(y3
47、-16) if(k2=0) k2=k2+1; j=j+1;flag=1;LCDCLS();LCDWriteBytes(ledkey3,0,128,0);draw(); _Delay(www); LCDCLS(); LCDPutCString(str3,60,80,5,3);/過(guò)第一關(guān) void xiayiguan()if(flag=1) /出現(xiàn)第二關(guān)LCDCLS();LCDPutCString(str4,60,120,3,3);_Delay(www);LCDCLS();dierguan(); void dierguan() LCDPutCString(ledkey1,0,72,1,3); LC
48、DDrawLine(x,y,x+16,y,color);LCDDrawLine(x,y,x,y+16,color);LCDDrawLine(x+16,y,x+16,y+16,color);LCDDrawLine(x,y+16,x+16,y+16,color);LCDRefreshScreen();_Delay(w);LCDDrawLine(x,y,x+16,y,color);LCDDrawLine(x,y,x,y+16,color);LCDDrawLine(x+16,y,x+16,y+16,color);LCDDrawLine(x,y+16,x+16,y+16,color); for(;) u
49、Work1=MCTRKEY; CTRCLKEY=0; asm(" nop "); uWork2=MCTRKEY; CTRCLKEY=0; if(uWork1=uWork2&&uWork1!=0) nWork=uWork1;if(nWork!=8)nWork&=0xf7; if(nWork=2) nWork|=uWork1; nWork&=0xf7; a=0;b=4; /上移 draw(); x+=a;y+=b; draw1(xx1,yy1);xx1+=c; yy1+=d; if ( xx1>230 | xx1<0 )c=-c; /
50、讓兩個(gè)小方框的規(guī)定的范圍內(nèi)移動(dòng)if ( yy1>118 | yy1<0 )d=-d; draw1(xx2,yy2);xx2+=c; yy2+=d; if ( xx2>230 | xx2<0 )c=-c;if ( yy2>118 | yy2<0 )d=-d; if(nWork=1) nWork|=uWork1; nWork&=0xf7; a=-4;b=0; draw(); x+=a;y+=b; /左移方框 draw1(xx1,yy1);xx1+=c; yy1+=d; if ( xx1>230 | xx1<0 )c=-c;if ( yy1>118 | yy1<0 )d=-d;draw1(xx2,yy2);xx2+=c; yy2+=d; if ( xx2>230 | xx2<0 )c=-c;if ( yy2>118 | yy2<0 )d=-d; if(nWork=32) nWork|=uWork1; nWork&=0xf7; a=0;b=-4; /下移 draw(); x+=a;y+=b; draw1(xx1,yy1);xx1+=c; yy1+=d; if ( xx1>230 | xx1<0 )c=-c;if ( yy1&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (人教PEP版2024)英語(yǔ)三上Unit 6 Making friends 單元復(fù)習(xí)課件
- 傳統(tǒng)戲曲當(dāng)代化表達(dá)-洞察及研究
- 耐藥基因轉(zhuǎn)移-洞察及研究
- 加密貨幣反洗錢(qián)技術(shù)-洞察及研究
- 生態(tài)旅游滿意度評(píng)價(jià)-洞察及研究
- 極端洪水沉積響應(yīng)-洞察及研究
- 檢測(cè)結(jié)果應(yīng)用研究-洞察及研究
- 1.2++實(shí)驗(yàn):用油膜法估測(cè)分子的大小+課件+-2024-2025學(xué)年高二下學(xué)期物理人教版(2019)選擇性必修第三冊(cè)
- 多維漏洞分析-洞察及研究
- 2025年超星爾雅學(xué)習(xí)通《勞動(dòng)通論》章節(jié)測(cè)試【必考】
- 品牌策略營(yíng)銷課件(共105頁(yè)).ppt
- 《飲料總酸度的測(cè)定》教學(xué)設(shè)計(jì)
- 固定資產(chǎn)投資統(tǒng)計(jì)培訓(xùn)PPT課件
- 煤炭工業(yè)露天煤礦可行性研究報(bào)告編制內(nèi)容
- 廣州市登革熱疫情應(yīng)急演練方案
- 螺桿制冷機(jī)組操作手冊(cè)
- 籃球《原地單手肩上投籃》教案
- 實(shí)驗(yàn)室生物安全記錄.doc
- 建設(shè)工程項(xiàng)目管理論文范文
- 中國(guó)金礦地理分布
- 大壩安全監(jiān)測(cè)資料整編與分析PPT課件
評(píng)論
0/150
提交評(píng)論