畢業(yè)設(shè)計(jì)--- 數(shù)碼相框的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設(shè)計(jì)(論文)</b></p><p>  題 目 數(shù)碼相框的設(shè)計(jì)與實(shí)現(xiàn) </p><p>  姓 名 </p><p>  學(xué) 號 </p><p>  專業(yè)班級

2、 </p><p>  所在學(xué)院 信息與電氣工程學(xué)院 </p><p>  指導(dǎo)教師(職稱) </p><p>  數(shù)碼相框的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  【摘要】 本課題以MCS-51單片機(jī)為開發(fā)平臺(tái),針對SD卡移植一種開源的

3、FATFS文件系統(tǒng),能自動(dòng)對SD卡上的文件進(jìn)行枚舉,并對符合格式要求的圖像文件進(jìn)行讀取操作。本系統(tǒng)采用軟件解碼技術(shù),實(shí)現(xiàn)對通用圖像文件格式BMP進(jìn)行解碼操作,并使圖像在彩色LCD顯示屏上顯示,同時(shí)通過按鍵控制圖像播放模式,包括圖片的切換以及循環(huán)顯示。該設(shè)計(jì)方案制作成本低,硬件構(gòu)成簡單,易于擴(kuò)展和升級,其解碼功能是通過軟件模擬實(shí)現(xiàn),這樣使系統(tǒng)具有良好的靈活性、適應(yīng)性以及實(shí)用性。</p><p>  【關(guān)鍵詞】 ST

4、C12C5A60S2單片機(jī),F(xiàn)AT FS文件系統(tǒng),BMP軟件解碼,SD卡 </p><p>  Design and Realization of Digital</p><p>  Photo Frame</p><p>  【Abstract】Based with MCS-51 MCU Development Platform,the sy

5、stem transfers an open source file system named FATFS for the SD card.This file system can automatically enumerate the files of SD card and achieve read operation of the image file which meets the requirements of format.

6、 At the same time the system uses the software decoding to achieve the decoding operation of the common image file formats BMP. While the image can be displayed on the color LCD, through the key buttons,the system also c

7、a</p><p>  【Key Words】 STC12C5A60S2 MCU,F(xiàn)ATFS FileSystem,BMP Software decoder,SD Card </p><p><b>  目 錄</b></p><p><b>  第1章 緒論1</b></p><p>  1.1

8、 選題背景1</p><p>  1.2 國內(nèi)外研究現(xiàn)狀1</p><p>  1.3 論文主要研究內(nèi)容2</p><p>  第2章 數(shù)碼相框的硬件設(shè)計(jì)3</p><p>  2.1 系統(tǒng)總體硬件設(shè)計(jì)3</p><p>  2.2 單片機(jī)處理器模塊4</p><p>  2.2.1

9、 單片機(jī)小系統(tǒng)設(shè)計(jì)4</p><p>  2.3 SD卡模塊5</p><p>  2.3.1 SD卡接口設(shè)計(jì)電路6</p><p>  2.4液晶彩屏顯示模塊6</p><p><b>  2.5按鍵模塊7</b></p><p>  2.6 串口模塊8</p><

10、;p>  2.7 電源電路8</p><p>  第3章 數(shù)碼相框的軟件設(shè)計(jì)10</p><p>  3.1軟件總體設(shè)計(jì)結(jié)構(gòu)10</p><p>  3.2圖像文件讀取設(shè)計(jì)11</p><p>  3.2.1 SD卡初始化12</p><p>  3.2.2 SPI數(shù)據(jù)傳輸13</p>

11、<p>  3.2.3 FAT FS文件系統(tǒng)移植設(shè)計(jì)14</p><p>  3.3圖像文件解碼設(shè)計(jì)18</p><p>  3.3.1 BMP圖像解碼18</p><p>  3.4圖像文件顯示設(shè)計(jì)20</p><p>  3.4.1液晶彩屏初始化20</p><p>  3.4.2彩屏點(diǎn)陣顯示設(shè)

12、計(jì)21</p><p>  3.5控制模塊23</p><p>  3.51 定時(shí)器初始化23</p><p>  3.5.2按鍵程序設(shè)計(jì)24</p><p>  第4章 制作成果展示及分析26</p><p>  4.1 數(shù)碼相框硬件制作成果及分析26</p><p>  4.2

13、圖像顯示結(jié)果及分析26</p><p><b>  結(jié)論28</b></p><p><b>  參考文獻(xiàn)29</b></p><p><b>  附錄A30</b></p><p><b>  致謝31</b></p><p

14、><b>  圖目錄</b></p><p>  圖2.1數(shù)碼相框系統(tǒng)硬件設(shè)計(jì)結(jié)構(gòu)3</p><p>  圖2.2單片機(jī)小系統(tǒng)時(shí)鐘電路設(shè)計(jì)結(jié)構(gòu)4</p><p>  圖2.3單片機(jī)小系統(tǒng)復(fù)位電路設(shè)計(jì)5</p><p>  圖2.4 SD卡接口設(shè)計(jì)電路6</p><p>  圖2.5單

15、片機(jī)與SD卡接口連接電路6</p><p>  圖2.6液晶彩屏設(shè)計(jì)電路7</p><p>  圖2.7按鍵設(shè)計(jì)電路7</p><p>  圖2.8串口設(shè)計(jì)電路8</p><p>  圖2.9電源設(shè)計(jì)電路9</p><p>  圖3.1主程序流程圖11</p><p>  圖3.2

16、SD卡初始化流程圖12</p><p>  圖3.3 SD卡圖像數(shù)據(jù)讀取流程14</p><p>  圖3.4 FAT文件系統(tǒng)存儲(chǔ)結(jié)構(gòu)15</p><p>  圖3.5 FAT FS讀取文件流程圖17</p><p>  圖3.6點(diǎn)陣顯示設(shè)計(jì)流程圖23</p><p>  圖4.1數(shù)碼相框硬件制作成果圖26

17、</p><p>  圖4.2 BMP圖像解碼前后對比圖27</p><p><b>  第1章 緒論</b></p><p><b>  1.1 選題背景</b></p><p>  近幾年來,數(shù)碼相機(jī)由于具有使用簡便,拍攝效果好,可立刻觀賞拍攝的照片,而且拍攝過程幾乎不產(chǎn)生任何成本等優(yōu)點(diǎn),已經(jīng)

18、完全取代了傳統(tǒng)相機(jī)。而隨著數(shù)碼相機(jī)的普及,所拍攝的數(shù)碼照片數(shù)量也越來越多。大多數(shù)人都喜歡用存儲(chǔ)器對數(shù)碼相片進(jìn)行保存,一是因?yàn)檫@些照片的打印成本要高于傳統(tǒng)的照片,二是這些照片可以隨時(shí)地放到電腦上進(jìn)行修改和觀賞。但是隨著相片數(shù)量的增加以及對這些相片的頻繁使用,人們發(fā)現(xiàn)只能使用電腦工具處理這些照片變得十分局限。因此,為了能夠更方便的保存并觀賞數(shù)碼相機(jī)拍攝的照片,與之相對應(yīng)的數(shù)碼相框就應(yīng)運(yùn)而生了。</p><p>  數(shù)

19、碼相框就是一個(gè)相框,不過它不用放進(jìn)相片的方式來展示,它可以通過讀卡器的接口從SD、MMC、CF、MS卡獲取相片,然后通過一個(gè)液晶屏幕顯示,并且它還具有保存、回放和循環(huán)瀏覽相片等功能。它比普通的相框更靈活多變,也給現(xiàn)在日益使用的數(shù)碼相片一個(gè)新的展示空間,是觀看和分享數(shù)碼照片的專用設(shè)備。</p><p>  數(shù)碼相框主要由CPU操作系統(tǒng)、存儲(chǔ)器、解碼器、顯示屏和微控制器組成。它的主要工作原理是通過CPU操作系統(tǒng)對外部

20、或內(nèi)部存儲(chǔ)器中的圖像信息進(jìn)行解碼,然后通過微控制器在顯示器上顯示圖像。</p><p>  1.2 國內(nèi)外研究現(xiàn)狀</p><p>  2003年,國內(nèi)第一款自主研發(fā)的“捷碩數(shù)碼相框”在滬面市。當(dāng)時(shí)它可存儲(chǔ)60幅圖片,可定時(shí)、間隔、循環(huán)地以靜態(tài)或動(dòng)態(tài)的形式顯示10英寸LCD照片,并具有放大、縮小、旋轉(zhuǎn)等多種圖片顯示功能。相框內(nèi)還含有MP3播放功能。這款數(shù)碼相框的面世,為人們帶來全新的數(shù)碼理

21、念。隨著數(shù)字科技技術(shù)的進(jìn)步,數(shù)碼相框的技術(shù)發(fā)展也日趨成熟。目前在國內(nèi)外,數(shù)碼相框系統(tǒng)設(shè)計(jì)的主流方案大概有三類[1]:</p><p>  (1)采用ARM+JPEG硬件解碼器作為核心處理系統(tǒng),解碼速度快,圖片顯示速度比較快捷,支持MPEG1, MPEG4,;在USB接口方面,支持USB2.0 Slave和USB1.1 Host;在音頻處理方面,支持mp3,wma,wav,aac,ape,flac,alac等音頻播

22、放??傮w來講其性能普遍比較全面,在靜態(tài)圖片處理,動(dòng)態(tài)影像處理,音頻處理,存儲(chǔ)卡的支持,USB以及擴(kuò)展功能上基本都做到了全覆蓋,而且功耗低,圖片分辨率也比較高。</p><p>  (2)采用單芯片處理系統(tǒng),PCB板結(jié)構(gòu)簡單,支持JPEG,BMP,GIF以及MP3、MP4的播放。這類相框成本比較低廉,但在圖片顯示效果上存在的問題是對高像素圖片的不支持,一般不高于600萬像素。</p><p>

23、;  (3)采用嵌入式的構(gòu)架來做數(shù)碼相框,采用純硬件解碼JPEG,對圖像的任何編輯操作均通過硬件來實(shí)現(xiàn),圖像處理速度快,支持圖像的像素也很高。但與第一類方案相比相比,在擴(kuò)展功能方面比較單一。</p><p>  在國內(nèi),數(shù)碼相框產(chǎn)品更多的是強(qiáng)調(diào)多功能,而國外特別是歐美的用戶,對簡潔、實(shí)用的產(chǎn)品更為青睞。比如愛國者的“雙屏數(shù)碼相框”研發(fā)的目標(biāo)就是僅僅把數(shù)碼相框的“照片展示”特性發(fā)揮到極限。事實(shí)證明,這類數(shù)碼相框產(chǎn)品

24、也越來越受人們喜愛,隨之而然,數(shù)碼相框的發(fā)展也在朝這方面不斷地創(chuàng)新和進(jìn)化。</p><p>  1.3 論文主要研究內(nèi)容</p><p>  本課題設(shè)計(jì)的數(shù)碼相框主要以MCS-51單片機(jī)作為控制核心,采用軟件解碼功能,嵌入以FATFS文件系統(tǒng),實(shí)現(xiàn)對存儲(chǔ)在SD卡內(nèi)的圖像文件進(jìn)行讀取操作,并編寫算法對通用的圖像文件格式,例如BMP進(jìn)行解碼操作,然后通過MCS-51單片機(jī)驅(qū)動(dòng)液晶顯示屏,對解碼

25、后的圖像進(jìn)行顯示。</p><p>  此方案的優(yōu)點(diǎn)在于兩個(gè)方面。一是制作成本低,硬件構(gòu)成簡單,設(shè)計(jì)方便。二是易于擴(kuò)展和升級。其中的解碼功能是通過軟件模擬實(shí)現(xiàn),這樣使系統(tǒng)具有良好的靈活性和適應(yīng)性。</p><p>  第2章 數(shù)碼相框的硬件設(shè)計(jì)</p><p>  2.1 系統(tǒng)總體硬件設(shè)計(jì)</p><p>  數(shù)碼相框系統(tǒng)硬件設(shè)計(jì)結(jié)構(gòu)如圖2.

26、1所示。.</p><p>  圖2.1 數(shù)碼相框系統(tǒng)硬件設(shè)計(jì)結(jié)構(gòu)</p><p>  該硬件結(jié)構(gòu)設(shè)計(jì),主要以MCS-51單片機(jī)最小系統(tǒng)為核心,配備電源電路、SD卡接口電路、按鍵控制器、LCD液晶彩屏、時(shí)鐘電路以及復(fù)位電路。MCS-51單片機(jī)最小系統(tǒng)具有基本的晶振系統(tǒng)以及I/O接口,可以為各個(gè)硬件設(shè)備提供相應(yīng)的時(shí)鐘信號,實(shí)現(xiàn)復(fù)位功能以及數(shù)據(jù)的傳輸功能[2]。電源電路包含電源轉(zhuǎn)換電路,設(shè)計(jì)了

27、與SD卡、MCS-51單片機(jī)以及LCD液晶屏的連接電路,并為其提供基本的工作電壓。SD卡接口電路配有SD卡座,并設(shè)計(jì)了SD卡座與單片機(jī)的連接電路。按鍵控制器主要完成液晶屏對圖片的顯示控制。</p><p>  2.2 單片機(jī)處理器模塊</p><p>  本課題數(shù)碼相框系統(tǒng)選用STC12C5A60S2系列單片機(jī)作為核心處理模塊。STC12C5A60S2為單時(shí)鐘/機(jī)器周期單片機(jī),它具有高速、

28、低功耗以及超強(qiáng)抗干擾等等特點(diǎn)。與一般的單片機(jī)結(jié)構(gòu)相似,它的工作電壓為3.5v - 5.5v,擁有1KB的片上集成RAM以及60KB的程序存儲(chǔ)空間,40個(gè)通用I/O口,內(nèi)置復(fù)位,通用的全雙工異步串行口。該單片機(jī)結(jié)構(gòu)簡單,功能完備,適合小型嵌入式設(shè)備移植,且擁有的存儲(chǔ)器空間大小已能滿足對于SD卡圖像文件的讀取需要,基本上已達(dá)到本課題數(shù)碼相框系統(tǒng)核心處理器要求。</p><p>  2.2.1 單片機(jī)小系統(tǒng)設(shè)計(jì)<

29、/p><p>  除了選用STC12C5A60S2系列單片機(jī)作為核心處理模塊,在硬件電路上還需要設(shè)計(jì)外圍合適的電路,即單片機(jī)小系統(tǒng),以此啟動(dòng)單片機(jī)。這部分主要的設(shè)計(jì)電路包括:</p><p><b>  (1) 時(shí)鐘電路</b></p><p>  STC12C5A60S2系列單片機(jī)可以使用外部時(shí)鐘,也可以靠內(nèi)部振蕩器提供時(shí)鐘信號[3]。本系統(tǒng)采用

30、外部24MHz晶振提供時(shí)鐘信號方式,將晶振連接到XTAL1和XTAL2之間,并與兩個(gè)電容相連接地,如圖2.2所示。</p><p>  圖2.2 單片機(jī)小系統(tǒng)時(shí)鐘電路設(shè)計(jì)結(jié)構(gòu)</p><p><b>  (2) 復(fù)位電路</b></p><p>  本系統(tǒng)采用外部按鍵手動(dòng)復(fù)位,具體結(jié)構(gòu)如圖2.3所示。</p><p> 

31、 圖2.3 單片機(jī)小系統(tǒng)復(fù)位電路設(shè)計(jì)</p><p><b>  2.3 SD卡模塊</b></p><p>  SD卡(Secure Digital Memory Card),中文名稱為安全數(shù)字記憶卡。它是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,記憶容量高,數(shù)據(jù)傳輸快,且具備極大的靈活性以及很好的安全性。目前SD卡普遍運(yùn)用于數(shù)碼相機(jī)、MP3以及手機(jī)等多媒體數(shù)碼設(shè)備

32、。</p><p>  SD卡一般有兩種可用的通訊協(xié)議:SD模式和SPI模式[4]。SD模式通常采用6線制傳輸,即CMD、SCLK、DATA0~DATA3,數(shù)據(jù)傳輸率高,不過傳輸?shù)拿罴皡f(xié)議相當(dāng)復(fù)雜。SPI模式則一般采用4線制,即SCLK、CS、MISO、MOSI,由于在傳輸期間,每次只啟用一條數(shù)據(jù)傳輸線,傳輸率較低,不過傳輸命令及協(xié)議相對SD模式簡單,易于實(shí)現(xiàn)。SD總線模式需要單片機(jī)有相應(yīng)的控制器接口,但MCS

33、-51單片機(jī)上并不具備這些接口設(shè)備[5],選用SD模式通信就要增加硬件成本,而相比之下,SPI模式可以簡化主機(jī)設(shè)計(jì),降低成本。再者雖然SPI的數(shù)據(jù)傳輸效率較小,但已能滿足一般圖像的數(shù)據(jù)傳輸速率要求,而且它采用4線傳輸,簡捷方便,軟硬件易于實(shí)現(xiàn)。因此,在本課題中,選擇SPI模式是最佳的通訊方式。</p><p>  2.3.1 SD卡接口設(shè)計(jì)電路</p><p>  本系統(tǒng)中,SD卡接口通過

34、加載必要的外圍電路與單片機(jī)相應(yīng)的I/O進(jìn)行連接,如圖2.4所示。</p><p>  圖2.4 SD卡接口設(shè)計(jì)電路</p><p>  接口SD_CS、MOSI、MISO、SCLK分別于單片機(jī)的I/O口P1.4~P1.7相連。SD卡的工作電壓為3.3v,而單片機(jī)的工作電壓為5v,由此需要處理SD卡與單片機(jī)之間電平不匹配的問題[6]。不過只要在接口兩端需要接入330Ω的緩沖電阻,就可完全解決

35、。具體設(shè)計(jì)如圖2.5所示。</p><p>  圖2.5 單片機(jī)與SD卡接口連接電路</p><p>  2.4液晶彩屏顯示模塊</p><p>  TFT (Thin Film Transistor)薄膜場效應(yīng)晶體管是目前普遍應(yīng)用于手機(jī)、電腦等數(shù)碼設(shè)備屏幕的真彩色液晶屏,它具有重量輕、體積小、低功耗、無輻射以及支持顯示全彩色圖像等特點(diǎn)。</p>&l

36、t;p>  本系統(tǒng)采用的TFT液晶屏為3.5英寸的24位真彩色數(shù)字屏,分辨率為320x240,電壓系統(tǒng)為5V。如圖2.6所示,選用8位數(shù)據(jù)方式驅(qū)動(dòng),顯示一個(gè)點(diǎn)時(shí),采用16位RGB方式傳輸數(shù)據(jù),因此只需用到8根數(shù)據(jù)線。液晶彩屏其他接口例如片選CS、復(fù)位RST等分別與單片機(jī)I/O相連,并由單片機(jī)總線同步控制。另外,對于液晶屏的背光調(diào)節(jié),可接入1K的滑動(dòng)電阻,并連接到地,通過調(diào)節(jié)電阻阻值,以達(dá)到良好的屏幕亮度。</p>&

37、lt;p>  圖2.6 液晶彩屏設(shè)計(jì)電路</p><p><b>  2.5按鍵模塊</b></p><p>  為便于控制圖片顯示播放,相框系統(tǒng)中加入了按鍵模塊,以此來作為圖片播放播放功能鍵。本系統(tǒng)采用簡單的直連式按鍵,共設(shè)4個(gè)按鍵Key1~Key4,并分別與單片機(jī)的P1.0~P1.3直連。當(dāng)鍵按下時(shí)接地,輸出低電平,操作簡單,易于實(shí)現(xiàn)。具體電路設(shè)計(jì)如圖2.7

38、所示。</p><p>  圖2.7 按鍵設(shè)計(jì)電路</p><p><b>  2.6 串口模塊</b></p><p>  為便于程序下載以及軟硬件調(diào)試,除了設(shè)計(jì)所需硬件電路,在單片機(jī)外圍電路中還加入了串口模塊,方便主機(jī)對單片機(jī)進(jìn)行調(diào)控。</p><p>  圖2.8 串口設(shè)計(jì)電路</p><p&g

39、t;  與一般的8051單片機(jī)串口類似,采用MAX232作為串口的主芯片。在選擇異步通信方式(UART)下,主機(jī)通過TX_PC線路向MAX232發(fā)送命令,再由RXD(P3.0)串行數(shù)據(jù)輸入端傳送到單片機(jī)中;同樣也可由單片機(jī)通過TXD(P3.1)串行數(shù)據(jù)發(fā)送端發(fā)送信號到MAX232,再有RX_PC線路送給主機(jī)。</p><p><b>  2.7 電源電路</b></p><

40、;p>  在本系統(tǒng)中,由于各個(gè)硬件部分的工作電壓各不相同,比如SD卡需要3.3v工作電壓,而單片機(jī)及液晶彩屏則需要5v工作電壓,因此在主系統(tǒng)中還需要設(shè)計(jì)統(tǒng)一的電源電路,方便給各部分硬件提供工作電壓。</p><p>  圖2.9 電源設(shè)計(jì)電路</p><p>  在一般單片機(jī)外圍電路中,LM1117系列電源適配器經(jīng)常被選用,它具有穩(wěn)定性好、輸出電壓精度高、漏失電壓小等特點(diǎn)。在本系統(tǒng)中

41、,采用了5v轉(zhuǎn)3.3v的電源適配器,這樣有效簡化了電源電路設(shè)計(jì),同時(shí)也解決了各個(gè)部件工作電壓不統(tǒng)一的問題。</p><p>  第3章 數(shù)碼相框的軟件設(shè)計(jì)</p><p>  3.1軟件總體設(shè)計(jì)結(jié)構(gòu)</p><p>  整個(gè)數(shù)碼相框的軟件系統(tǒng)按功能可以分為4個(gè)模塊:圖像文件讀取、圖像信息解碼、圖像文件顯示以及控制模塊。</p><p>  主

42、函數(shù)調(diào)用了各個(gè)模塊程序,實(shí)現(xiàn)了各個(gè)模塊的初始化過程以及接口配置,同時(shí)也規(guī)劃了程序的流程安排,如圖3.1所示。</p><p>  圖3.1 主程序流程圖</p><p>  3.2圖像文件讀取設(shè)計(jì)</p><p>  圖像文件的讀取主要包括3個(gè)部分,即SD卡的初始化、SPI數(shù)據(jù)傳輸以及FAT FS文件系統(tǒng)的移植。在整個(gè)程序設(shè)計(jì)中,單片機(jī)運(yùn)用FAT FS文件系統(tǒng)實(shí)現(xiàn)對

43、SD卡內(nèi)文件的讀取,同時(shí)通過SPI數(shù)據(jù)傳輸協(xié)議傳輸圖像數(shù)據(jù)。</p><p>  3.2.1 SD卡初始化</p><p>  SD卡與單片機(jī)的通信都由單片機(jī)控制,單片機(jī)發(fā)送命令給SD卡,接收SD卡的響應(yīng)并確認(rèn)SD卡的是否進(jìn)入準(zhǔn)備狀態(tài)后,再進(jìn)行下一步的命令操作。當(dāng)然,每次單片機(jī)對SD卡的進(jìn)行任何操作前都必須拉低SD卡的片選信號CS,然后再發(fā)送命令。單片機(jī)與SD卡之間的常用命令總共有19個(gè),

44、每個(gè)命令又會(huì)產(chǎn)生不同的響應(yīng)。</p><p>  本系統(tǒng)中SD卡初始化主要包括SD卡的上電復(fù)位以及選擇SPI通信模式。程序流程如圖3.2所示。</p><p>  圖3.2 SD卡初始化流程圖</p><p>  在接收到SD卡插入后的響應(yīng)后,單片機(jī)會(huì)先給SD卡發(fā)送74個(gè)時(shí)鐘周期,以完成SD卡的上電過程,之后再發(fā)送復(fù)位命令(CMD0)[7]。如果此時(shí)的片選信號CS為

45、低電平,那么SD卡將進(jìn)入SPI總線模式,否則SD卡將一直保持SD總線模式。進(jìn)入SPI模式后,單片機(jī)會(huì)。向SD卡發(fā)送激活命令(CMD1)。如果接收到的響應(yīng)為0,則表示SD卡已完成了初始化過程,處于空閑狀態(tài),等待單片機(jī)的下一個(gè)命令,否則單片機(jī)將繼續(xù)發(fā)送命令直到響應(yīng)為0。</p><p>  3.2.2 SPI數(shù)據(jù)傳輸</p><p>  STC12C5A60S2系列單片機(jī)提供了一種高速串行通信

46、接口,即SPI接口。它是一種全雙工、高速、同步的通信總線,與之相關(guān)的特殊功能的寄存器主要有:控制寄存器SPCTL、狀態(tài)寄存器SPSTAT以及數(shù)據(jù)寄存器SPDAT。</p><p>  (1) 控制寄存器SPCTL:SPI的使能控制端,確定單片機(jī)為主機(jī)還是從機(jī),決定高低字節(jié)數(shù)據(jù)的傳輸優(yōu)先順序以及選擇SPI的時(shí)鐘頻率。</p><p>  (2) 狀態(tài)寄存器SPSTAT:用來判斷SPI數(shù)據(jù)是否

47、傳輸完成以及檢測是否對數(shù)據(jù)寄存器SPDAT進(jìn)行寫操作。</p><p>  (3) 數(shù)據(jù)寄存器SPDAT:傳輸?shù)臄?shù)據(jù)位Bit7~Bit0。</p><p>  在使用SPI通信接口時(shí),需要對三個(gè)寄存器進(jìn)行相應(yīng)的初值設(shè)定,以達(dá)到SPI的初始化效果:</p><p>  sfr SPCTL = 0xCE; //啟動(dòng)SPI傳輸,確定單片機(jī)為主機(jī),高位字節(jié)數(shù)據(jù)

48、優(yōu)先發(fā)送,SPI時(shí)鐘頻率設(shè)定為主機(jī)的1/64</p><p>  sfr SPSTAT = 0xCD; //默認(rèn)標(biāo)志位為“1”</p><p>  sfr SPDAT = 0xCF; //默認(rèn)傳輸數(shù)據(jù)位為0xcf</p><p>  SD卡在SPI模式下可以選擇單塊和多塊讀操

49、作[8]。選擇單塊讀操作時(shí),所讀的數(shù)據(jù)塊一般都固定為512字節(jié);選擇多塊讀操作時(shí),可以指定的位置開始讀數(shù)據(jù),一直讀到接收到單片機(jī)發(fā)送的停止讀數(shù)據(jù)的命令??紤]到圖像數(shù)據(jù)的讀取要具有靈活性,便于系統(tǒng)程序調(diào)試,本系統(tǒng)采用多塊讀操作方式,具體操作流程如圖3.3所示。</p><p>  圖3.3 SD卡圖像數(shù)據(jù)讀取流程</p><p>  3.2.3 FAT FS文件系統(tǒng)移植設(shè)計(jì)</p>

50、;<p>  文件的讀取,是屬于文件系統(tǒng)的管理功能。因此要實(shí)現(xiàn)對SD卡內(nèi)文件的讀取,就需要在單片機(jī)中移植入一種SD卡所支持的文件系統(tǒng),進(jìn)而通過文件系統(tǒng)向SD卡發(fā)送命令讀取圖片文件。</p><p>  (1) FAT FS文件系統(tǒng)簡介</p><p>  FATFS是一種完全免費(fèi)開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設(shè)計(jì)[9],它具有一般文件系統(tǒng)所能實(shí)現(xiàn)的基本功能

51、,包括打開/關(guān)閉文件以及對文件進(jìn)行讀寫操作等等。它完全用標(biāo)準(zhǔn)C語言編寫,很適合移植到單片機(jī)上;它支持多個(gè)存儲(chǔ)媒介,有獨(dú)立的緩沖區(qū),可以對多個(gè)文件進(jìn)行讀/寫操作。其中也有一個(gè)簡化的版本Tiny—FatFs。該版本與FATFS的完全版用法一樣,不過因?yàn)樗s減了一般小型嵌入式系統(tǒng)所用不到的系統(tǒng)程序,只提供用戶一般所需要的幾個(gè)接口函數(shù),所以所需編寫的代碼量相對較少;而且它占用的內(nèi)存低,只要1KB RAM,僅支持一個(gè)存儲(chǔ)媒介,對于單片機(jī)而言,比較

52、容易實(shí)現(xiàn)。因此,對于文件系統(tǒng)的移植,Tiny—FatFs是個(gè)相當(dāng)不錯(cuò)的選擇。</p><p>  (2) FAT文件系統(tǒng)的結(jié)構(gòu)原理</p><p>  FAT文件系統(tǒng)在磁盤中的存儲(chǔ)結(jié)構(gòu)如下圖3.4所示。所有部分連續(xù)存放,中間沒有間隔部分,所以通過計(jì)算根據(jù)上一部分存儲(chǔ)的結(jié)束地址可以得到下一部分開始的位置。</p><p>  圖3.4 FAT文件系統(tǒng)存儲(chǔ)結(jié)構(gòu)</

53、p><p><b>  a) 引導(dǎo)扇區(qū)</b></p><p>  引導(dǎo)扇區(qū)是文件系統(tǒng)操作的引導(dǎo)記錄區(qū),它包括了跳轉(zhuǎn)指令、廠商標(biāo)志、OS版本號、BPB參數(shù)塊、引導(dǎo)扇區(qū)代碼以及結(jié)束標(biāo)志等等。其中BPB參數(shù)塊更是包含了很多文件結(jié)構(gòu)信息,比如每扇區(qū)字節(jié)數(shù)、每簇扇區(qū)數(shù)、FAT表所占的扇區(qū)數(shù)、根目錄簇號、根目錄項(xiàng)數(shù)以及總扇區(qū)數(shù)等等。所有文件操作系統(tǒng)都必須通過引導(dǎo)扇區(qū)的引導(dǎo)記錄才能實(shí)

54、現(xiàn)對文件的操作。</p><p><b>  b) FAT文件表</b></p><p>  FAT文件表是用來給每個(gè)文件分配磁盤物理空間的數(shù)據(jù)結(jié)構(gòu),并記錄數(shù)據(jù)區(qū)簇鏈結(jié)構(gòu)。FAT文件系統(tǒng)最小的存儲(chǔ)單位為扇區(qū),一般每個(gè)扇區(qū)為512個(gè)字節(jié)。而簇則是FAT分配文件存儲(chǔ)空間的最小單位,它的大小通常為2n個(gè)扇區(qū),但實(shí)際大小是BPB信息中每簇扇區(qū)數(shù)與每扇區(qū)字節(jié)數(shù)的乘積大小。當(dāng)創(chuàng)建

55、文件時(shí),即使文件大小只有一個(gè)字節(jié),操作系統(tǒng)也會(huì)分配一個(gè)最小單元給它,即一個(gè)簇。每個(gè)文件都同表中的若干項(xiàng)相對應(yīng),并在目錄中進(jìn)行索引[10]。因此通過FAT表,可以了解到整個(gè)磁盤中所有文件的存儲(chǔ)信息。</p><p><b>  c) 目錄項(xiàng)</b></p><p>  在根目錄下,所有文件都有一個(gè)與之相對應(yīng)的目錄項(xiàng)。目錄項(xiàng)包含了文件開始的簇號,文件的創(chuàng)建時(shí)間以及文件的大

56、小等。因此在讀取文件時(shí),可以先從目錄項(xiàng)中了解文件的基本信息,在配合FAT文件表準(zhǔn)確定位文件存放地址。</p><p>  (3) FAT FS文件系統(tǒng)的移植方法</p><p>  文件系統(tǒng)本身就具有各種文件操作功能,比如打開/關(guān)閉文件、讀取文件以及寫文件等等,而且它的對象僅僅是文件本身而已。因而移植FATFS文件系統(tǒng)的方法主要是將文件系統(tǒng)操作的對象設(shè)定為SD卡內(nèi)的文件,并且只對SD卡內(nèi)的

57、文件進(jìn)行操作。為此,在移植過程中,只需要在原有的FATFS文件系統(tǒng)操作程序中移植入SD卡文件的操作程序即可。主要的操作程序包括以下三個(gè)方面:</p><p>  DSTATUS disk_initialize (void); //初始化SD卡</p><p>  DRESULT disk_readp();

58、 //讀指定扇區(qū)</p><p>  DRESULT disk_writep (BYTE* buff,DWORD sector); //寫指定扇區(qū)</p><p>  (4) FAT FS文件系統(tǒng)的讀取過程</p><p>  在根目錄下,讀取文件的主要流程如圖3.5所示。主要分為以下幾個(gè)步驟:</p><

59、;p>  圖3.5 FAT FS讀取文件流程圖</p><p>  a) FAT FS文件數(shù)據(jù)結(jié)構(gòu)</p><p>  類似于FAT引導(dǎo)扇區(qū)中BPB信息結(jié)構(gòu),F(xiàn)AT FS文件也有設(shè)定相應(yīng)的文件數(shù)據(jù)結(jié)構(gòu),以便于文件操作程序的簡化,達(dá)到開源的目的。</p><p>  typedef struct _FATFS_ {</p><p>  B

60、YTEfs_type; //文件類型</p><p>  BYTEcsize; //每一簇的扇區(qū)數(shù)</p><p>  BYTEflag; //文件標(biāo)志位</p><p>  BYTEcsect; //文件扇區(qū)地址</p

61、><p>  WORDn_rootdir; //根目錄項(xiàng)數(shù)</p><p>  BYTE*buf; //數(shù)據(jù)存儲(chǔ)緩沖區(qū)指針</p><p>  CLUSTmax_clust; //最大簇</p><p>  DWORDfatbase;

62、 //FAT文件表起始扇區(qū)號</p><p>  DWORDdirbase; //很目錄起始扇區(qū)號</p><p>  DWORDdatabase; //數(shù)據(jù)起始扇區(qū)號</p><p>  DWORDfptr; //文件名指針</p>

63、<p>  DWORDfsize; //文件大小</p><p>  CLUSTorg_clust; //文件起始簇號</p><p>  CLUSTcurr_clust; //文件當(dāng)前簇</p><p>  DWORDdsect;

64、 //文件當(dāng)前數(shù)據(jù)扇區(qū)</p><p><b>  } FATFS;</b></p><p>  b) FAT FS文件操作程序設(shè)計(jì)</p><p>  本系統(tǒng)中的FAT FS是一種開源的文件系統(tǒng),與其他FAT16、FAT32文件系統(tǒng)相比,它省去了很多一般所不用的文件操作程序,而且配合本課題的要求,在已經(jīng)簡化的FAT FS文件系統(tǒng)基礎(chǔ)上進(jìn)行

65、了進(jìn)一步的濃縮,因此本系統(tǒng)的FAT FS文件系統(tǒng)更加簡潔、實(shí)用。主要的文件操作程序包括以下幾個(gè)方面:</p><p>  FRESULT pf_open (const char*); //打開文件</p><p>  FRESULT pf_read (void*, WORD, WORD*); //對文件進(jìn)行讀取操作&l

66、t;/p><p>  FRESULT pf_write (const void*, WORD, WORD*); //對文件進(jìn)行寫操作</p><p>  FRESULT pf_lseek (DWORD); //按指定地址讀取文件數(shù)據(jù)</p><p>  3.3圖像文件解碼設(shè)計(jì)</p><p>  圖像文件

67、有多種存儲(chǔ)格式,比如BMP、JPG、GIF等等,要顯示一幅完整的圖片,必須要了解格式以及結(jié)構(gòu)?;旧蠄D像都有一個(gè)文件頭,通過文件頭,可以了解到有效的圖像信息,再運(yùn)用相應(yīng)的解碼方法,就可以獲得真正的圖像像素?cái)?shù)據(jù)。本課題主要實(shí)現(xiàn)對BMP格式圖像文件的解碼。</p><p>  3.3.1 BMP圖像解碼</p><p>  (1) BMP圖像文件簡介</p><p> 

68、 BMP圖像文件是位圖文件,位圖表示的是將一幅圖像分割成柵格,柵格的每一點(diǎn)稱為像素,每一個(gè)像素具有自己的RGB值,即一幅圖像是由一系列像素點(diǎn)構(gòu)成的點(diǎn)陣[11]。對于BMP的解碼主要是提取BMP文件中的像素?cái)?shù)據(jù),即RGB值。</p><p>  BMP文件一般由4個(gè)部分組成:文件頭、文件信息頭、調(diào)色板以及像素?cái)?shù)據(jù)。其中文件頭主要包含了圖像的大小、寬度、高度以及位面數(shù)等等;文件信息頭主要包含了每個(gè)像素的位數(shù)、水平分辨

69、率、垂直分辨率、位圖使用的顏色索引數(shù)以及有無調(diào)色板項(xiàng)等。調(diào)色板即調(diào)色板規(guī)范,保存有具體的顏色信息,用以描述RGB的值[12]。</p><p>  BMP還支持多種色系,一般有雙色位圖、8色位圖、16色位圖、16位增強(qiáng)色位圖、24位真彩色位圖以及32位真彩色位圖等等[13]。而每種色系的像素所占字節(jié)數(shù)又不相同,例如對于8位位圖,每個(gè)字節(jié)代表一個(gè)像素;而對于16位位圖,每兩個(gè)字節(jié)代表一個(gè)像素。</p>

70、<p>  (2) BMP圖像軟件解碼</p><p>  由于一般的BMP圖像并沒有經(jīng)過壓縮處理,因此在解碼時(shí),只需要取出圖像文件中相應(yīng)的像素?cái)?shù)據(jù)即可。</p><p>  a) BMP文件頭讀取</p><p>  在獲取像素?cái)?shù)據(jù)之前,首先要通過讀取文件頭,了解BMP圖像的基本信息,為便于軟件模擬解碼,所要獲取的信息主要包括以下幾個(gè)方面:</p

71、><p>  extern DWORD PicDataOffSet; //圖像文件大小</p><p>  extern DWORD PicWidth; //圖像寬度</p><p>  extern DWORD PicHeight; //圖像高度</p&

72、gt;<p>  extern BYTE BitsPerPixel; //從文件開始到像素?cái)?shù)據(jù)之間的偏移量</p><p>  extern Char BitCount; //每個(gè)像素所占位數(shù)</p><p>  其中BitCount在BMP文件中可以有1位、2位以及3位等多種可能。目前常用BMP圖

73、像文件中,24位真彩色色系比較流行,即3個(gè)字節(jié)代表一個(gè)像素點(diǎn)[13],本課題也將著重對這類圖像進(jìn)行解碼。</p><p>  b) 獲取BMP圖像RGB數(shù)據(jù)</p><p>  一般的BMP像素?cái)?shù)據(jù)三原色不是以RGB排列,而是以BGR的順序進(jìn)行組合,因此在獲得像素?cái)?shù)據(jù)之后,還必須將BGR像素?cái)?shù)據(jù)轉(zhuǎn)化為RGB像素?cái)?shù)據(jù),再將新數(shù)據(jù)發(fā)送到顯示屏。</p><p>  Un

74、signed char BMP_BGR_to_RGB(unsigned char *c) //將BGR轉(zhuǎn)換成RGB</p><p><b>  {</b></p><p><b>  U16 i;</b></p><p>  U8 C1, C2;</p><p>  for(i=0;i

75、<160;i++)</p><p><b>  {</b></p><p>  C1=c[i*3]; //B部分?jǐn)?shù)據(jù)</p><p>  C2=c[i*3+2]; //R部分?jǐn)?shù)據(jù)</p><p>

76、  c[i*3]=C2; </p><p>  c[i*3+2]=C1;</p><p><b>  }</b></p><p>  return *c ;</p><p><b>  }</b></p><p>

77、;  3.4圖像文件顯示設(shè)計(jì)</p><p>  3.4.1液晶彩屏初始化</p><p>  液晶彩屏的初始化過程主要包括彩屏的驅(qū)動(dòng)以及必要的顯示模式設(shè)定。</p><p><b>  (1) 彩屏的驅(qū)動(dòng)</b></p><p>  相對于SD卡的程序驅(qū)動(dòng),彩屏的驅(qū)動(dòng)比較復(fù)雜。首先需要設(shè)定背光、片選、復(fù)位以及數(shù)據(jù)端口等

78、:</p><p>  #define LCD_BLEN_1LCD_BLEN=1; //開啟背光</p><p>  #define LCD_nRST_1LCD_nRST=1; //復(fù)位置1</p><p>  #define LCD_nCS_0 LCD_nCS=0;

79、 //拉低片選信號</p><p>  #define LCD_Dat_Rd P0; //數(shù)據(jù)端口設(shè)定為P0口</p><p>  其次,設(shè)置好液晶彩屏各參數(shù)之后還需要寫入各種命令,以驅(qū)動(dòng)彩屏內(nèi)部各個(gè)模塊,包括初始化順序設(shè)定、設(shè)定讀寫區(qū)域以及面板控制等等。</p><p>  (2) 顯示模式設(shè)定</p>

80、<p>  BMP圖像中存儲(chǔ)的數(shù)據(jù)是從左下角開始存儲(chǔ)的,到右上角結(jié)束,也就是最后一行是正常的第一行,倒數(shù)第二行是正常的第二行。因此在顯示圖像時(shí),必須對圖像進(jìn)行翻轉(zhuǎn)處理[14]。</p><p>  Void LCD_SetGramPoit(WORD StartX,WORD StartY,BYTE HMode,BYTE VMode)</p><p><b>  {<

81、;/b></p><p>  WORD Temp;</p><p>  if(HMode==0)</p><p><b>  {</b></p><p>  if(VMode==0)</p><p>  Temp=0x1030;</p><p><b>  

82、else</b></p><p>  Temp=0x1010;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if(VMode==0)<

83、/p><p>  Temp=0x1020;</p><p><b>  else</b></p><p>  Temp=0x1000;</p><p><b>  }</b></p><p>  LCD_WrCmdDat(0x0003,Temp); //設(shè)定數(shù)據(jù)寫

84、入范圍</p><p>  LCD_WrCmdDat(0x0020,StartX); //設(shè)定寫入數(shù)據(jù)的水平地址</p><p>  LCD_WrCmdDat(0x0021,StartY); //設(shè)定寫入數(shù)據(jù)的垂直地址</p><p><b>  }</b></p><p>  當(dāng)HMode=

85、0時(shí)水平從左至右寫入,HMode=1時(shí)水平從右至左寫入;當(dāng)VMode=0時(shí)水平從上至下寫入,VMode=1時(shí)水平從下至上寫入。</p><p>  3.4.2彩屏點(diǎn)陣顯示設(shè)計(jì)</p><p>  (1) BMP三原色系轉(zhuǎn)化</p><p>  彩屏支持16位彩色顯示,顯示一般的16位色系BMP文件并不困難,不過對于24位真彩色色系的圖像文件卻無法正常顯示。因此在顯示

86、圖像之前,還需要將24位的BMP圖像轉(zhuǎn)化成能讓彩屏播放的16位彩色圖像。</p><p>  for(i=0;i<BMPBUFLEN;i=i+3)</p><p><b>  {</b></p><p>  Color=buff[i+2]>>3; </p><p>  C

87、olor=(Color<<6)|(buff[i+1]>>2); </p><p>  Color=(Color<<5)|(buff[i]>>3); </p><p><b>  }</b></p><p>  24位真彩色圖像3個(gè)字節(jié)(分別為R、G、B)代表一個(gè)像素,而16位

88、圖像則是兩個(gè)字節(jié)代表一個(gè)像素[15]。要實(shí)現(xiàn)兩者間的轉(zhuǎn)化,首先要先將R比特位右移3位,再左移3位,再與右移5位的G比特位相或,作為16位圖像的第一個(gè)字節(jié);然后B比特位右移3位,將G比特位左移兩位,再右移5位,之后兩者再相或,其結(jié)果作為16位圖像的第二個(gè)字節(jié)。</p><p>  (2) 點(diǎn)陣顯示模式設(shè)定</p><p>  彩屏的點(diǎn)陣顯示原理就是將像素點(diǎn)送往指定的區(qū)域,依次畫點(diǎn)顯示。所以在

89、顯示圖像之前,需要規(guī)定好顯示的區(qū)域以及像素點(diǎn)寫入的方式等等。具體應(yīng)用程序包括以下幾個(gè)方面:</p><p>  void LCDDrawRectangleP( ) ; //畫矩形框,設(shè)定圖像顯示區(qū)域</p><p>  void LCDSetWriteArea( ) ; //設(shè)定像素寫入?yún)^(qū)域</p><p&

90、gt;  void LCDClearScreen( ) ; //清屏</p><p>  void LCD_WrDat( ); // 寫入像素?cái)?shù)據(jù)</p><p>  當(dāng)彩屏收到單片機(jī)發(fā)送的圖像基本信息之后,開始進(jìn)行清屏并設(shè)定圖像顯示區(qū)域;在接收原始圖像數(shù)據(jù)時(shí),邊接收邊進(jìn)行24位色系到16位色系的轉(zhuǎn)化,每成功轉(zhuǎn)

91、化一個(gè)像素點(diǎn),立即送往指定的畫圖區(qū)域,顯示圖像。具體流程如圖3.6所示。</p><p>  圖 3.6 點(diǎn)陣顯示設(shè)計(jì)流程圖</p><p><b>  3.5控制模塊</b></p><p>  3.51 定時(shí)器初始化</p><p>  與普通單片機(jī)一樣,STC12C5A60S3系列單片機(jī)內(nèi)部設(shè)置有定時(shí)器0和定時(shí)器1

92、兩個(gè)16位定時(shí)器。定時(shí)器有兩種工作方式:計(jì)數(shù)方式和定時(shí)方式。根據(jù)計(jì)數(shù)脈沖的來源不同,如果計(jì)數(shù)脈沖來自系統(tǒng)時(shí)鐘,則為定時(shí)方式,此時(shí),每一個(gè)時(shí)鐘得到一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)值加1;如果計(jì)數(shù)脈沖來自外部引腳,則為計(jì)數(shù)方式,此時(shí)每來一個(gè)脈沖加1。本系統(tǒng)采用定時(shí)方式,由內(nèi)部系統(tǒng)時(shí)鐘提供脈沖,啟用定時(shí)器0,具體參數(shù)設(shè)置如下所示:</p><p>  void TimerInit(void) </p><p>

93、;<b>  {</b></p><p>  ET0 = 0; //關(guān)閉定時(shí)器0中斷</p><p>  TH0 = 56; //設(shè)定定時(shí)器0的初值</p><p>  TMOD= TMOD&0xF0;</p><p&g

94、t;  TMOD= TMOD|0x02; // 設(shè)定定時(shí)器0為定時(shí)功能,工作方式為8位自動(dòng)重裝定時(shí)器</p><p>  TR0 = 1; // 啟動(dòng)定時(shí)器0</p><p>  PT0 = 0; // 設(shè)定定時(shí)器0中斷控制位為低優(yōu)先級</p><p

95、>  ET0 = 1; // 啟動(dòng)定時(shí)器0中斷 </p><p><b>  }</b></p><p>  3.5.2按鍵程序設(shè)計(jì)</p><p>  為便于控制圖像顯示的功能,本系統(tǒng)加入了按鍵模塊。按鍵程序的設(shè)計(jì)主要包括按鍵初始化、延時(shí)程序以及按鍵值獲取。</p&g

96、t;<p><b>  (1) 按鍵初始化</b></p><p>  本系統(tǒng)中只采用4個(gè)按鍵,即Key1~Key4,并采用簡單的直連模式,當(dāng)按鍵按下時(shí),輸出低電平。因此在初始化程序中,只需統(tǒng)一將4個(gè)按鍵值置高電平,即可完成初始化。</p><p>  void KbdInit(void) </p><p><b>  

97、{</b></p><p>  KEY=KEY|0x0F; //按鍵值全部置1</p><p>  OldKey=KEY;</p><p><b>  }</b></p><p><b>  (2) 延時(shí)程序</b></p>

98、<p>  延時(shí)程序的設(shè)計(jì)為其他各個(gè)模塊程序的執(zhí)行帶來了緩沖時(shí)間。本系統(tǒng)中的延時(shí)可分為1ms、10ms和100ms。</p><p>  void Delay1ms (BYTE B_Value); //延時(shí)1ms</p><p>  void Delay10ms (BYTE B_Value); //延時(shí)10ms&l

99、t;/p><p>  void Delay100ms (BYTE B_Value); //延時(shí)100ms</p><p><b>  (3) 按鍵值獲取</b></p><p>  按鍵值的獲取主要通過與初始化中所設(shè)定的按鍵值進(jìn)行位相與操作,得到改變的按鍵值,從而判斷哪個(gè)按鍵按下。當(dāng)然在獲取過程中,必須添加一定的延時(shí)以防

100、止抖動(dòng)以及重復(fù)按鍵時(shí)間過長帶來的偏差。</p><p>  BYTE KbdGetKey(void) </p><p><b>  {</b></p><p><b>  BYTE key;</b></p><p>  key=KEY&0x0F;</p><p>  

101、OldKey=key;</p><p>  if(OldKey==key) //進(jìn)行延時(shí),保證重復(fù)鍵有一定的時(shí)間間隔</p><p><b>  {</b></p><p>  if(TimerCheck(2)!=TIMER_TMO)</p><p>  return KEYMAX;</

102、p><p><b>  }</b></p><p>  if((key&0x01)==0) //對P3.0上的按鍵進(jìn)行檢測</p><p><b>  {</b></p><p>  Delay1ms(30); //30ms防抖動(dòng)</p&

103、gt;<p><b>  key=KEY;</b></p><p>  if((key&0x01)==0)</p><p><b>  {</b></p><p>  TimerStart(2, 15); </p><p>  return KEY1;</p>&

104、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  第4章 制作成果展示及分析</p><p>  4.1 數(shù)碼相框硬件制作成果及分析</p><p>  圖 4.1

105、 數(shù)碼相框硬件制作成果圖</p><p>  如圖4.1所示,該數(shù)碼相框制作所選用的硬件器材相對較少,主硬件器材只有單片機(jī)、SD卡,串口以及液晶彩屏。因?yàn)椴捎密浖獯a圖像文件,因此縮減了不必要硬件解碼器,同時(shí)所有硬件模塊都采用了比較簡單但又滿足正常工作要求的外圍電路設(shè)計(jì),這樣極大地縮減了成本,制作起來也相對容易。</p><p>  4.2 圖像顯示結(jié)果及分析</p><

106、;p>  本課題主要針對BMP圖像進(jìn)行解碼顯示。如圖4.2所示,上面一張為原BMP圖像,24位真彩色,分辨率為320x240,底下一張為解碼后顯示在液晶彩屏上的BMP圖像。通過比較,液晶彩屏顯示的圖片畫面清晰,色澤良好,基本無失真。達(dá)到了圖像畫質(zhì)的基本標(biāo)準(zhǔn)。</p><p><b>  原BMP圖像</b></p><p><b>  解碼后BMP圖像

107、</b></p><p>  圖4.2 BMP圖像解碼前后對比圖</p><p>  當(dāng)然,除了圖像顯示的畫面效果,圖像顯示的速度也是重要的評判標(biāo)準(zhǔn)。不過由于該系統(tǒng)本身就有一些性能限制,比如在讀大文件時(shí),由于單片機(jī)的RAM容量限制,一次最多只能對1個(gè)扇區(qū)(512字節(jié))進(jìn)行讀取,因此在頻繁讀取的過程中,降低了圖像顯示的速度。但是從結(jié)果來看,畫面顯示的速度還是比較適中,處于人眼所能

108、接受的范圍之內(nèi),大約5秒鐘就能完整顯示一幅滿屏圖片。</p><p>  從整個(gè)顯示結(jié)果來看,總體上課題已能實(shí)現(xiàn)數(shù)碼相框的圖像顯示功能,不過由于51單片機(jī)本身的一些性能所限,特別是乘除法運(yùn)算速度很慢,不能滿足對JPEG及GIF等文件解碼速度的要求,使得圖像顯示的速度受到了影響,因而對于實(shí)現(xiàn)大圖像文件比如JPG、GIF等等的解碼顯示也變得相當(dāng)局限。</p><p><b>  結(jié)論

109、</b></p><p>  目前,通過課題的研究,該數(shù)碼相框的系統(tǒng)功能都已基本實(shí)現(xiàn),其中包括實(shí)現(xiàn)了FATFS文件系統(tǒng)的移植,對SD卡內(nèi)文件的枚舉以及對符合格式要求的圖像文件實(shí)現(xiàn)自動(dòng)顯示等等。同時(shí)該數(shù)碼相框已能成功播放大部分的無壓縮BMP圖像,畫面顯示速度適中,畫面效果也達(dá)到了圖像顯示的基本標(biāo)準(zhǔn)。當(dāng)然,相框中還配備了相應(yīng)的播放模式選擇功能,通過按鍵系統(tǒng),可以控制圖片進(jìn)行切換顯示或者循環(huán)播放。</

110、p><p>  當(dāng)然,在功能上,該數(shù)碼相框還存在著很一些不足之處:</p><p>  (1) 目前的數(shù)碼相框只能支持一種圖像文件格式的播放,至于其他格式文件如JPG、GIF等均不能實(shí)現(xiàn)解碼顯示,依然有待擴(kuò)展。</p><p>  (2) 對于大尺寸BMP圖片,該數(shù)碼相框還不能完全實(shí)現(xiàn)解碼播放,只支持低于彩屏尺寸320x240的小尺寸圖片。</p><

111、;p>  (3) 由于單片機(jī)數(shù)據(jù)存儲(chǔ)容量有限,造成了在讀取SD卡內(nèi)的圖像文件數(shù)據(jù)時(shí),并不能一次性讀取大容量數(shù)據(jù),從而減緩了液晶彩屏顯示圖像的速度。因此,這也是該數(shù)碼相框的一個(gè)重要不足,同時(shí)也有待進(jìn)一步優(yōu)化。</p><p>  總體上,該數(shù)碼相框的制作非常成功,無論硬件上還是軟件上都已達(dá)到了課題的基本要求,真正實(shí)現(xiàn)了制作簡單,易于實(shí)現(xiàn),成本低廉的數(shù)碼相框設(shè)計(jì)。</p><p><

112、;b>  參考文獻(xiàn)</b></p><p>  [1] 現(xiàn)有主流數(shù)碼相框方案解析及對比[EB/OL].http://www.liangteng.com/,2008.</p><p>  [2] Keil Software Inc.Cx51 Compiler[Z].Germany:Keil Software Inc,2001.</p><p>  [

113、3] 趙亮.單片機(jī)最小系統(tǒng)及I/O應(yīng)用[J/OL].電子制作,2008,2.</p><p>  [4] Matsushita Electric Industrial,San Disk Corporation Inc .SD Memory Card Specifications[Z].Physical layer specification,2000. </p><p>  [5] 張彬

114、杰.數(shù)碼相框也能自己做[J/OL].無線電,2009.</p><p>  [6] 蘇義鑫,程 敏,何力.基于AT89C52單片機(jī)的SD卡讀寫設(shè)計(jì)[J].世界電子元器件,2008,5.</p><p>  [7] 林倩,嚴(yán)桂林.基于STC12C5A60S2單片機(jī)的SD卡讀寫[J].電子元器件應(yīng)用,2010,4.</p><p>  [8] 張洪濤,莫文承,李兵兵.基

115、于SPI協(xié)議的SD卡讀寫機(jī)制與實(shí)現(xiàn)方法[J].電子元器件應(yīng)用,2008,3.</p><p>  [9] 洪岳煒,王百鳴,謝超英.一種易于移植和使用的文件系統(tǒng)FatFs Module[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(5).</p><p>  [10] 楊明極,陳方縣,吳學(xué)君.嵌入式系統(tǒng)中SD卡的FAT32文件系統(tǒng)的設(shè)計(jì)[J].電聲技術(shù),2010,34(4).</p>

116、<p>  [11] 賈玉珍,勒冰,劉琮,大海.BMP文件結(jié)構(gòu)的信息隱藏方法與實(shí)現(xiàn)[J].江西理工大學(xué)學(xué)報(bào),2009,30(1).</p><p>  [12] 龔成清.RLE改進(jìn)算法對BMP圖像無損壓縮的實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī),2006. [13] 李偉,張利華.BMP文件解碼的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),</p><p>  2006,27(7).</p>

溫馨提示

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

最新文檔

評論

0/150

提交評論