<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > 基于RT-Thread和STM32的數碼相框的設計方案

          基于RT-Thread和STM32的數碼相框的設計方案

          作者: 時間:2013-12-28 來源:網絡 收藏

            

            3.4 LCD觸摸驅動電路

            本系統的觸摸控制器選用TSC2046,TSC2046是四線電阻式觸摸屏控制器,其核心是一個具有采樣和保持功能的12位逐次逼近式A/D轉換器。本系統通過的SPI接口驅動TSC2046控制器,典型的驅動電路如圖6所示。

            

          4.系統軟件設計

            本系統的軟件主要由系統各模塊初始化、μC/GUI建立人機交互界面、文件系統讀取圖片及字庫文件、圖片解碼算法的實現、觸摸瀏覽功能及幻燈片播放功能等功能模塊組成。

            4.1 μC/GUI建立人機交互界面本系統利用μC/GUI builder建立μC/GUI人機交互界面,在μC/GUI builder中建立窗體、文本框、控件等、將編譯后產生的C文件添加到工程目錄中。μC/GUI builder的應用,縮短了界面開發(fā)周期,修改靈活方便,后期修改界面時,只需要在μC/GUI builder修改相關組件,編譯運行即可實現程序的修改。

            4.2 μC/GUI顯示漢字

            μC/GUI中通過查找字模的方式來實現字體的顯示。字體庫中的每一個字母都有其對應的字模,字模由結構體GUI_FONT和GUI_FONT_PROP統一管理。但是μC/GUI中本身只支持英文,沒有提供中文的字庫源碼文件。本系統在修改μC/GUI字庫顯示驅動函數的基礎上實現了漢字的顯示,以顯示12*12點陣漢字為例,具體的修改步驟如下:

            第一步:在GUI.H中聲明全局結構體對象GUI_Font12_HZ;

            第二步:定義存放字模數據的數組;

            第三步:定義用于說明每個字母的字模數據在程序段存儲方式的結構體;

            第四步:根據漢字內碼高位定義多個結構體,用于存放字庫字模編碼和字模數據存放地址的映像;

            第五步:將創(chuàng)建的漢字庫文件HZK12.C添加至μC/GUI工程,在主函數中調用顯示函數。

            通過以上步驟實現了中文漢字在μC/GUI界面的顯示,經測試,漢字顯示流暢穩(wěn)定。

            4.3 圖片解碼算法

            JPEG圖片解碼顯示包括解析JPEG頭文件信息、基于連續(xù)DCT編碼的JPEG解碼算法處理、轉換圖像格式、液晶顯示等部分,總體流程圖如圖7所示。

            

            4.3.1 解析JPEG頭文件信息

            對JPEG解碼的過程進行初始化,獲取JPEG頭文件中的相關信息,本系統的方法是設計一系列的結構體對應頭文件中的各個信息標記,并存儲標記內表示的信息,如色彩信息、采樣比、圖片尺寸、量化表、Huffman解碼表等重要信息。

            4.3.2 基于連續(xù)DCT編碼的JPEG解碼算法

            基于連續(xù)DCT編碼的JPEG解碼算法包括熵解碼、反量化和反向離散余弦變換(IDCT)共三個步驟。JPEG基本系統的解碼器結構圖如圖8所示。

            

           ?。?)熵解碼。熵解碼的輸入信號是被壓縮編碼的比特流,輸出是被解碼得到的DCT變換系數的量化值。通過查找Huffman解碼表將壓縮圖像數據還原成交流AC系數和直流DC系數組成的量化數據塊。

            熵解碼對讀入的圖像數據進行DC直流系數和AC交流系數的Huffman解碼。JPEG算法提供標準的Huffman碼表,針對每幅圖像都有各自不同的特點,系統熵解碼采用自適應的Huffman碼表。采用自適應的Huffman碼表,首先統計輸入圖像數據的特性,生成碼樹,再反推得到各級Huffman碼表。

            在JPEG頭文件信息的標記中,定義了一張表用來記錄Huffman樹其代碼長度限制在16bit以內。JPEG頭文件信息一般包含4個Huffman碼:用于解碼直流DC系數的Huffman碼表,其中包括一個亮度表和一個色度表;用于解碼交流AC系數的Huffman碼表,其中包括一個亮度表和一個色度表。根據Huffman碼表在文件中的保存形式,設計Huffman解碼一個碼字的程序,程序流程圖如圖9所示。

            

            解碼時,輸入圖像壓縮后的數據流,從數據流中讀取比特數據組成的碼字,在Huffman樹中搜索碼字的位置,根據碼字的位置確定解碼的值,解碼輸出結果是一個8位值。在Huffman解碼過程中,如果產生了一個0xFF,就用0xFF0x00代替,把0xFF0x00當做0xFF進行處理。

           ?。?)反量化。反量化的輸入信號是熵解碼后的數據,通過查量化表進行計算,將在壓縮過程中經過DCT變換后的頻率系數還原出來,反量化成DCT系數。

            JPEG文件中包括亮度量化表和色度量化表兩張量化表,將Huffman解碼得到的系數矩陣與相應的量化矩陣相乘,即得到反量化結果。

            由于數據是按8×8矩陣的“Z”字形編排,所以要對反量化運算的結果進行反Zig-Zag變換。

            (3)反向離散余弦變換(IDCT)。反向離散余弦變換把頻率域DCT分量系數反轉成顏色空間域表示的圖像數據。對反量化后得到的DCT變換系數經過反向離散余弦變換IDCT得到圖像的像素。反離散余弦轉換的輸入是頻率域的一個8×8分量系數塊,輸出則得到空間域的一個8×8像素塊。

          晶振相關文章:晶振原理


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();