void LCD_Init_Controler()
{rLCDCON1=(0)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);
//disable,8B_SNGL_SCAN,WDLY=8clk,WLH=8clk,rLCDCON2=
(LINEVAL)|(HOZVAL_COLOR<<10)|(10<<21);
//LINEBLANK=10(without any calculation)
rLCDSADDR1= (0x3<<27) | (((U32)
frameBuffer256>>22)<<21)|
M5D((U32)frameBuffer256>>1);
//256-color,LCDBANK,LCDBASEU
rLCDSADDR2=M5D((((U32)frameBuffer256+(SCR_XSIZE*LCD_YSIZE))>>1))|(MVAL<<21);
rLCDSADDR3= (LCD_XSIZE/2) | (((SCR_XSIZE-LCD_XSIZE)/2)<<9);
//The following value has to be changed forbetter display.
rREDLUT =0xfdb96420;
rGREENLUT=0xfdb96420;
rBLUELUT=0xfb40;
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;
rLCDCON1= (1)|(2<<5)|(0<<7)|(0x3<<8)|(0x3<<10)|(4<<12);
經過以上幾步,就完成了液晶的硬件驅動,下面就是移植軟件包,調用底層驅動,完成復雜的顯示任務。
3 uC/GUI軟件包的移植
3.1 uC/GUI特點
(1)支持任何8位、16位和32位的CPU,只要求CPU具有相應的ANSI-C編譯器即可;
(2)所有硬件接口定義都使用可配置的宏;
(3)字符、位圖可顯示與LCD的任意點,并不限制與字節長度的整數倍數地址;
(4)所有程序在長度和速度方面都進行了優化,結構清晰;
(5)對于慢速的LCD控制器,可以使用緩沖存儲器減少訪問時間,提高顯示速度。
3.2 uC/GUl移植步驟
在使用uC/GUI時,可以按照以下幾個步驟來進行:
(1)按照需要,定制uC/GUI;
(2)指定硬件設備的地址,編寫接口驅動代碼;
(3)編譯、鏈接、調試例子程序;
(4)修改例子程序,并測試增加需要的功能;
(5)編寫自己的應用程序。
3.3 具體實現
(1)首先介紹uC/GUI的目錄結構和基本配置。
uC/GUI主要目錄如下:
GUI/ConvertMono 使用黑白顯示設備時,所要使用的灰度轉換函數
GUI/ConvertColor 使用彩色顯示設備時,使用的色彩轉換函數
GUI/Config 包含了對uC/GUI進行配置的一些文件
GUI/Core uC/GUI核心代碼
GUI/Font uC/GUI與字體相關的代碼文件
GUI/LCDDriver LCD驅動代碼文件
GUI/MemDev 內存設備支持文件代碼
GUI/Touch 輸入設備支持的文件代碼
GUI/Widget uC/GU1支持的控件代碼,包括編輯框、列表框、按鈕和選擇框等
GUI/WM uC/GUI窗口管理部分代碼
(2)修改uC/GUI,使之適于移植。
在ADS環境中新建一個工程,將上述gui文件夾下的所有文件加入工程。
將Config文件夾下的3個文件GUIConf.h、
GUITouchConf.h和LCDConf.h加入新工程,如下修改LCDConf.h的內容:
/*LCDConf.h*/
#ifndef LCDCONF_H
#define LCDCONF_H
#define LCDG4 //lcd顏色數,必須定義,LCDMONO(單色),LCDG4(四級灰度),LCDG16(16級灰度)
#define LCD_XSIZE(640)/* LCD水平分辨率 */
#define LCD_YSIZE(480)/* LCD垂直分辨率 */
#define LCD BITSPERPIXEL(8)
#endif /*LCDC0NF_H*/
/*以下是S3C44B0X LCD控制器的配置*/
#include "..incoption.h"
#define SCR_XSIZE (640)//視窗屏幕大小
#define SCR_YSIZE (480)
#define LCD_XSIZE (640)//液晶屏幕大小
#define LCD_YSIZE (480)
#define M5D(n)((n)&0x1fffff)
#define ARRAY_SIZE_G4(SCR_XSIZE/4*SCR_YSIZE)
#define HOZVAL (LCD_XSIZE/4-1)
#define HOZVAL_COLOR (LCD_XSIZE*3/8-1)
#define LINEVAL (LCD_YSIZE-1)
#define MVAL (13)
#define CLKVAL_G4 (10)
#define MVAL_USED 0
#endif /*LCDCONF_H */
評論
查看更多