新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于嵌入式處理器S3C44B0X的μC/GUI設計

        基于嵌入式處理器S3C44B0X的μC/GUI設計

        作者: 時間:2012-03-23 來源:網(wǎng)絡 收藏

        硬件平臺中,為顯示單獨分配一個專用DMA通道,這樣可大大節(jié)省CPU資源,使系統(tǒng)速度更快。內(nèi)存方面,系統(tǒng)分配一個規(guī)定大小的內(nèi)存作為實屏顯示內(nèi)存,處理器按指定的刷新頻率使用專用DMA通道將內(nèi)存中的數(shù)據(jù)寫入LCD的顯示緩沖區(qū),實現(xiàn)LCD的圖形界面顯示。

        4. μC/GUI在上的移植

        4.1 移植步驟

        一般的移植過程可分為以下步驟進行:

        (1)定制自己需要的μC/GUI;(2)指定硬件設備的地址,編寫接口驅(qū)動代碼;(3)編譯、鏈接、調(diào)試子程序;(4)測試、修改、增加自己需要的功能;(5)編寫自己的應用程序;限于篇幅限制,本文只給出移植的核心步驟:接口驅(qū)動程序代碼的編寫。

        4.2 μC/GUI與輸入輸出設備驅(qū)動接口模塊設計

        本文以LCD驅(qū)動接口模塊設計為例介紹在μC/GUI移植過程中LCD驅(qū)動程序的編寫,以最終實現(xiàn)圖形顯示。

        驅(qū)動程序主要是LCD初始化,這個函數(shù)完成對44B0X LCD控制器的配置、顯存的映射等。本文以筆者使用320×240彩色LCD為例給出初始化程序的編寫。具體如下:

        void LCD_Init(void)

        {int i;

        LCD_DisplayOpen(FALSE);// /* 關LCD顯示 */

        for(i=0; i320*240; i++) /* 初始化顯存 */

        *(pLCDBuffer256+i) = 0x0;

        rPDATD = 0xff;;

        rPCOND = 0xaaaa; /* PDATD[7 :0]: 此處初始化為0xff */

        rPUPD = 0x00; /* PCOND[15:0]: 配置為功能端 */

        /* PUPD [7 :0]: 允許相應位的上拉電阻(0=允許, 1=禁止) */

        rLCDCON1 = (0)|(DISMODE5)|(WDLY8)|(WLH10)|(CLKVAL12);

        /* disable,8B_SNGL_SCAN,WDLY=16clk,WLH=16clk, CLKVAL=10*/

        rLCDCON2 = (LINEVAL)|(HOZVAL10)|(LINEBLANK21);

        /* 使用彩色模式, LCDBANK=0xc000000, LCDBASEU=0x0 */

        rLCDSADDR1= (MODESEL27) | (((U32)pLCDBuffer256>>22)21) |
        M5D((U32)pLCDBuffer256>>1);

        rLCDSADDR2= M5D(((U32)pLCDBuffer256+(LCDWIDTH*LCDHEIGHT))>>1) |
        (MVAL21);

        rLCDSADDR3= PAGEWIDTH | (OFFSIZE9);

        rREDLUT = 0xfdb97531;

        rGREENLUT = 0xfdb97531; /* 設置紅綠藍三色的顏色值*/

        rBLUELUT = 0xfb73;

        rDITHMODE = 0x0;

        rDP1_2 = 0xa5a5;

        rDP4_7 = 0xba5da65;

        rDP3_5 = 0xa5a5f;

        rDP2_3 = 0xd6b;

        rDP5_7 = 0xeb7b5ed;

        rDP3_4 = 0x7dbe;

        rDP4_5 = 0x7ebdf;

        rDP6_7 = 0x7fdfbfe; /* 使能8位單掃描/

        rLCDCON1 = (1)|(DISMODE5)|(WDLY8)|(WLH10)|(CLKVAL12);

        Delay(5000);

        LCD_BkLight(TRUE); /* 開背光 */
        LCD_DisplayOpen(TRUE); /* 打開LCD顯示 */}

        完成如上LCD驅(qū)動以后, 再設置相應的中斷服務子程序(IS), μC/GUI即可以穩(wěn)定地運行在硬件平臺上。



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 新源县| 泌阳县| 张家口市| 政和县| 宁明县| 怀来县| 普安县| 隆德县| 晋宁县| 手游| 永新县| 库伦旗| 镇平县| 随州市| 吴旗县| 临西县| 开阳县| 施甸县| 古蔺县| 雅江县| 宁南县| 潞西市| 绵竹市| 甘南县| 漠河县| 陇西县| 鹤峰县| 济宁市| 新建县| 饶河县| 仪陇县| 邢台县| 延安市| 阿荣旗| 临武县| 贞丰县| 阿克苏市| 徐州市| 石首市| 油尖旺区| 焦作市|