




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于stm32的電子閱讀器的硬件和軟件設計【摘要】隨著手機和電腦的更新和迭代,人們的閱讀方式開始逐漸地向電子閱讀傾斜。因此,隨著近年來電子閱讀市場的快速發(fā)展以及電子閱讀器攜帶方便、體積小、在閱讀時可以自由選擇字體的字號、顏色等特點,從而使電子閱讀器成為了絕大多數(shù)人的首要閱讀選擇。本設計采用STM32主控芯片作為核心控制單元、TFT-LCD屏作為人機交互的核心組件、SD卡作為資源儲存組件,從而設計了一款滿足基本閱讀需求的電子閱讀器。該閱讀器具有SD卡文件瀏覽和查看,書籍導入、刪除,查看當前日期和時間、書籍閱讀、字體顏色和字號的設置等功能。與其他電子閱讀器相比,本設計還存在很大差距,但對于日常的閱讀是完全滿足其要求的?!娟P鍵字】stm32f407;TXT文件;閱讀器;SD卡;TFT-LCD屏;FatFs文件系統(tǒng)目錄1概述 31.1引言 31.2設計目標 32需求分析 32.1可行性分析 32.1.1STM32F407可行性 32.1.2TFT-LCD可行性 32.2需求分析 43系統(tǒng)總體方案設計 44系統(tǒng)硬件設計 64.1核心控制模塊 64.1.1時鐘電路設計 64.1.2復位電路設計 64.2顯示模塊 74.2.1TFT-LCD介紹 74.2.2LCD驅動原理 74.3存儲模塊 75系統(tǒng)軟件設計 75.1FATFS文件系統(tǒng) 85.1.1FATFS文件系統(tǒng)介紹 85.1.2FATFS文件系統(tǒng)磁盤組織結構 85.1.3FATFS文件系統(tǒng)的移植 85.1.4FAT32的文件查找過程 95.2TXT文件讀取原理 95.3漢字顯示原理及中文字庫的生成 105.4SD卡初始化 105.5SD卡讀寫操作 116系統(tǒng)功能詳細設計 116.1SD卡存儲 116.2開機動畫模塊 126.3書架模塊 126.4書籍閱讀模塊 167系統(tǒng)功能測試 207.1開機動畫功能測試 207.2書架模塊功能測試 207.3書籍閱讀模塊功能測試 227.4測試過程中遇到的問題 258結束語 25概述引言相對于手機電腦來說,電子閱讀器有其獨特的優(yōu)勢,因而無法被手機和電腦所取代,而電子閱讀器是一種功能單一的專門性的閱讀終端,可以使讀者在閱讀的過程中更加專注于閱讀本身[1]。因此,在所有的閱讀終端中,電腦尤其是手機適合在喜歡“淺閱讀”的人群中推廣,而電子閱讀器則更適用于紙質閱讀和“深閱讀”。我之所以選擇這個畢設題目是因為我喜歡在閑暇時間看一些名著小說之類的書籍,但是有些實體書籍比較厚,不方便攜帶,不能隨時隨地的閱讀。另外,手機上的閱讀軟件在閱讀的過程中總是會跳出一些廣告,QQ、微信等手機軟件也會不時地推送一些消息,嚴重影響著我的閱讀體驗。此外,通過查閱資料發(fā)現(xiàn),大多數(shù)的電子閱讀器是采用Android平臺來實現(xiàn)的,采用stm32實現(xiàn)的較少,因此通過和指導老師的溝通最終設計了一款簡易的電子閱讀器。設計目標設計一款簡易的電子書閱讀器,能夠實現(xiàn)書籍的導入、刪除、閱讀以及設置等功能。需求分析可行性分析STM32F407可行性STM32F407芯片的內部含有FPU和DSP指令集,因其168KHz的主頻頻率和210DMIPS的處理能力使得STM32F4在DSP處理和浮點運算的應用中具有更大的優(yōu)勢[2]。與STM32F1相比,STM32F4的主要優(yōu)勢如下:(1)擁有更先進的內核。STM32F1的內核是無浮點運算單元的CortexM3內核,而STM32F4的則是帶有FPU和DSP指令集的CortexM4內核。(2)擁有更多的資源。STM32F4具有真隨機數(shù)發(fā)生器、攝像頭接口和加密處理器等,其片內SRAM的內存可達192KB。(3)擁有更強的外設功能。比較兩者相同的外設部分,STM32F4的定時器可分為16位和32位兩種定時器;實時時鐘(RTC)具有日歷功能;此外,STM32F4在SPI和USART通信方面以及模數(shù)轉換方面的速度更快;DAC/ADC工作電壓更低;4K字節(jié)的SRAM用于電池備份;在輸入輸出和接口復用功能方面具有更大地改進。(4)擁有更高的性能。STM32F1的主頻率為72MHz,其FLASH必須有一個等待周期;STM32F4的主頻率為168MHz,F(xiàn)LASH沒有等待周期,并且由于其FSMC采用了32位的多重AHB總線矩陣,因此訪問速度有了更大的提高。(5)擁有更低的功能損耗。STM32F1的功能損耗為421μA/MHz,而STM32F4的功能損耗僅為238μA/MHz。通過上述對比,本設計的核心控制模塊最終選用STM32F407。TFT-LCD可行性液晶顯示屏的功能主要為顯示圖形信息和文本,其具有體積小、功能損耗低、沒有輻射等特點,因而常被作為人機交互界面使用。按照顯示屏原理劃分,可以將液晶顯示屏劃分成超扭曲向列型顯示屏和有源矩陣型顯示屏。(1)超扭曲向列型液晶顯示屏由于光的干涉和液晶的材料會影響STN-LCD液晶顯示器,所以該顯示屏的色調主要是淡綠色和橘黃色,其驅動的模式為X軸和Y軸相互交叉的單純電極模式。(2)有源矩陣型液晶顯示屏TFT-LCD里的液晶和夾住液晶的上下層玻璃基板共同組成了一個平行板電容器,該電容器可以通過位于下層玻璃基板上的TFT來充電[3]。LCD控制器的主要功能是通過發(fā)送信號來控制液晶顯示屏,因此控制器是LCD的一個重要組件,顯示屏上顯示內容的過程為LCD控制器將數(shù)據(jù)從幀緩沖區(qū)中讀取出來,然后將讀取到的數(shù)據(jù)發(fā)送給LCD驅動器,從而將內容顯示在屏幕上。通過上述對比,本設計的顯示模塊最終選用了TFT-LCD。REF_Ref100836857\h表21為本系統(tǒng)選用的液晶屏的主要參數(shù)。表STYLEREF1\s2SEQ表\*ARABIC\s11液晶屏參數(shù)表技術參數(shù)參數(shù)值單位分辨率480*800Dot像素間距0.219(H)*0.0727(V)mm屏幕尺寸4.3inch活動區(qū)域94.6(H)*57.16(V)mm外形尺寸104.25(W)*60.66(H)*2.3(D)mm表面處理防反光重量45g工作電壓3.3v視角方向6o’clock工作溫度-20~70需求分析本閱讀器主要是基于stm32的程序設計,只要將硬件模塊組裝在一起,上電燒錄后就可以運行了。本閱讀器主要有以下幾個功能模塊:開機動畫模塊、書架模塊和書籍閱讀模塊。(1)開機動畫模塊實現(xiàn)的功能:閱讀器開啟時的進入效果。(2)書架模塊實現(xiàn)的功能:①可以瀏覽和查看存儲在SD卡上的文件;②可以將存儲在SD卡根目錄下的書籍導入到書架上;③可以自動匹配導入書籍的封面;④可以在書架上的書籍下方顯示書名;⑤可以顯示當前的日期和時間;⑥可以將書架上的書籍刪除。(3)書籍閱讀模塊實現(xiàn)的功能:①閱讀txt格式的書籍;②閱讀時能夠進行手動翻頁;③瀏覽目錄信息,進行章節(jié)的選擇和跳轉;④設置背景顏色、字體的大小和顏色;⑤查看書籍的內容梗概;⑥查看正在閱讀的書籍名;⑦查看閱讀進度,即當前頁碼;⑧可以顯示“基于stm32的電子閱讀器”;⑨能夠從書籍閱讀模塊返回書架模塊,并記錄退出時的頁碼。系統(tǒng)總體方案設計根據(jù)需求分析,電子閱讀器的功能分為三大模塊組成,系統(tǒng)整體結構如REF_Ref100837110\h圖31所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s11系統(tǒng)整體結構本設計的硬件部分可以分為核心控制模塊、存儲模塊和顯示模塊三個部分。核心控制模塊選用STM32F407系統(tǒng)開發(fā)板,存儲模塊選用外置閃存SD卡,顯示模塊則選用4.3寸TFT-LCD[4]。系統(tǒng)總體框圖如REF_Ref100837210\h圖32所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s12系統(tǒng)總體框圖STM32F407用來實現(xiàn)文本文件的讀取和刪除等具體邏輯功能;TFT-LCD屏用來顯示文本內容,并通過其完成對文本內容的導入、刪除和閱讀等邏輯功能;SD卡用來存儲文本文件、字體格式資源文件、圖片資源文件、用戶閱讀小說的進度信息等。系統(tǒng)運行時,stm32f407會將SD卡中讀取到的信息顯示到TFT-LCD屏上,可顯示的內容包括TXT格式的文字和GIF/PNG格式的圖像。TFT-LCD屏采用獲取觸摸鍵值的方式來控制系統(tǒng)功能,并且在閱讀的過程中,可以通過左右滑動或點擊側面進行翻頁。另外,SD卡和STM32F407的通信采用的是SPI通信模式。系統(tǒng)硬件設計核心控制模塊核心控制模塊選用的是STM32F407,它是由ST公司開發(fā)的一款以Cortex-M4為內核的高效率微型處理器[5],其特點為體積小、性能高、功耗低、靈活性好、自帶的寄存器較多等。STM32F407芯片架構如REF_Ref100837244\h圖41所示。圖STYLEREF1\s4SEQ圖\*ARABIC\s11STM32F407芯片架構時鐘電路設計STM32F407微控制器系統(tǒng)內部包含的時鐘源有鎖相環(huán)電路、高速外部時鐘信號、高速內部時鐘信號、低速外部時鐘信號和低速內部時鐘信號等,其外部時鐘頻率和晶振頻率的范圍為3~25MHz。本次設計中采用的外部時鐘源為8M有源晶振。復位電路設計微控制器芯片在系統(tǒng)上電時,它的運行狀況是不確定的,容易出現(xiàn)死機或者程序跑飛的情況[6]。因此,需要加入復位電路,使系統(tǒng)在上電后可以將微控制器的狀態(tài)初始化為特定狀態(tài),從而防止這類情況的發(fā)生。如REF_Ref100837274\h圖42所示,該處的復位方式有兩種:①通過RC電路實現(xiàn)上電復位;②通過復位按鍵實現(xiàn)手動復位。圖STYLEREF1\s4SEQ圖\*ARABIC\s12復位電路顯示模塊TFT-LCD介紹顯示模塊采用的是4.3寸TFT-LCD顯示屏,它可以通過STM32F407的FSMC接口來控制16位色真彩圖片的顯示。由于彩屏顯示時用到的的數(shù)據(jù)量比較大并且其對速度的要求也比較高,所以采用并行的方式與外部連接,能夠使彩色圖片的顯示速度更快[7]。REF_Ref100837300\h表41為TFT-LCD顯示屏的部分引腳功能。表STYLEREF1\s4SEQ表\*ARABIC\s11部分引腳功能CSTFT-LCD片選信號WR向TFT-LCD寫入數(shù)據(jù)RD從TFT-LCD讀取數(shù)據(jù)D[15:0]16位雙向數(shù)據(jù)線RST硬復位TFT-LCDRS命令/數(shù)據(jù)標志(0:讀寫命令;1:讀寫數(shù)據(jù))LCD驅動原理液晶是介于固體和液體之間的一種狀態(tài),它具有一定的固體規(guī)則性和液體流動性[8]。因液晶結構具有不穩(wěn)定性,當在液晶兩端加以一定的電壓就會使液晶分子的結構發(fā)生改變,所以,液晶顯示的基本原理就是通過不同的電壓來調節(jié)顯示屏的透射光強度,進而達到顯示圖像效果的作用,因此利用液晶特殊的光電特性制成了。如果TFT-LCD要顯示彩色,則需要在偏光板前加上彩色濾光片,彩色的濾光片由R、G、B三原色組成,通過電壓的大小可以間接的影響光線的方向和強度,因此只要通過控制電壓的大小就可以顯示不同的顏色效果,這就是TFT-LCD面板顯示的基本原理。存儲模塊在設計存儲模塊時,存儲書籍的電子格式采用了TXT格式。TXT文件是微軟操作系統(tǒng)上自帶的一種最常見的一種文件格式,它可以用來存儲文本(文字)信息[9],其優(yōu)勢主要有:①體積小、存儲方便;②格式比較簡單;③是多種設備的通用性格式。在閱讀器的使用過程中,需要存儲大量的數(shù)據(jù),并且要求可以在PC機上查看數(shù)據(jù)[10]。而單片機自身的存儲能力有限,因此本系統(tǒng)選用了容量為128MB的W25Q128型號的SD卡作為外置存儲,它與STM32F407之間的數(shù)據(jù)可以通過SPI總線進行傳輸,從而實現(xiàn)對Flash的讀、寫和擦除等操作。SD卡容量大,移動方便,支持SPI方式,編程也比較簡單,因此單片機等處理器都以SD卡作為外部存儲器。SD卡有SD和SPI兩種讀寫模式,SPI是獨立序列輸入和輸出的模式,其所有的數(shù)據(jù)交換都是通過4條線來完成的。系統(tǒng)軟件設計FATFS文件系統(tǒng)FATFS文件系統(tǒng)介紹FATFS是專門為小型嵌入式系統(tǒng)設計的文件系統(tǒng)模塊,使用C語言進行編程,容易移植,所以常被移植到ARM、PLC等系列的單片機中使用,它的優(yōu)點有Windows兼容的FAT文件系統(tǒng)(支持FAT12、FAT16、FAT32),支持多種存儲媒介;具有單獨的緩沖區(qū)域,可以讀寫多個文件;支持多種配置選項;而且移植容易,程序代碼量少,可以進行高效地工作。FATFS文件系統(tǒng)磁盤組織結構FAT12、FAT16和FAT32格式的文件存儲器可以分為五個區(qū):MBR(主引導)區(qū)、DIR(根目錄)區(qū)、DBR(DOS引導記錄)區(qū)、FAT區(qū)、和DATA(數(shù)據(jù))區(qū)[11]。處于起始位置的是保留扇區(qū)。MBR區(qū)為第一個保留扇區(qū),其中保存了起始扇區(qū)號和第一磁盤分區(qū)的大小。根目錄中每一個文件的屬性和起始單元等信息保存在DIR區(qū)。DIR區(qū)的起始單元和FAT表可以用來定位需要打開的文件的存放位置。文件系統(tǒng)的標志、每簇的扇區(qū)數(shù)、每扇區(qū)的字節(jié)數(shù)、FAT表數(shù)、保留扇區(qū)數(shù)以及根目錄第一簇等信息都保存在DBR區(qū)。FAT32文件系統(tǒng)的根目錄區(qū)和數(shù)據(jù)區(qū)之間沒有嚴格的區(qū)別,文件名、起始簇號和大小等都存儲在根目錄中。FAT區(qū)存儲的是文件分配表,即FAT表,F(xiàn)AT表中有非常多的表項,每個表項都保存有一簇的信息。FAT表是以鏈式的方式存儲在FAT區(qū),要完成文件的鏈式存儲,就需要將文件占用的簇進行記錄,并且為每個被占用的簇指明存放后繼內容的下一個簇的簇號,對于文件的最后一簇,則要指明該簇不存在后繼簇。以FAT16說明FAT區(qū)數(shù)據(jù)結構如REF_Ref100837364\h表51所示:表STYLEREF1\s5SEQ表\*ARABIC\s11FAT區(qū)數(shù)據(jù)結構表項示例代碼描述0FFF8磁盤標識字,必須為FFFB1FFFF第一簇已經(jīng)被占用200030000h:可用簇0002h-FFFEFh:已用簇,表項中存儲文件下一個簇的簇號FFFF7h:壞簇FFF8h-FFFFh:文件的最后一簇30004????????????NFFFFN+10000?????????????DATA區(qū)用來存儲文件中的具體數(shù)據(jù)內容的區(qū)。在讀取和搜索FAT系統(tǒng)格式下的文件時,不僅需要定義扇區(qū)字節(jié)數(shù)、根目錄簇號等全局變量,而且還要對閱讀器所支持的文件類型進行定義,若沒有定義文件類型,在查看文件時將會發(fā)生錯誤。FATFS文件系統(tǒng)的移植FATFS源碼包文件夾下的documents文件夾里是一些使用過程的幫助文檔;FATFS文件系統(tǒng)的源代碼存放在source文件夾里,該文件夾就是我們需要添加到工程中的文件。FatFs功能配置的宏定義在source文件夾下的ffconf.h頭文件中,可以改變這些宏定義來裁剪FatFs的功能。為了避免因內核不同而引起的一些字節(jié)類型的定義不統(tǒng)一的現(xiàn)象,ff.h里面定義了針對文件系統(tǒng)的DWORD、WORD等統(tǒng)一的字節(jié)類型。所以,使用該文件系統(tǒng)中的字節(jié)類型進行定義就可以實現(xiàn)字節(jié)定義的統(tǒng)一性。一般而言實現(xiàn)文件的讀寫操作只要用到f_mount()、f_write()、f_open()、f_read()就可以了。source文件夾下文件的功能及說明如REF_Ref100837428\h表52:表STYLEREF1\s5SEQ表\*ARABIC\s12source文件夾下文件的功能及說明文件名功能說明diskio.cFatfs和diskI/O模塊接口層文件與平臺有關的代碼,用戶可以根據(jù)存儲介質來編寫函數(shù)diskio.hFatfs和diskI/O模塊公用的包含文件不需要修改ff.cFatfs模塊源碼不需要修改ff.hFatfs和應用模塊公用的包含文件不需要修改ffconf.hFatfs模塊配置文件需要根據(jù)需求來配置參數(shù)ffunicode.cFatfs所支持的字體代碼轉換表不需要修改ffsystem.cFatfs的OS相關函數(shù)示例代碼沒用到由此可見,只要修改diskio.c和ffconf.h文件就能夠實現(xiàn)Fatfs文件系統(tǒng)的移植。FAT32的文件查找過程FAT32文件的查找涉及到數(shù)據(jù)區(qū)和FAT表。例如查找a.txt時,先要根據(jù)DBR找到a.txt文件根目錄所在的簇,然后找到a.txt的目錄項在根目錄中的位置,獲取到a.txt的開始簇號后,在FAT表中找到保存該文件后繼內容的下一簇的簇號記錄,重復該操作,直到記錄的簇號為FFFF時,則表示查找已經(jīng)完成了[12]。FAT32文件查找過程如REF_Ref100837495\h圖51所示。圖STYLEREF1\s5SEQ圖\*ARABIC\s11FAT32文件系統(tǒng)文件查找過程
TXT文件讀取原理文件讀取的主要思想是:在SD卡初始化后查找FAT文件的根目錄表,根據(jù)文件目錄項查找到該文件的起始簇號,然后在FAT表里查找該簇的下一個簇號,將這些簇依次的讀取出來就可以實現(xiàn)TXT文件的讀取。TXT文件的內容是可以直接讀取的,在讀取到的內容后將其通過字庫轉換并進行一定的排版,然后可以將內容顯示在屏幕上。TXT文件讀取顯示設計流程圖如REF_Ref100837534\h圖52所示:圖STYLEREF1\s5SEQ圖\*ARABIC\s12TXT文件讀取顯示設計流程漢字顯示原理及中文字庫的生成漢字的顯示就是將漢字的筆順進行離散化處理后,用點陣來進行表示[13]。點陣中的每個點只有無筆劃(0)和有筆劃(1)這兩種狀態(tài)。漢字的字模是指記錄漢字點陣信息的二進制代碼集,而漢字庫則是由所有符號和漢字的點陣信息組成。液晶屏上漢字的顯示實際上是點的不顯示與顯示,筆畫實際上就是連續(xù)點的顯示。漢字的點陣數(shù)據(jù)是顯示漢字的前提,可以由點陣生成軟件來生成數(shù)據(jù)。由于漢字的存儲是以內碼的形式,所以需要建立點陣數(shù)據(jù)與內碼之間的關聯(lián)。漢字顯示的流程是:漢字內碼→查找點陣庫→解析→顯示。液晶屏顯示的字是由點和線組成的字模,因此還要有漢字與內碼的對應關系以及記錄內碼與字模的對應關系的字庫。本設計使用點陣字庫生成器WINDOWS系統(tǒng)下生成GBK12.FON、GBK16.FON、GBK24.FON和GBK32.FON字庫文件,然后將其拷貝到SD卡中的SYSTEM/FONT文件夾下,并且通過程序中的字庫檢測函數(shù)可以將字庫載入到系統(tǒng)中。SD卡初始化SD卡的初始化是從SD卡中正確讀寫數(shù)據(jù)的前提條件。SD卡的初始化過程如下:①初始化I/O口配置和CPU的SPI配置;②上電延時;③發(fā)送CMD0進入IDLE狀態(tài);④發(fā)送CMD8檢查協(xié)議是否兼容;⑤根據(jù)協(xié)議檢查SD卡,確定其類型;⑥取消CS,然后發(fā)送8個時鐘周期后,SD卡完成初始化。SD卡初始化的過程中,其最后發(fā)送的8個時鐘周期是提供給SD卡的額外時鐘,用來完成一些其他操作。在SD卡初始化后,就可以進行讀寫數(shù)據(jù)的操作了。SD卡讀寫操作SD卡中的數(shù)據(jù)是以塊為單位進行讀寫的,在初始化時可以設置的最大塊長為512字節(jié)。單片機發(fā)送CMD17或CMD18來讀取SD卡的一個或多個塊;發(fā)送CMD24或CMD25可以對一個或多個塊進行寫入操作。下面是讀取和寫入一個數(shù)據(jù)塊的具體過程。讀取一個塊數(shù)據(jù):①發(fā)送CMD17;②等待響應;③接收數(shù)據(jù)讀取起始標識符0xFE;④接收數(shù)據(jù);⑤接收循環(huán)冗余校驗(CRC),若不使用CRC,讀取后可以丟棄;⑥片選結束后發(fā)送8個時鐘周期。寫入一個塊數(shù)據(jù):①發(fā)送CMD24;②等待響應;③發(fā)送數(shù)據(jù)寫入起始標識符0xFE;④發(fā)送數(shù)據(jù);⑤發(fā)送偽CRC;⑥片選結束后發(fā)送8個時鐘周期。塊是SD卡數(shù)據(jù)讀寫的基本單元,若要進行大量塊的讀寫,可以用兩種方式實現(xiàn):讀寫多個塊和一個塊的多次讀寫命令。一個塊的多次讀寫命令可以在不要求速度的情況下使用,當要求高速的讀寫數(shù)據(jù)時,必須使用多個塊的讀寫命令。系統(tǒng)功能詳細設計SD卡存儲將文本文件和圖片存放在SD卡根目錄文件夾中,txt文件存放在TXT文件夾中,圖片存放在SYSTEM文件夾下的PICTURE文件夾中,字庫文件和字體文件存放在SYSTEM文件夾的FONT文件夾中,如REF_Ref100837567\h圖61所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s11SD卡存儲文件夾開機動畫模塊在給硬件模塊上電后,STM32F407與SD卡進行通信,打開并讀取SD卡的圖片文件目錄,通過文件名的匹配將圖片顯示到TFT-LCD屏上,達到開機動畫的效果。開機動畫的核心代碼如REF_Ref100837602\h圖62所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s12開機動畫核心代碼書架模塊(1)導入圖書將整理的文本格式的書籍存放在SD卡后,可以通過本閱讀器的導入圖書功能來查看SD卡文件夾目錄,并可以選擇需要閱讀的書籍導入到閱讀器的書架界面,并且在導入圖書后,將導入圖書的書名與SD卡中存儲的圖書封面進行自動匹配,若匹配到該圖書的封面,則在書架界面顯示該圖書封面,否則顯示默認封面,同時在圖書的下方顯示該圖書的書名。導入圖書程序流程圖如REF_Ref100837591\h圖63所示,實現(xiàn)導入功能的核心代碼如REF_Ref101609117\h圖64所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s13導入圖書程序流程圖圖STYLEREF1\s6SEQ圖\*ARABIC\s14導入圖書功能核心代碼(2)文件瀏覽功能在導入圖書的過程中,需要用到文件瀏覽功能。文件瀏覽功能是指在遍歷文件的過程中,將SD卡中的文件以列表的形式展現(xiàn)出來,使我們可以更容易地查找到存儲的電子書文檔[14],進而將用戶需要的書籍添加到書架中。實現(xiàn)文件瀏覽功能的核心代碼如REF_Ref100837650\h圖65所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s15文件瀏覽功能核心代碼(3)書架換頁因為在顯示每本書籍的封面時都占用了TFT-LCD屏的較大面積,因此一個書架只能顯示四本書,當導入的圖書超過四本時,圖書會直接導入到下一頁的書架上,向上滑動就可以進入下一頁的書架。實現(xiàn)該功能的核心代碼如REF_Ref100837677\h圖66所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s16書架換頁功能核心代碼(4)刪除圖書可以將書架上已導入的書籍從書架移除,刪除圖書程序流程圖如所示,實現(xiàn)刪除圖書功能的核心代碼如REF_Ref101609173\h圖68所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s17刪除圖書程序流程圖圖STYLEREF1\s6SEQ圖\*ARABIC\s18刪除圖書功能核心代碼(5)查看當前日期和時間在書架界面顯示當前日期和時間,實現(xiàn)該功能的核心代碼如REF_Ref100837708\h圖69所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s19查看當前日期和時間功能核心代碼書籍閱讀模塊(1)閱讀功能當用戶進入書籍閱讀界面時,閱讀控制模塊首先會根據(jù)用戶之前閱讀時所保存的頁碼信息等來確定文本的載入位置,然后根據(jù)屏幕的大小和文字的字號來確定每一頁上可顯示的文字長度,最后讀取相應長度的字符從而生成該載入位置的內容以及其前后兩頁的內容[15]。在顯示書籍內容的同時在閱讀界面上方顯示該圖書的書名、閱讀進度,即頁碼以及課題名稱“基于stm32的電子閱讀器”,并且可以通過滑動或點擊進行翻頁操作。閱讀功能的程序流程圖如REF_Ref100837726\h圖610所示,實現(xiàn)閱讀功能的核心代碼如REF_Ref101609296\h圖611所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s110閱讀功能程序流程圖圖STYLEREF1\s6SEQ圖\*ARABIC\s111閱讀功能核心代碼(2)目錄功能用戶在查看書籍目錄時,系統(tǒng)會根據(jù)程序中預先設定的匹配模式,匹配出該書籍中所有的章節(jié)標題及起始位置,從而生成章節(jié)列表[16]。在章節(jié)列表界面,一頁可以顯示21個章節(jié)信息,向上滑動可以更新章節(jié)列表。當點擊章節(jié)列表中的任意一個章節(jié)時,記錄該章節(jié)的偏移位置,然后將該章節(jié)起始位置的內容顯示到屏幕上。目錄功能的程序流程圖如REF_Ref100837747\h圖612所示,實現(xiàn)目錄功能的核心代碼如REF_Ref101609318\h圖613所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s112目錄功能程序流程圖圖STYLEREF1\s6SEQ圖\*ARABIC\s113目錄功能核心代碼(3)設置功能設置界面疊加在閱讀界面上實現(xiàn)的,及點擊設置,閱讀界面的下部分顯示設置界面,上半部分保持不變。設置功能可以設置背景顏色、字體的顏色和大小。將設置頁面按照功能劃分為四行,每行根據(jù)該功能的數(shù)量顯示相應的顏色填充或字體。當點擊相應的功能位置時,可以將閱讀界面的字體或顏色設置成對應字號或顏色效果。當點擊設置界面以外的位置時,會退出設置功能,返回閱讀界面。另外,閱讀界面的背景顏色默認為白色,字體顏色默認為黑色、字號默認為24號。REF_Ref100837755\h圖614為設置功能的程序流程圖。圖STYLEREF1\s6SEQ圖\*ARABIC\s114設置功能程序流程圖(4)簡介功能簡介功能用來顯示圖書的梗概內容。在點擊簡介按鈕后,頁面會進入簡介界面,同時,自動匹配書籍的簡介內容,從而以圖片的形式顯示于顯示屏上。簡介功能的程序流程圖如REF_Ref100837762\h圖615所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s115簡介功能程序流程圖(5)返回功能點擊返回按鈕,頁面會退出閱讀界面返回到書架界面,同時記錄該圖書的閱讀進度,即頁碼。返回功能的程序流程圖如REF_Ref100837775\h圖616所示。圖STYLEREF1\s6SEQ圖\*ARABIC\s116返回功能程序流程圖系統(tǒng)功能測試開機動畫功能測試給硬件模塊上電的進入效果,如REF_Ref100837796\h圖71所示,開機效果持續(xù)1.5s后進入書架界面,同時在書架上方顯示當前日期和時間,如圖7-2所示。圖STYLEREF1\s7SEQ圖\*ARABIC\s11上電動畫效果圖STYLEREF1\s7SEQ圖\*ARABIC\s12書架界面書架模塊功能測試(1)導入圖書和文件瀏覽功能點擊導入圖書,進入文件夾列表,如REF_Ref100837932\h圖73,點擊TXT文件夾,進入圖書列表,如圖7-4,選擇斗破蒼穹導入書架,彈出導入提示,如REF_Ref100837959\h圖75,選擇“是”,圖書導入書架,同時匹配圖書封面并顯示書名,然后按照之前的操作導入大道朝天。導入書籍后書架界面如圖7-6所示。圖STYLEREF1\s7SEQ圖\*ARABIC\s13文件夾列表圖STYLEREF1\s7SEQ圖\*ARABIC\s14圖書列表圖STYLEREF1\s7SEQ圖\*ARABIC\s15導入提示圖STYLEREF1\s7SEQ圖\*ARABIC\s16導入圖書后的書架界面(2)刪除圖書點擊刪除圖書,書架上的每本圖書右上角出現(xiàn),然后點擊大道朝天右上角的,彈出刪除圖書提示,選擇“是”,就可以將大道朝天這本書移出書架,選擇“否”,則會返回書架界面。刪除圖書過程如REF_Ref100837981\h圖77所示。圖STYLEREF1\s7SEQ圖\*ARABIC\s17刪除圖書運行過程書籍閱讀模塊功能測試(1)進入閱讀功能單擊斗破蒼穹,顯示屏進入圖書加載界面,如REF_Ref100837997\h圖78所示。圖書加載到100%后,進入到閱讀界面圖書首頁,同時在閱讀界面上方顯示該圖書的書名、閱讀進度,即頁碼以及課題名稱“基于stm32的電子閱讀器”,如圖7-9所示。在閱讀頁面向右滑動或點擊左側,進入圖書上一頁,在閱讀首頁時向右滑動或點擊左側,頁面下方顯示“已經(jīng)是第一頁”,如圖7-10所示;向左滑動或點擊右側,進入圖書下一頁。圖STYLEREF1\s7SEQ圖\*ARABIC\s18圖書加載頁面圖STYLEREF1\s7SEQ圖\*ARABIC\s19閱讀界面圖STYLEREF1\s7SEQ圖\*ARABIC\s110首頁翻頁(2)目錄功能點擊目錄按鈕,生成斗破蒼穹章節(jié)列表,如REF_Ref100838057\h圖711所示。向上滑動更新章節(jié)信息,如圖7-12所示。點擊第二十二章,圖書的閱讀界面就會跳轉到該章,如圖7-13所示。圖STYLEREF1\s7SEQ圖\*ARABIC\s111目錄頁面圖STYLEREF1\s7SEQ圖\*ARABIC\s112更新目錄圖STYLEREF1\s7SEQ圖\*ARABIC\s113目錄跳轉(3)設置功能點擊設置按鈕,閱讀頁面下方出現(xiàn)設置界面,如REF_Ref100838081\h圖714。點擊“護眼”,設置效果如圖7-15;點擊背景顏色““,設置效果如圖7-16;點擊字體顏色”“,設置效果如REF_Ref100838113\h圖717;點擊字號“32號“,設置效果如圖7-18。圖STYLEREF1\s7SEQ圖\*ARABIC\s114設置界面圖STYLEREF1\s7SEQ圖\*ARABIC\s115設置護眼模式圖STYLEREF1\s7SEQ圖\*ARABIC\s116設置背景顏色圖STYLEREF1\s7SEQ圖\*ARABIC\s117設置字體顏色圖STYLEREF1\s7SEQ圖\*ARABIC\s118設置字號(4)簡介功能點擊簡介按鈕,進入簡介界面,顯示斗破蒼穹的內容梗概,如REF_Ref100838131\h圖719所示。圖STYLEREF1\s7SEQ圖\*ARABIC\s119簡介界面(5)返回功能點擊返回按鈕,頁面會退出閱讀界面返回到書架界面,在退出的同時記錄該圖書此時的頁碼,再次進入時會跳轉至該頁,如REF_Ref100838137\h圖720所示。圖STYLEREF1\s7SEQ圖\*ARABIC\s120返回重新進入測試過程中遇到的問題①在SD卡中存放圖書和文本文件時,存放順序為:SD文件夾→SYSTEM、TXT文件夾→書籍封面和文本文件,在實際運行時,封面自動匹配無法匹配到書籍封面。解決方法:將SD卡中的存放順序修改為:SYSTEM、TXT文件夾→書籍封面和文本文件。②剛開始做顯示當前日期時間功能時,我打算把實時顯示時間的功能封裝成了一個單獨的函數(shù),然后在主函數(shù)中調用,后面在實際運行時發(fā)現(xiàn)程序一直在顯示時間的函數(shù)中循環(huán),導致其他功能不能運行。解決方法:在將該功能的主要代碼寫在主函數(shù)的while()循環(huán)中,閱讀器的功能就能正常使用了。③LCD上可以正常顯示日期和時間后,硬件部分重新上電時時間會重新初始化。解決方法:刪除掉主函數(shù)中的日期和時間設置函數(shù),斷電后日期和時間也會一直運行,不會重新初始化。④在書架上導入兩本或兩本以上的書,閱讀界面顯示的書名都是最后導入書的書名。解決方法:將引用的導入圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 情緒洞察報告范文
- 二零二五年度電子商務股東股權轉讓與物流配送協(xié)議
- 二零二五年度排水溝工程風險評估合同范本
- 2025年度餐飲企業(yè)員工福利待遇勞動合同
- 2025年度智能家居產品推廣介紹費合同書
- 二零二五年度生態(tài)園區(qū)前期物業(yè)服務合同
- 二零二五年度醫(yī)療設備試用與產品推廣及技術服務合同
- 二零二五年度個體經(jīng)營企業(yè)資金走賬與審計合同
- 二零二五年度光伏發(fā)電施工安全責任書
- 二零二五年度網(wǎng)絡安全培訓商業(yè)技術合作保密協(xié)議書
- 2024年南京旅游職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 中藥學電子版教材
- 托管中心學生家長接送登記表
- 橋梁施工危險源辨識與防控措施
- YD 5062-1998 通信電纜配線管道圖集_(高清版)
- CFG樁施工記錄表范本
- 在生產過程中物料流轉交接管理規(guī)定(清風出品)
- 第1章操作系統(tǒng)引論
- 【活動記錄】初中九年級英語教研組活動記錄
- pep小學英語四年級上冊Unit3全英文說課稿
- 中藥知識文庫:天麻形態(tài)學
評論
0/150
提交評論