触屏校准&测试程序

Mini2440测试通过:

转自:http://www.enjoylinux.cn/bbs/read.php?tid=708

触屏校准&测试程序

程序功能:
1)触屏校准:
按下预设的4个坐标点,利用ADC转换功能采集对应物理坐标,得出物理坐标与屏幕像素坐标之间的关系。
物理坐标和象素坐标的转换表达式如下:
hor_pix = (int)(mul_x * X + add_x)
ver_pix = (int)(mul_y * Y + add_y)
其中:(X, Y)表示物理坐标,(hor_pix, ver_pix)表示象素坐标。

2)触屏坐标测试:
随机按下触屏,根据以上公式,程序自动给出相应象素坐标值。

3)信息显示:
整个过程中的提示信息,均以ASCII字符形式显示在屏幕上。

功能模块说明:
本程序以2440触屏测试程序源码为基础,增加了以下功能模块:
1)ascii码字符串输出函数:以象素点阵画出ascii码字符并在屏幕上显示。

2)字符串滚动显示函数:参考操作系统终端的显示方式,设定一个固定显示8行字符的区域,新的一行字符显示出来的时候会使其上所有字符上移一行。

3)同一行追加显示函数:要显示的字符串不另起一行,而是在最后一行的尾部以追加的方式显示。

4)全屏刷新函数:在屏幕滚动显示的时候,显示效果与显存内容不同步,在滚动结束时,需调用此函数进行处理。

5)画十字函数:在指定位置画出十字,以显示校准点。

6)带轨迹移动十字函数:按指定偏移量水平或垂直移动十字, 并显示移动轨迹。

7)校准数据采集有效性判断函数:根据设定的阀值判断采集到的物理坐标是否有效,以保证准确按下校准点。

8)浮点数/整型数转字符串函数:为了将数值显示于屏幕上,需预先转换为字符串类型。

9)触屏按下处理函数:判断当前按下的点是校准点还是测试点,并做出相应处理,若为校准点将会在屏幕上显示下一步操作提示信息,为测试点的话会显示相应位置的象素坐标。

10)触屏弹起处理函数:判断触屏校准工作是否完成,完成的话将会显示象素坐标的计算公式,否则会给出下一步操作信息。

11)行清理函数:以背景色填充指定行。

程序执行效果如图所示:

触屏校准&测试程序_第1张图片

以下为代码文件说明:
1)触屏校准函数库文件,包含以上所有功能模块。
adj_sc.c

2)触屏校准头文件。
adj_sc.h

3)Main.c文件,为2440示例代码,全盘引用,仅在Test_Touchpanel函数中加入第1个校准点提示信息,并在AdcTsAuto函数的stylus down部份调用check_touch_down函数,stylus up部份调用check_touch_up函数。
Main.c

4)Main.h文件。
Main.h

5)ASCII字模数组文件。
ascii.c


1)触屏校准函数库文件,包含以上所有功能模块。
adj_sc.c

/*****************************************
  NAME: adj_sc.c
  DESC: Adjusting Touch screen & test
  HISTORY:
  2011.09.01:Joshua Chan: draft ver 1.0
*****************************************/

#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"
#include "main.h"
#include "adj_sc.h"

/* 定义320行,240列的数组,用于存放显示数据 */
volatile unsigned short LCD_BUFFER[SCR_YSIZE][SCR_XSIZE];

/* 用(current_x, current_y)来记录下次显示字符的起始坐标 */
int current_x = 0;
int current_y = 0;

/*
* (x1, y1), (x2, y2), (x3, y3), (x4, y4)用来采集4个校准点物理坐标
* 4个屏幕校准点象素坐标分别为: (40, 30), (280, 30), (280, 210), (40, 210)
*/
int x1=0, x2=0, x3=0, x4=0;
int y1=0, y2=0, y3=0, y4=0;

int collect_count = 0;

/* current_row记录下次打印起始行, 第一次打印从57行开始 */
int current_row = 57;

/*
* 物理坐标和象素坐标的转换表达式如下:
* hor_pix = (int)(mul_x * X + add_x)
* ver_pix = (int)(mul_y * Y + add_y)
* 其中: (X, Y)表示物理坐标, (hor_pix, ver_pix)表示象素坐标
*/
float mul_x = 0.0;
float mul_y = 0.0;
float add_x = 0.0;
float add_y = 0.0;


/*
* 用象素点阵画出ascii码字符
* 每个文字点阵8x16, 长度16字节, 即 1 bit 表示 1 象素
* 排列方式:横向顺序,横排
* @*ch: 字模数组地址
* @swi: 起始坐标选择开关, 值为0时, 表示起始坐标为(x0, y0),
*       值为1时, 表示起始坐标为(current_x, current_y),
*       即最后画的那一个字符后面的位置.
*/
void draw_char(int x0, int y0, U16 front_color, U16 back_color, char *ch, int swi)
{
    int x=0, y=0;
    unsigned char tmp = 0;
    U32 c=0;
    char *p = ch;

    if (swi == 1) {
        x0 = current_x;
        y0 = current_y;
    }

    while (*p) {
        for (y=y0; y<y0+16; y++) {
            for (x=x0; x<x0+8; x++) {
                /* 用tmp取出数组中对应的元素, 长度为1字节,
                 * 取出tmp中相应的1位, 并转换为2字节的颜色信息,
                 * 并存入显存相应位置 */
                tmp = ASCII[(*p)*16+y-y0];
                c = (tmp & (1<<(8-(x-x0))))?(front_color):(back_color);
                LCD_BUFFER[y][x] = c;
            }
        }
        x0 = x0 + 8;
        p++;
    }
    current_x = x;
    current_y = y0;
}

/*
* 在高度为128的象素区滚动显示字符点阵
* 因为每个文字点阵8x16, 所以此区域共可显示8行文字
* 起始垂直象素坐标57, 结束坐标为184
* 第一行文字从坐标57开始, 末行文字从坐标169开始
* @*ch: 要显示的字符串地址
*/
void scroll_display(char *ch)
{
    int x0 = 10;
    int i, j, k;

    if (current_row > 169) {
        current_row = 169;
        for (i=0; i<16; i++) {
            for (j=57; j<184-i; j++) {
                clear_line(j);
                for (k=1; k<320; k++) {
                    LCD_BUFFER[j][k] = LCD_BUFFER[j+1][k];
                }
            }
            clear_line(184 - i);
        }        
    }
    
    draw_char(x0, current_row, F_COLOR, B_COLOR, ch, 0);
    current_row += 16;
    refresh_screen();
}

/*
* 挨着上次的字符显示指定字符串
*/
void add_display(char *ch)
{
    draw_char(0, 0, F_COLOR, B_COLOR, ch, 1);
    refresh_screen();
}

/*
* 用背景色填充指定行
*/
void clear_line(int line)
{
    int i;
    
    for (i=1; i<320; i++)
        LCD_BUFFER[line][ i ] = B_COLOR;
}

/*
* 全屏刷新
* 在屏幕滚动显示的时候, 显示效果与显存内容不同步,
* 在滚动结束时, 需调用此函数处理
*/
void refresh_screen(void)
{
    int i, j;
    
    for( i = 0 ; i < SCR_YSIZE ; i++ )
        for( j = 0 ; j < SCR_XSIZE ; j++ )
            LCD_BUFFER[ i ][j] = LCD_BUFFER[ i ][j] ;
}

/*
* 以(x0, y0)为中心画十字
*/
void draw_cross(int x0, int y0, int size, U16 d_color)
{
    int x=0, y=0;
    int tmp = size/2;
    
    for (x=(x0-tmp); x<(x0+tmp+1); x++)
        LCD_BUFFER[y0][x] = d_color;

    for (y=(y0-tmp); y<(y0+tmp+1); y++)
        LCD_BUFFER[y][x0] = d_color;
}

/*
* 水平或垂直移动十字, 并显示移动轨迹
* 在移动的过程中, 用背景色画十字来清除轨迹
* (x0, y0) 为起始坐标
* @x_of: X 方向偏移量
* @y_of: Y 方向偏移量
* "x_of" 与 "y_of" 二者必须要有一个值为0
*/
void move_cross(int x0, int y0, int siz, int x_of, int y_of)
{
    int i = 0;
    
    if (x_of!=0 && y_of!=0)
        return;
    if (x_of > 0)
        for (i=0; i<x_of; i++) {
            draw_cross(x0+i-1, y0, siz, B_COLOR);
            draw_cross(x0+i+1, y0, siz, B_COLOR);
            draw_cross(x0, y0-1, siz, B_COLOR);
            draw_cross(x0, y0+1, siz, B_COLOR);
            
            draw_cross(x0+i, y0, siz, F_COLOR);
            delay(600);
        }
    else if (x_of < 0)
        for (i=0; i>x_of; i--) {
            draw_cross(x0+i-1, y0, siz, B_COLOR);
            draw_cross(x0+i+1, y0, siz, B_COLOR);
            draw_cross(x0, y0-1, siz, B_COLOR);
            draw_cross(x0, y0+1, siz, B_COLOR);
            
            draw_cross(x0+i, y0, siz, F_COLOR);
            delay(600);
        }
    else if (y_of > 0)
        for (i=0; i<y_of; i++) {
            draw_cross(x0-1, y0, siz, B_COLOR);
            draw_cross(x0+1, y0, siz, B_COLOR);
            draw_cross(x0, y0+i-1, siz, B_COLOR);
            draw_cross(x0, y0+i+1, siz, B_COLOR);
            
            draw_cross(x0, y0+i, siz, F_COLOR);
            delay(600);
        }
    else if (y_of < 0)
        for (i=0; i>y_of; i--) {
            draw_cross(x0-1, y0, siz, B_COLOR);
            draw_cross(x0+1, y0, siz, B_COLOR);
            draw_cross(x0, y0+i-1, siz, B_COLOR);
            draw_cross(x0, y0+i+1, siz, B_COLOR);
            
            draw_cross(x0, y0+i, siz, F_COLOR);
            delay(600);
        }
}

/*
* 取字符串长度
*/
int str_len(char *ch)
{
    char *p = ch;
    int ret = 0;
    while (*p) {
        ret++;
        p++;
    }

    return ret;
}

/*
* 取绝对值
*/
float abs_val(float f)
{
    float ret = f;
    if (ret < 0)
        ret = (-1) * ret;
    return ret;
}

/*
* 对采集到的坐标进行有效性判断
* 允许偏差值可以通过 @allow_val 设置
*/
int check_data(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
{
    int allow_val = 20;
    int ret = 0;
    
    if (abs_val(y2-y1) > allow_val)
        ret = 1;
    if (abs_val(x3-x2) > allow_val)
        ret = 1;
    if (abs_val(y4-y3) > allow_val)
        ret = 1;
    if (abs_val(x4-x1) > allow_val)
        ret = 1;

    return ret;
}

/*
* 转换浮点数为字符串, 保留2位小数
*/
void float_str(float f, char *ch)
{
    char s[10] = {0};
    int sign = (f < 0) ? 1 : 0;
    int n = (sign == 1) ? ((int)(f * (-100))) : ((int)(f * 100));
    int i = 0;
    int j = 0;
    
    s[0] = (n % 10) + '0';
    n = n / 10;
    s[1] = (n % 10) + '0';
    s[2] = '.';
    n = n / 10;
    i = 3;

    while (n) {
        s[ i ] = (n % 10) + '0';
        n = n / 10;
        i++;
    }

    if (i == 3) {
        s[ i ] = '0';
        i++;
    }

    if (sign == 1) {
        s[ i ] = '-';
        i++;
    }

    for (--i; i>-1; i--) {
        ch[j] = s[ i ];
        j++;
    }

    ch[j] = '\0';
}

/*
* 转换整型数为字符串
*/
void int_str(int n, char *ch)
{
    char s[10] = {0};
    int i = 0;
    int j = 0;

    if (n == 0)
    {
        s[ i ] = '0';
        i++;
    }

    while (n)
    {
        s[ i ] = (n % 10) + '0';
        n = n / 10;
        i++;
    }

    for (--i; i>-1; i--)
    {
        ch[j] = s[ i ];
        j++;
    }

    ch[j] = '\0';
}

/*
* 在触屏按下时, 根据当前状态作出相应处理
* collect_count为0表示正按下第1个校准点
* collect_count为1表示正按下第2个校准点
* collect_count为2表示正按下第3个校准点
* collect_count为3表示正按下第4个校准点
* collect_count为-2表示正按下测试点
*/
void check_touch_down(void)
{
    char hor_pixa[10] = {0};
    char ver_pixa[10] = {0};
    int hor_pix = 0;
    int ver_pix = 0;
    
    if (collect_count == 0) {
        x1 = xdata;
        y1 = ydata;

        move_cross(40, 30, 15, 240, 0);    
        scroll_display("Please touch the 2nd point.");
        collect_count++;
    }
    else if (collect_count == 1) {
        x2 = xdata;
        y2 = ydata;
        
        move_cross(280, 30, 15, 0, 180);        
        scroll_display("Please touch the 3rd point.");
        collect_count++;
    }
    else if (collect_count == 2) {
        x3 = xdata;
        y3 = ydata;
        
        move_cross(280, 210, 15, -240, 0);        
        scroll_display("Please touch the 4th point.");
        collect_count++;
    }
    else if (collect_count == 3) {
        x4 = xdata;
        y4 = ydata;        

        collect_count++;
    }
    else if (collect_count == -2) {
        hor_pix = (int)(mul_x * xdata + add_x);
        ver_pix = (int)(mul_y * ydata + add_y);
        
        if (hor_pix < 0)
            hor_pix = 0;
        else if (hor_pix > 319)
            hor_pix = 319;
            
        if (ver_pix < 0)
            ver_pix = 0;
        else if (ver_pix > 239)
            ver_pix = 239;
            
        int_str(hor_pix, hor_pixa);
        int_str(ver_pix, ver_pixa);

        scroll_display("");
        scroll_display("coordinate(hor, ver) = (");
        add_display(hor_pixa);
        add_display(", ");
        add_display(ver_pixa);
        add_display(")");
    }
}

/*
* 在触屏弹起时, 根据当前状态作出相应处理
* collect_count为4表示第4个校准点已采集完毕
* collect_count为-1表示校准工作已完成
*/
void check_touch_up(void)
{
    char mul_xa[10] = {0};
    char mul_ya[10] = {0};
    char add_xa[10] = {0};
    char add_ya[10] = {0};

    if (collect_count == 4) {
        if (!(check_data(x1, y1, x2, y2, x3, y3, x4, y4))) {
            mul_x = (280-40) / (((float)x2+(float)x3-(float)x1-(float)x4)/2);
            add_x = 40 - (mul_x * (((float)x1+(float)x4)/2));
            mul_y = (210-30) / (((float)y3+(float)y4-(float)y1-(float)y2)/2);
            add_y = 30 - (mul_y * (((float)y1+(float)y2)/2));

            float_str(mul_x, mul_xa);
            float_str(add_x, add_xa);
            float_str(mul_y, mul_ya);
            float_str(add_y, add_ya);
            
            scroll_display("");            
            scroll_display("Adjusting finished!");
            scroll_display("");
            
            scroll_display("hor_pix = (int)((");
            add_display(mul_xa);
            add_display(")*X+(");
            add_display(add_xa);
            add_display("))");
            
            scroll_display("ver_pix = (int)((");
            add_display(mul_ya);
            add_display(")*Y+(");
            add_display(add_ya);
            add_display("))");
            scroll_display("");
            
            delay(30000);
            scroll_display("Touch the screen to continue.");

            collect_count = -1;
            draw_cross(41, 210, 15, B_COLOR);
            refresh_screen();
        }
        else {
            scroll_display("");
            scroll_display("Adjusting failed, try again.");
            collect_count = 0;
            scroll_display("");
            
            delay(30000);
            scroll_display("Please touch the 1st point.");
            draw_cross(41, 210, 15, B_COLOR);
            
            refresh_screen();
            draw_cross(40, 30, 15, F_COLOR);
        }
    }
    else if (collect_count == -1) {
        scroll_display("");
        scroll_display("As the touch screen is adjusted,");
        delay(10000);
        scroll_display("let's have some test.");
        delay(10000);
        scroll_display("You can touch the screen,");
        delay(10000);
        scroll_display("and the coordinate will be shown.");
        
        collect_count = -2;
    }
}

void delay(int times)
{
    int i,j;
    for(i=0;i<times;i++)
       for(j=0;j<400;j++);
}

2)触屏校准头文件。
adj_sc.h

#ifndef _ADJ_SC_H_
/*****************************************
  NAME: adj_sc.c
  DESC: Adjusting Touch screen & test
  HISTORY:
  2011.09.01:Joshua Chan: draft ver 1.0
*****************************************/

#define _ADJ_SC_H_

#define F_COLOR 0xFFFF
#define B_COLOR 0x0

extern int collect_count;
extern int xdata;
extern int ydata;

/* 声明ascii码字模数组,数组在ascii.c文件中定义 */
extern unsigned char ASCII[];

extern volatile unsigned short LCD_BUFFER[SCR_YSIZE][SCR_XSIZE];

extern void draw_char(int x0, int y0, U16 front_color, U16 back_color, char *ch, int swi);
extern void scroll_display(char *ch);
extern void add_display(char *ch);
extern void clear_line(int line);
extern void refresh_screen(void);
extern void draw_cross(int x0, int y0, int siz, unsigned short d_color);
extern void move_cross(int x0, int y0, int siz, int x_of, int y_of);
extern int str_len(char *ch);
extern float abs_val(float f);
extern int check_data(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
extern void float_str(float f, char *ch);
extern void int_str(int n, char *ch);
extern void check_touch_down(void);
extern void check_touch_up(void);

extern void delay(int times);

#endif


3)Main.c文件,为2440示例代码,全盘引用,仅在Test_Touchpanel函数中加入第1个校准点提示信息,并在AdcTsAuto函数的stylus down部份调用check_touch_down函数,stylus up部份调用check_touch_up函数。
Main.c

#define    GLOBAL_CLK        1
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"
#include "main.h"
#include "adj_sc.h"

volatile U32 preScaler;
int xdata=0, ydata=0;

static void __irq AdcTsAuto(void);
void Test_Touchpanel(void);
static void Lcd_EnvidOnOff(int onoff);
static void Lcd_Port_Init( void );
static void LCD_Init(void);
void Set_Clk(void);
static void cal_cpu_bus_clk(void);

int Main(void)
{    
   
    MMU_Init();
    Set_Clk();

    LCD_Init();

    Test_Touchpanel();

    while(1);
    return 0;

}    

void Test_Touchpanel(void)
{
    rADCDLY=50000;            //Normal conversion mode delay about (1/3.6864M)*50000=13.56ms
    
    /*设置AD转频率*/
    preScaler = ADC_FREQ;
    preScaler = 50000000/ADC_FREQ - 1; //PCLK=50M
    rADCCON = (1<<14)|(preScaler<<6);    //ADCPRS En,PRSCVL
    // rADCCON=(1<<14)+(preScaler<<6);   //ADCPRS En, ADCPRS Value
    
    /* 开始显示触屏校准提示信息, 并提示第1个触点位置 */
    draw_char(72, 6, F_COLOR, B_COLOR, "Adjusting Touch Screen", 0);    
    scroll_display("Please touch the 1st point.");    
    draw_cross(40, 30, 15, F_COLOR);

    /*设置触摸屏为等待中断模式,等待触摸笔被按下*/
    rADCTSC=0xd3;  //Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En
    
    /*clear irq*/
    //ClearPending(BIT_ADC);
    rSRCPND = 0x80000000;
    rINTPND = 0x80000000;
    ClearSubPending(BIT_SUB_TC);    

    pISR_ADC = (U32)AdcTsAuto;

    /*enable INT_TC irq*/
    //EnableIrq(BIT_ADC);
    rINTMSK = 0x7fffffff;        
    EnableSubIrq(BIT_SUB_TC);    
}

static void __irq AdcTsAuto(void)
{    
    U32     saveAdcdly;

    // int s_len = 0;
    // int x_p = 0;
    
    /****************stylus down************************/    
    /*pull-up disable,自动连续X,Y坐标转换*/
    rADCTSC = (1<<3)|(1<<2);
    saveAdcdly=rADCDLY;
    rADCDLY=40000;            //Normal conversion mode delay about (1/50M)*40000=0.8ms
    
    /*开始AD转换*/
    rADCCON|=0x1;            //start ADC
    while(rADCCON & 0x1);        //check if Enable_start is low
    
    while(!(rADCCON & 0x8000));    //check if EC(End of Conversion) flag is high, This line is necessary~!!
    
    while(!(rSRCPND & 0x80000000));    //check if ADC is finished with interrupt bit

    /*获取X,Y坐标*/
    xdata=(rADCDAT0&0x3ff);
    ydata=(rADCDAT1&0x3ff);

    /* 调用触屏按下处理函数, 根据当前状态作出相应处理 */
    check_touch_down();
    
    ClearSubPending(BIT_SUB_TC);
    //ClearPending(BIT_ADC);
    rSRCPND = 0x80000000;
    rINTPND = 0x80000000;  
    

    EnableSubIrq(BIT_SUB_TC);
       //EnableIrq(BIT_ADC);
    rINTMSK = 0x7fffffff;
    /****************stylus down************************/    
    
    /****************stylus up**************************/
    /*设置触摸屏为等待中断模式,等待触摸笔抬起*/
    rADCTSC =0xd3;    //Waiting for interrupt
    rADCTSC=rADCTSC|(1<<8); // Detect stylus up interrupt signal.
    
    while(1)        //to check Pen-up state
    {
        if(rSUBSRCPND & (BIT_SUB_TC))    //check if ADC is finished with interrupt bit
        {
            break;    //if Stylus is up(1) state
        }
    }    
    /****************stylus up**************************/
    /* 调用触屏弹起处理函数, 根据当前状态作出相应处理 */
    check_touch_up();
    
    rADCDLY=saveAdcdly; 
    /*设置触摸屏为等待中断模式,等待下次触摸笔按下*/
    rADCTSC =0xd3;    //Waiting for interrupt
    
    ClearSubPending(BIT_SUB_TC);  
    //ClearPending(BIT_ADC);
    rSRCPND = 0x80000000;
    rINTPND = 0x80000000;

    EnableSubIrq(BIT_SUB_TC);
       //EnableIrq(BIT_ADC);
    rINTMSK = 0x7fffffff;
}

/*LCD开关*/
static void Lcd_EnvidOnOff(int onoff)
{
    if(onoff==1)
    rLCDCON1|=1; // ENVID=ON
    else
    rLCDCON1 =rLCDCON1 & 0x3fffe; // ENVID Off
}

static void Lcd_Port_Init( void )
{
    rGPCUP=0xffffffff; // Disable Pull-up register
    rGPCCON=0xaaaa02a8; //Initialize VD[7:0],VM,VFRAME,VLINE,VCLK

    rGPDUP=0xffffffff; // Disable Pull-up register
    rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]
}

/*LCD初始化*/
static void LCD_Init(void)
{
    Lcd_Port_Init();

    /*显示模式初始化*/
    /*bit[17:8](4:CLKVAL);bit[6:5](11:TFT LCD panel);bit[4:1](1100:16 bpp for TFT)*/
    rLCDCON1 = (LCD_PIXCLOCK << 8) | (3 <<  5) | (12 << 1);
    
    /*bit[31:24](1:VBPD);bit[23:14](320-1:行数);bit[13:6](5:VFPD);bit[5:0](1:VSPW)*/
       rLCDCON2 = (LCD_UPPER_MARGIN << 24) | ((LCD_HEIGHT - 1) << 14) | (LCD_LOWER_MARGIN << 6) | (LCD_VSYNC_LEN << 0);
       
       /*bit[25:19](36:HBPD);bit[18:8](240-1:列数);bit[7:0](19:HFPD)*/
       rLCDCON3 = (LCD_RIGHT_MARGIN << 19) | ((LCD_WIDTH  - 1) <<  8) | (LCD_LEFT_MARGIN << 0);
       
       /*bit[15:8](13:MVAL,只有当LCDCON1 bit[7]MMODE=1才有效);bit[7:0](5:HSPW)*/
       rLCDCON4 = (13 <<  8) | (LCD_HSYNC_LEN << 0);
       
       /*bit[11](5:6:5 Format);bit[9](VLINE/HSYNC polarity inverted);bit[8](VFRAME/VSYNC inverted)
      bit[3](Enalbe PWERN signal),bit[1](half-word swap control bit)*/
    rLCDCON5   =  (1<<11) | (1 << 9) | (1 << 8) | (1 << 3) | (1 << 0);    

    /*
    * 帧缓冲地址初始化
    * LCDBANK: 视频帧缓冲区内存地址30-22位
    * LCDBASEU: 视频帧缓冲区的开始地址21-1位
    * LCDBASEL: 视频帧缓冲区的结束地址21-1位    *
    * bit[29:21]:LCDBANK,bit[20:0]:LCDBASEU
    */
    rLCDSADDR1 = ((LCD_ADDR >> 22) << 21) | ((M5D(LCD_ADDR >> 1)) <<  0);
    
    /*bit[20:0]:LCDBASEL*/
    rLCDSADDR2 = M5D((LCD_ADDR + LCD_WIDTH * LCD_HEIGHT * 2) >> 1);    
    
    /*
     * PAGEWIDTH:虚拟屏幕一行的字节数,如果不使用虚拟屏幕,设置为实际屏幕的行字节数
     * OFFSIZE:虚拟屏幕左侧偏移的字节数,如果不使用虚拟屏幕,设置为0
     * bit[21:11]:OFFSIZE; bit[10:0]:PAGEWIDTH
     */
    rLCDSADDR3 = LCD_WIDTH;        

    /*屏蔽中断*/
    rLCDINTMSK |= 3;
      rTCONSEL   &= (~7);

    /*disable调色板*/
       rTPAL = 0x0;
       
       /*禁止LPC3600/LCC3600模式*/
       rTCONSEL &= ~((1<<4) | 1); 
       
       /*打开LCD*/
       Lcd_EnvidOnOff(1);     
}

/*************************************************
Function name: Set_Clk()
Parameter    : void
Description     : 设置CPU的时钟频率
Return         : void
Argument     : void
Autor & date : Daniel
**************************************************/
void Set_Clk(void)
{
    int i;
    U8 key;
    U32 mpll_val = 0 ;
    i = 2 ;                 //don't use 100M!
                         //boot_params.cpu_clk.val = 3;
    switch ( i ) {
    case 0:    //200
        key = 12;
        mpll_val = (92<<12)|(4<<4)|(1);
        break;
    case 1:    //300
        key = 13;
        mpll_val = (67<<12)|(1<<4)|(1);
        break;
    case 2:    //400
        key = 14;
        mpll_val = (92<<12)|(1<<4)|(1);
        break;
    case 3:    //440!!!
        key = 14;
        mpll_val = (102<<12)|(1<<4)|(1);
        break;
    default:
        key = 14;
        mpll_val = (92<<12)|(1<<4)|(1);
        break;
    }
    
    //init FCLK=400M, so change MPLL first
    ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);   //set the register--rMPLLCON
    ChangeClockDivider(key, 12);    //the result of rCLKDIVN [0:1:0:1] 3-0 bit
    cal_cpu_bus_clk();    //HCLK=100M   PCLK=50M
}

/*************************************************
Function name: cal_cpu_bus_clk
Parameter    : void
Description     : 设置PCLK\HCLK\FCLK的频率
Return         : void
Argument     : void
Autor & date : Daniel
**************************************************/
static void cal_cpu_bus_clk(void)
{
    static U32 cpu_freq;
    static U32 UPLL;
    
    U32 val;
    U8 m, p, s;
    
    val = rMPLLCON;
    m = (val>>12)&0xff;
    p = (val>>4)&0x3f;
    s = val&3;

    //(m+8)*FIN*2 不要超出32位数!
    FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;     //FCLK=400M  FIN=12000000
    
    val = rCLKDIVN;
    m = (val>>1)&3;
    p = val&1;    
    val = rCAMDIVN;
    s = val>>8;
    
    switch (m) {
    case 0:
        HCLK = FCLK;
        break;
    case 1:
        HCLK = FCLK>>1;
        break;
    case 2:
        if(s&2)
            HCLK = FCLK>>3;
        else
            HCLK = FCLK>>2;
        break;
    case 3:
        if(s&1)
            HCLK = FCLK/6;
        else
            HCLK = FCLK/3;
        break;
    }
    
    if(p)
        PCLK = HCLK>>1;
    else
        PCLK = HCLK;
    
    if(s&0x10)
        cpu_freq = HCLK;
    else
        cpu_freq = FCLK;
        
    val = rUPLLCON;
    m = (val>>12)&0xff;
    p = (val>>4)&0x3f;
    s = val&3;
    UPLL = ((m+8)*FIN)/((p+2)*(1<<s));
    UCLK = (rCLKDIVN&8)?(UPLL>>1):UPLL;
}

4)Main.h文件。
Main.h

/****************************************************************
NAME: MAIN.h
DESC: 
HISTORY:
Mar.29.2002:purnnamu: created first
****************************************************************/

#ifndef __MAIN_H__
#define __MAIN_H__

#define LCD_W35

#if defined(LCD_W35)
#define LCD_PIXCLOCK 4

#define LCD_WIDTH 320
#define LCD_HEIGHT 240

#define LCD_RIGHT_MARGIN 0x44
#define LCD_LEFT_MARGIN 0x04
#define LCD_HSYNC_LEN 0x01

#define LCD_UPPER_MARGIN 10
#define LCD_LOWER_MARGIN 4
#define LCD_VSYNC_LEN 1

#define LCD_CON5 ((1<<11) | (1<<8) | (1<<9) | (1<<0) ) 

#endif

#define LCD_XSIZE  LCD_WIDTH
#define LCD_YSIZE  LCD_HEIGHT
#define SCR_XSIZE  LCD_WIDTH
#define SCR_YSIZE  LCD_HEIGHT

#define    M5D(n)    ((n)&0x1fffff)
#define LCD_ADDR ((U32)LCD_BUFFER)

#define ADC_FREQ 2500000


#endif /*__MAIN_H__*/

5)ASCII字模数组文件。
ascii.c

/*
* ASCII字符的点阵字模数组
* 每个ASCII字符用8x16点阵表示, 占16字节
* 包括值为(0x00 ~ 0xFF)的共256个ASCII字符
*/

const unsigned char ASCII[] = {

    /* line 0 */
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    
    /* line 1 */
    0x00,0x00,0x00,0x00,0x7E,0xC3,0x81,0xA5,0x81,0xBD,0x99,0xC3,0x7E,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xDB,0xFF,0xC3,0xE7,0xFF,0x7E,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x44,0xEE,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x10,0x38,0x7C,0xFE,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0xFF,0xE7,0xE7,0x18,0x18,0x7E,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x18,0x3C,0x7E,0xFF,0xFF,0x7E,0x18,0x18,0x7E,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0x81,0x81,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF,
    0x00,0x00,0x00,0x3C,0x7E,0x66,0x66,0x42,0x42,0x66,0x66,0x7E,0x3C,0x00,0x00,0x00,
    0xFF,0xFF,0xFF,0xC3,0x81,0x99,0x99,0xBD,0xBD,0x99,0x99,0x81,0xC3,0xFF,0xFF,0xFF,
    0x00,0x00,0x00,0x00,0x3E,0x0E,0x3A,0x72,0xF8,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x1F,0x19,0x19,0x1F,0x18,0x18,0x78,0xF8,0x70,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x7F,0x63,0x7F,0x63,0x63,0x63,0x67,0xE7,0xE6,0xC0,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x18,0xDB,0x7E,0xE7,0xE7,0x7E,0xDB,0x18,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8,0xFE,0xF8,0xE0,0xC0,0x80,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x02,0x06,0x0E,0x3E,0xFE,0x3E,0x0E,0x06,0x02,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x66,0x66,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x7F,0xDB,0xDB,0xDB,0x7B,0x1B,0x1B,0x1B,0x1B,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x7E,0x63,0x30,0x3C,0x66,0x66,0x3C,0x0C,0xC6,0x7E,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0xFE,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x7E,0x3C,0x18,0x7E,0x00,0x00,
    0x00,0x00,0x00,0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x0C,0xFE,0x0C,0x18,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x60,0xFE,0x60,0x30,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xFE,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x66,0xFF,0x66,0x24,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x38,0x38,0x7C,0x7C,0xFE,0xFE,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x7C,0x7C,0x38,0x38,0x10,0x10,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x30,0x78,0x78,0x78,0x30,0x30,0x00,0x30,0x30,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0x6C,0x6C,0xFE,0x6C,0x6C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x30,0x30,0x7C,0xC0,0xC0,0x78,0x0C,0x0C,0xF8,0x30,0x30,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0xCC,0x18,0x30,0x60,0xCC,0x8C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x70,0xD8,0xD8,0x70,0xFA,0xDE,0xCC,0xDC,0x76,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x0C,0x18,0x30,0x60,0x60,0x60,0x30,0x18,0x0C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x60,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x02,0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x7C,0xC6,0xCE,0xDE,0xD6,0xF6,0xE6,0xC6,0x7C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x10,0x30,0xF0,0x30,0x30,0x30,0x30,0x30,0xFC,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x78,0xCC,0xCC,0x0C,0x18,0x30,0x60,0xCC,0xFC,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x78,0xCC,0x0C,0x0C,0x38,0x0C,0x0C,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x0C,0x1C,0x3C,0x6C,0xCC,0xFE,0x0C,0x0C,0x1E,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xFC,0xC0,0xC0,0xC0,0xF8,0x0C,0x0C,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x38,0x60,0xC0,0xC0,0xF8,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xFE,0xC6,0xC6,0x06,0x0C,0x18,0x30,0x30,0x30,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x78,0xCC,0xCC,0xEC,0x78,0xDC,0xCC,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x78,0xCC,0xCC,0xCC,0x7C,0x18,0x18,0x30,0x70,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x38,0x38,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x38,0x38,0x18,0x30,0x00,0x00,
    0x00,0x00,0x00,0x00,0x0C,0x18,0x30,0x60,0xC0,0x60,0x30,0x18,0x0C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x78,0xCC,0x0C,0x18,0x30,0x30,0x00,0x30,0x30,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xDE,0xDE,0xDE,0xC0,0xC0,0x7C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x30,0x78,0xCC,0xCC,0xCC,0xFC,0xCC,0xCC,0xCC,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x66,0x66,0x66,0xFC,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x3C,0x66,0xC6,0xC0,0xC0,0xC0,0xC6,0x66,0x3C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xF8,0x6C,0x66,0x66,0x66,0x66,0x66,0x6C,0xF8,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xFE,0x62,0x60,0x64,0x7C,0x64,0x60,0x62,0xFE,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xFE,0x66,0x62,0x64,0x7C,0x64,0x60,0x60,0xF0,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x3C,0x66,0xC6,0xC0,0xC0,0xCE,0xC6,0x66,0x3E,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xFC,0xCC,0xCC,0xCC,0xCC,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x1E,0x0C,0x0C,0x0C,0x0C,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xE6,0x66,0x6C,0x6C,0x78,0x6C,0x6C,0x66,0xE6,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xF0,0x60,0x60,0x60,0x60,0x62,0x66,0x66,0xFE,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xC6,0xEE,0xFE,0xFE,0xD6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xC6,0xC6,0xE6,0xF6,0xFE,0xDE,0xCE,0xC6,0xC6,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xCE,0xDE,0x7C,0x0C,0x1E,0x00,0x00,
    0x00,0x00,0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x6C,0x66,0x66,0xE6,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x78,0xCC,0xCC,0xC0,0x70,0x18,0xCC,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xFC,0xB4,0x30,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xD6,0xD6,0x6C,0x6C,0x6C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0x78,0x30,0x78,0xCC,0xCC,0xCC,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x30,0x30,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xFE,0xCE,0x98,0x18,0x30,0x60,0x62,0xC6,0xFE,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,
    0x00,0x00,0x00,0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0C,0x7C,0xCC,0xCC,0x76,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xE0,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0xDC,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xCC,0xC0,0xC0,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x1C,0x0C,0x0C,0x7C,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xCC,0xFC,0xC0,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x38,0x6C,0x60,0x60,0xF8,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC,0xCC,0x7C,0x0C,0xCC,0x78,0x00,
    0x00,0x00,0x00,0x00,0xE0,0x60,0x60,0x6C,0x76,0x66,0x66,0x66,0xE6,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x78,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0xCC,0xCC,0x78,0x00,
    0x00,0x00,0x00,0x00,0xE0,0x60,0x60,0x66,0x6C,0x78,0x6C,0x66,0xE6,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xD6,0xD6,0xD6,0xD6,0xC6,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xCC,0xCC,0xCC,0xCC,0xCC,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xCC,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66,0x66,0x66,0x7C,0x60,0xF0,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC,0xCC,0xCC,0x7C,0x0C,0x1E,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0x6E,0x76,0x60,0x60,0xF0,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xCC,0x60,0x18,0xCC,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x20,0x60,0xFC,0x60,0x60,0x60,0x6C,0x38,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xD6,0xD6,0x6C,0x6C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x6C,0x38,0x38,0x6C,0xC6,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3C,0x0C,0x18,0xF0,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x8C,0x18,0x60,0xC4,0xFC,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x1C,0x30,0x30,0x60,0xC0,0x60,0x30,0x30,0x1C,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0xE0,0x30,0x30,0x18,0x0C,0x18,0x30,0x30,0xE0,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x73,0xDA,0xCE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xFE,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x78,0xCC,0xCC,0xC0,0xC0,0xC0,0xCC,0xCC,0x78,0x30,0xF0,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x20,0x20,0x00,
    0x00,0x00,0x07,0x04,0x04,0x08,0x0C,0x08,0x08,0x18,0x10,0x10,0x10,0x20,0x20,0xC0,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x6E,0x22,0x44,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x18,0x18,0x10,0x7E,0x10,0x18,0x18,0x10,0x10,0x10,0x10,0x10,0x10,0x00,
    0x00,0x00,0x18,0x18,0x76,0x7E,0x18,0x10,0x10,0x10,0x10,0x18,0x76,0x5A,0x18,0x18,
    0x00,0x00,0x30,0x50,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x30,0x48,0x48,0x48,0x49,0x32,0x04,0x08,0x11,0x22,0x42,0x82,0x02,0x01,0x00,
    0x00,0x3C,0x00,0x3C,0x42,0x40,0x40,0x30,0x0C,0x06,0x02,0x02,0x42,0x7C,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x60,0x60,0x20,0x10,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x3E,0x4A,0x48,0x48,0x4A,0x4E,0x48,0x48,0x48,0x49,0x3F,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x60,0x60,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x01,0x01,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x3C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x60,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0xE9,0x4B,0x4B,0x5D,0x55,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x88,0x70,0x20,0x30,0x48,0x40,0x60,0x38,0x0C,0x4C,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x30,0x10,0x20,0x20,0x40,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x02,0x7D,0x49,0x4F,0x48,0x48,0x4D,0x36,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x24,0x24,0x00,0x42,0x44,0x24,0x28,0x18,0x18,0x10,0x10,0x10,0x10,0x3C,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
    0x00,0x00,0x04,0x04,0x04,0x18,0x2E,0x4E,0x50,0x50,0x50,0x22,0x3C,0x40,0x40,0x40,
    0x00,0x00,0x00,0x1E,0x22,0x20,0x20,0x20,0x38,0x20,0x20,0x21,0xFA,0x4C,0x00,0x00,
    0x00,0x40,0x27,0x18,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x18,0x27,0x40,0x00,
    0x00,0x00,0x00,0x62,0x24,0x24,0x14,0x18,0xFF,0x08,0xFF,0x08,0x08,0x3C,0x00,0x00,
    0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,
    0x07,0x08,0x08,0x04,0x02,0x03,0x04,0x08,0x08,0x05,0x02,0x01,0x04,0x08,0x08,0x07,
    0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x7E,0xA6,0xC1,0xC1,0xC1,0xA6,0x5A,0x24,0x00,0x00,0x00,0x00,
    0x00,0x00,0xE0,0x90,0xF0,0x90,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x11,0x22,0x24,0x44,0x4C,0x24,0x22,0x12,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x7E,0xAA,0xA5,0xB9,0xA9,0xA6,0x42,0x3C,0x00,0x00,0x00,0x00,
    0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x30,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x01,0x01,0x01,0x0F,0x01,0x01,0x01,0x00,0x0F,0x00,0x00,0x00,0x00,
    0x00,0x00,0x70,0x90,0x10,0x20,0x50,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x70,0x10,0x20,0x10,0x10,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x2F,0x50,0x40,0x40,0x00,0x00,
    0x00,0x00,0x3E,0xF4,0xF4,0xF4,0xF4,0x74,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x00,
    0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x60,
    0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x70,0x98,0x88,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x88,0x48,0x24,0x22,0x32,0x24,0x44,0x88,0x00,0x00,0x00,
    0x00,0x00,0x42,0x44,0x44,0x48,0x48,0x50,0x12,0x26,0x26,0x27,0x40,0x00,0x00,0x00,
    0x00,0x00,0x44,0x44,0x44,0x48,0x48,0x50,0x17,0x21,0x22,0x44,0x47,0x00,0x00,0x00,
    0x00,0x00,0x62,0x24,0x44,0x28,0x28,0x50,0x12,0x16,0x26,0x27,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x10,0x20,0x20,0x44,0x44,0x3C,0x00,0x00,
    0x10,0x10,0x00,0x10,0x18,0x28,0x28,0x28,0x24,0x3C,0x44,0x44,0x42,0xC7,0x00,0x00,
    0x08,0x10,0x20,0x10,0x18,0x28,0x28,0x28,0x24,0x3C,0x44,0x44,0x42,0xC7,0x00,0x00,
    0x18,0x28,0x00,0x10,0x18,0x28,0x28,0x28,0x24,0x3C,0x44,0x44,0x42,0xC7,0x00,0x00,
    0x30,0x0C,0x00,0x10,0x18,0x28,0x28,0x28,0x24,0x3C,0x44,0x44,0x42,0xC7,0x00,0x00,
    0x24,0x3C,0x00,0x10,0x18,0x28,0x28,0x28,0x24,0x3C,0x44,0x44,0x42,0xC7,0x00,0x00,
    0x18,0x28,0x18,0x10,0x18,0x28,0x28,0x28,0x24,0x3C,0x44,0x44,0x42,0xC7,0x00,0x00,
    0x00,0x00,0x00,0x1E,0x18,0x28,0x28,0x2A,0x4E,0x78,0x48,0x48,0x89,0xDE,0x00,0x00,
    0x00,0x00,0x00,0x1C,0x23,0x41,0x40,0x40,0x40,0x40,0x40,0x61,0x32,0x0C,0x08,0x08,
    0x30,0x10,0x10,0x6E,0x42,0x40,0x44,0x44,0x7C,0x44,0x40,0x40,0x42,0xFE,0x00,0x00,
    0x0C,0x08,0x10,0x6E,0x42,0x40,0x44,0x44,0x7C,0x44,0x40,0x40,0x42,0xFE,0x00,0x00,
    0x18,0x28,0x44,0x7E,0x42,0x40,0x44,0x44,0x7C,0x44,0x40,0x40,0x42,0xFE,0x00,0x00,
    0x2C,0x2C,0x00,0x7E,0x42,0x40,0x44,0x44,0x7C,0x44,0x40,0x40,0x42,0xFE,0x00,0x00,
    0x30,0x10,0x10,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
    0x0C,0x08,0x10,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
    0x18,0x28,0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
    0x24,0x2C,0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
    0x00,0x00,0x00,0x3C,0x22,0x22,0x21,0x21,0x31,0x21,0x23,0x22,0x26,0x78,0x00,0x00,
    0x30,0x0C,0x00,0x42,0x62,0x62,0x52,0x52,0x4A,0x4A,0x46,0x46,0x42,0xE2,0x00,0x00,
    0x30,0x10,0x10,0x2C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
    0x08,0x10,0x10,0x2C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
    0x18,0x28,0x44,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
    0x30,0x0C,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
    0x24,0x24,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
    0x00,0x00,0x00,0x10,0x08,0x04,0x02,0x01,0x02,0x04,0x08,0x10,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x3C,0x42,0x46,0x4A,0x4A,0x53,0x52,0x62,0x62,0x44,0x38,0x00,0x00,
    0x30,0x10,0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x44,0x38,0x00,0x00,
    0x08,0x08,0x10,0x62,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x44,0x38,0x00,0x00,
    0x18,0x28,0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x44,0x38,0x00,0x00,
    0x24,0x24,0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x44,0x38,0x00,0x00,
    0x08,0x08,0x10,0x62,0x44,0x24,0x28,0x18,0x18,0x10,0x10,0x10,0x10,0x3C,0x00,0x00,
    0x00,0x00,0x00,0x20,0x20,0x38,0x26,0x21,0x21,0x21,0x26,0x38,0x20,0x70,0x00,0x00,
    0x00,0x00,0x00,0x1C,0x22,0x22,0x22,0x2C,0x22,0x22,0x22,0x22,0x3A,0x6C,0x00,0x00,
    0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x38,0x44,0x44,0x44,0x44,0x44,0x3A,0x00,0x00,
    0x00,0x00,0x00,0x00,0x08,0x18,0x00,0x38,0x44,0x44,0x44,0x44,0x44,0x3A,0x00,0x00,
    0x00,0x00,0x30,0x28,0x44,0x00,0x00,0x7C,0x44,0x1C,0x64,0x44,0x45,0x3A,0x00,0x00,
    0x00,0x00,0x20,0x5C,0x00,0x00,0x00,0x7C,0x44,0x1C,0x64,0x44,0x45,0x3A,0x00,0x00,
    0x00,0x00,0x28,0x6C,0x00,0x00,0x00,0x7C,0x44,0x1C,0x64,0x44,0x45,0x3A,0x00,0x00,
    0x00,0x00,0x38,0x28,0x10,0x00,0x00,0x7C,0x44,0x1C,0x64,0x44,0x45,0x3A,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x66,0x99,0x91,0x3F,0x50,0x90,0x99,0x6E,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x18,0x64,0x44,0x40,0x40,0x44,0x44,0x38,0x20,0x10,0x60,
    0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x3C,0x42,0x42,0x7C,0x40,0x22,0x1C,0x00,0x00,
    0x00,0x00,0x00,0x04,0x08,0x08,0x00,0x3C,0x42,0x42,0x7C,0x40,0x22,0x1C,0x00,0x00,
    0x00,0x00,0x00,0x18,0x38,0x44,0x00,0x3C,0x42,0x42,0x7C,0x40,0x22,0x1C,0x00,0x00,
    0x00,0x00,0x00,0x2C,0x24,0x00,0x00,0x3C,0x42,0x42,0x7C,0x40,0x22,0x1C,0x00,0x00,
    0x00,0x00,0x00,0x20,0x20,0x10,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00,
    0x00,0x00,0x00,0x08,0x10,0x10,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00,
    0x00,0x00,0x10,0x28,0x48,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x3C,0x00,0x00,
    0x00,0x00,0x28,0x6C,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x3C,0x00,0x00,
    0x00,0x00,0x00,0x24,0x18,0x28,0x04,0x3E,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,
    0x00,0x00,0x30,0x1C,0x00,0x00,0x00,0x7C,0x42,0x42,0x42,0x42,0x42,0xE6,0x00,0x00,
    0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x66,0x3C,0x00,0x00,
    0x00,0x00,0x00,0x00,0x0C,0x08,0x00,0x3C,0x42,0x42,0x42,0x42,0x66,0x18,0x00,0x00,
    0x00,0x00,0x18,0x28,0x04,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x44,0x38,0x00,0x00,
    0x00,0x00,0x30,0x1C,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x44,0x38,0x00,0x00,
    0x00,0x00,0x24,0x2C,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x44,0x38,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x1F,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x46,0x4A,0x52,0x62,0x44,0xB8,0x00,0x00,
    0x00,0x00,0x00,0x00,0x10,0x00,0xC4,0x44,0x44,0x44,0x44,0x44,0x26,0x3A,0x00,0x00,
    0x00,0x00,0x00,0x04,0x08,0x18,0xC4,0x44,0x44,0x44,0x44,0x44,0x26,0x3A,0x00,0x00,
    0x00,0x00,0x18,0x28,0x44,0x00,0x02,0x42,0x42,0x42,0x42,0x42,0x46,0x38,0x00,0x00,
    0x00,0x00,0x00,0x00,0x24,0x24,0xC4,0x44,0x44,0x44,0x44,0x44,0x26,0x3A,0x00,0x00,
    0x00,0x00,0x0C,0x08,0x10,0x00,0x00,0x24,0x24,0x24,0x18,0x18,0x10,0x10,0x10,0x60,
    0x00,0x00,0xC0,0x40,0x40,0x40,0x5E,0x22,0x42,0x42,0x22,0x22,0x54,0x48,0x40,0x60,
    0x00,0x00,0x24,0x24,0x00,0x00,0x00,0x24,0x24,0x24,0x18,0x18,0x10,0x10,0x10,0x60,

};

你可能感兴趣的:(触屏校准&测试程序)