新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > 一種用于嵌入式系統的液晶顯示單元設計

        一種用于嵌入式系統的液晶顯示單元設計

        作者: 時間:2009-03-25 來源:網絡 收藏

        在自動化儀器儀表、工業測控裝置等計算機中,圖形模塊(點陣)以顯示靈活、信息量大、可實現圖形界面等優點而被廣泛的用做顯示終端。這些模塊大多提供并行數據接口,少量提供串行接口的模塊也要求通信采用特殊協議,給的軟硬件都帶來較大不便。在顯示程序上,可移植通用的圖形用戶界面軟件,如Mini,Open等,以簡化軟件工作。但是,這些GUI軟件移植繁瑣,有些源代碼不公開,一般需要數百KB的存儲量,對于一些只要求實現簡單界面的工控應用來說過于龐大,有一些功能(如鼠標操作、支持漢字輸入法等)也不十分必要。
        針對上述問題,本文結合顯示模塊STN6448D-4K了一種滿足工控要求的模塊化圖形。硬件上通過51單片機搭建轉換電路,實現模塊并行訪問時序到串行顯示命令的轉換。軟件上結合串行接口命令和通信協議,用C語言編寫了具有消息驅動機制的簡單通用圖形用戶界面GUI程序,可以方便地移植到各種工控
        1.標準串口擴展的設計
        模塊STN6448D-4K支持640×480點陣4096偽彩色顯示,用戶接口為8位并行口。圖1為模塊的硬件擴展接口結構,在AT89C51單片機最小系統基礎上,擴展了一片MAX232。單片機通過總線與模塊STN6448D-4K的控制器相連。單片機接收并分析串口指令,調用相應函數完成對的各種顯示控制。為減少串行通信數據量,還擴展了一片2MB的Flash存儲器AM29F016D,存儲BMP圖像和字符庫、漢字庫。通常采用的字庫有漢字庫文件Hzk16f.bin(16×16點陣)、Hzk24k.bin(24×24點陣),ASCII碼文件ASC16.bin(16×8點陣)、ASC24.bin(24×12點陣)等,位圖文件可以根據需要自行制作和增減。所有的字庫和位圖均通過接口從PC機下載到Flash存儲器中,根據每個文件的存儲首地址索引可以完成字符、漢字、位圖的顯示。

        本文引用地址:http://www.104case.com/article/169529.htm

        2.串口指令和通信軟件設計
        按照STN6448D-4K的編程格式編寫清屏、畫點、畫線、畫矩形、寫字符(ASCII字符、漢字)、加載位圖等基本繪圖函數的單片機程序比較簡單,這里不作說明。單片機在完成初始化、清屏操作后,將就緒狀態信息傳遞給嵌入式系統的CPU,并等待從傳來的繪圖指令。每一個繪圖指令,都是一個繪圖命令幀,與一個繪圖函數相對應。
        單片機收到一個完整的繪圖指令后根據指令碼識別不同的繪圖操作,調用相應的函數完成顯示控制。由于各個函數的指令長短不一,單片機需要判斷出一條指令的結束;而且單片機完成LCD操作需要時間,硬件上又沒有一個“BUSY”信號來指示單片機暫時不能接收指令。故程序設計上需保證傳輸同步和可靠性。
        2.1 顯示命令幀的封裝
        每一個繪圖指令都封裝成一個繪圖命令幀,封裝時依據以下3條規則:
        (1)在每一個繪圖指令的結尾加上標志字節END,封裝成一個繪圖命令幀。一個完整的繪圖命令幀包括繪圖指令碼、繪圖函數參數以及END標志。標志字節END的編碼為0x55;
        (2)在幀數據(指令的有效數據)中的某一個字節如果與END(0x55)相同,則將這個字節轉換為(0xDE,0xCF)的2字節序列。其中0xDE稱為轉義字符TRANS,0xCF為數據與END標志相同時轉義后的替換符TRANS_REP。
        (3)如果幀數據中某個字節與轉義字符(0xDE)本身相同,則將其更換為(0xDE,0xDE)2字節序列。
        如果不考慮轉義字符,一個完整的繪圖命令幀格式如下:

        其中:CMD指令碼,P1-Pn為n個字節數據。例如畫水平線函數對應的命令幀中的字符依次為:0xCA, X0_H, X0_L, Y_H, Y_L, X1_H, X1_L, CLR。其中0xCA為指令碼(對每個函數唯一),之后的6個為坐標參數,CLR為顏色。
        2.2 接收狀態機
        單片機的接收中斷處理采用接收狀態機機制,狀態轉換如圖2所示。
        三個狀態的含義為:

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 菏泽市| 高阳县| 车致| 乌海市| 清丰县| 射阳县| 景谷| 蚌埠市| 景洪市| 涿鹿县| 东乡县| 呼图壁县| 青浦区| 大丰市| 弋阳县| 宿迁市| 包头市| 禄劝| 梓潼县| 辉县市| 公主岭市| 进贤县| 元江| 蕉岭县| 天台县| 额敏县| 北碚区| 苍梧县| 余干县| 汉阴县| 厦门市| 普宁市| 巨鹿县| 桂阳县| 华池县| 辽宁省| 友谊县| 固镇县| 镇赉县| 兖州市| 新兴县|