搜索
bottom↓
回复: 245

在S3C2440上运行GUI(支持半透明效果和触摸屏)【恢复】

[复制链接]

出0入0汤圆

发表于 2008-10-11 18:06:37 | 显示全部楼层 |阅读模式
最近弄了一块S3C2440的板子,将原来的GUI移植了上去,感觉S3C2440的速度还不错.

出0入0汤圆

 楼主| 发表于 2008-10-11 18:10:57 | 显示全部楼层
先上几张运行图片:



 (原文件名:IMAG0050.jpg) 





 (原文件名:IMAG0051.jpg) 





 (原文件名:IMAG0054.jpg) 





 (原文件名:IMAG0056.jpg) 





 (原文件名:IMAG0057.jpg) 



本贴被 liuweiele 编辑过,最后修改时间:2008-10-11,18:16:19.

出0入0汤圆

 楼主| 发表于 2008-10-11 18:25:29 | 显示全部楼层
可直接下载到S3C2440上运行ourdev_448450.rar(文件大小:152K) (原文件名:S3C2440_GUI可执行文件.rar) 

出0入31汤圆

发表于 2008-10-11 19:23:59 | 显示全部楼层
不错,要是能公布源代码,或者部分源代码就好了

出0入0汤圆

发表于 2008-10-11 19:50:01 | 显示全部楼层
期待源码。。

出0入0汤圆

发表于 2008-10-11 19:50:28 | 显示全部楼层
MARK

出0入0汤圆

发表于 2008-10-11 20:01:30 | 显示全部楼层
楼主也在看uCOSii o(∩_∩)o...

出0入0汤圆

发表于 2008-10-11 20:47:34 | 显示全部楼层
这是什么GUI啊,不错哦。

出0入0汤圆

 楼主| 发表于 2008-10-11 20:56:48 | 显示全部楼层
源码还在整理,过不久就会适当公布.

出0入0汤圆

 楼主| 发表于 2008-10-11 20:57:18 | 显示全部楼层
文件太大,好像传不上.

出0入0汤圆

 楼主| 发表于 2008-10-11 20:58:06 | 显示全部楼层
这个GUI暂时还没名字.

出0入0汤圆

 楼主| 发表于 2008-10-11 21:03:10 | 显示全部楼层
先上传一个主程序:



点击此处下载 ourdev_448630.rar(文件大小:2K) (原文件名:S3C2440_Main.rar) 

出0入0汤圆

 楼主| 发表于 2008-10-12 12:28:44 | 显示全部楼层
SystemSetup源码:

点击此处下载 ourdev_449430.rar(文件大小:62K) (原文件名:SystemSetup.rar) 



本贴被 liuweiele 编辑过,最后修改时间:2008-10-12,12:29:14.

出0入0汤圆

发表于 2008-10-12 22:43:13 | 显示全部楼层
难道是友善之臂的?

出0入0汤圆

 楼主| 发表于 2008-10-13 09:13:41 | 显示全部楼层
LS是说什么?

出0入0汤圆

发表于 2008-10-13 10:12:57 | 显示全部楼层
【14楼】 liuweiele 



MINI2440哦



楼主觉得这个板子适合初学者吗?

各个资源模块没有都被封装起来吧?



我也想下手一块。初学,一个人单枪匹马,还是要找个合适的板子好点。

谢谢

出0入0汤圆

 楼主| 发表于 2008-10-13 10:35:31 | 显示全部楼层
相对之前的SBC2410,这个板子的资料还算是比较丰富.只是NEC3.5寸LCD的显示效果不太理想,对比度非常差.

FriendlyARM的售后服务的确不敢恭维.毕竟价格不贵.不过,板子做功还算不错.

出0入0汤圆

 楼主| 发表于 2008-10-13 10:39:19 | 显示全部楼层
NEC LCD 驱动源码:



点击此处下载 ourdev_450853.rar(文件大小:2K) (原文件名:S3C2440LCD_NEC35.rar) 

出0入0汤圆

发表于 2008-10-13 11:06:00 | 显示全部楼层
显示效果是差了点



是不是GAMA设置不是最佳呢



我玩过同为9320控制器的TFT LCD好几个厂家的



GAMA值设置都不同哦





楼主很厉害哦

不知怎么联系

我也入手一块,向楼主学习吧

出0入0汤圆

发表于 2008-10-13 11:07:52 | 显示全部楼层
移植openmoko呀 , 漂亮实用

出0入0汤圆

 楼主| 发表于 2008-10-13 12:02:37 | 显示全部楼层
显示效果和LCD的玻璃也有很大关系的.同样都是ILI9320,不同厂家生产的LCD显示效果差别都很大.

出0入0汤圆

 楼主| 发表于 2008-10-13 12:03:59 | 显示全部楼层
LS说的openmoko是指什么?

出0入0汤圆

 楼主| 发表于 2008-10-13 12:05:44 | 显示全部楼层
不过这个GUI在ILI9320/9325和东华LCD屏运行的显示效果还是非常不错.

出0入0汤圆

 楼主| 发表于 2008-10-13 12:07:45 | 显示全部楼层
有什么需要也可以加我QQ:304466616

出0入0汤圆

 楼主| 发表于 2008-10-13 12:15:54 | 显示全部楼层
实现半透明算法:



U16 RGB565_Trans(U16 RGB1,U16 RGB2)        

{

        

        U8        R0,G0,B0,R1,G1,B1;

        

        R0=(RGB1>>11)&0x1f;

        G0=(RGB1>>5)&0x3f;

        B0=(RGB1&0x1f);

        ////

                

        R1=(RGB2>>11)&0x1f;

        G1=(RGB2>>5)&0x3f;

        B1=(RGB2&0x1f);

        ////

                                

        return        RGB565((R0+R1)>>1,(G0+G1)>>1,(B0+B1)>>1);



}

出0入0汤圆

发表于 2008-10-14 20:12:28 | 显示全部楼层
请问楼主可以移植到s3c2410板上吗?

出0入0汤圆

 楼主| 发表于 2008-10-14 20:54:12 | 显示全部楼层
当然可以.我在S3C44b0X/S3C2410/S3C2440/HMS30C7210上都移植过.

出0入0汤圆

 楼主| 发表于 2008-10-14 21:05:27 | 显示全部楼层
这块板子是 "友善之臂" 的,如果是初学者,千万不要买"友善之臂"的板子.

出0入0汤圆

发表于 2008-10-14 21:59:19 | 显示全部楼层
【24楼】 liuweiele :

感谢你的函数,我就是需要这个例子,没能看懂GUI的代码,能帮忙解释2个问题吗?



U16 RGB565_Trans(U16 RGB1,U16 RGB2)  //----------------------------------> 入口参数代表 RGB1上透明显示RGB2?       

{ 

...         

... 

...                     

        return        RGB565((R0+R1)>>1,(G0+G1)>>1,(B0+B1)>>1); //------>能提供RGB565这个函数及其自函数吗?

} 

谢谢!!

出0入0汤圆

发表于 2008-10-14 22:13:34 | 显示全部楼层
学习了。。。,不错的资料,楼主能上传全部GUI的代码吗,谢谢

出0入0汤圆

 楼主| 发表于 2008-10-14 22:26:42 | 显示全部楼层
Re 28楼:



问题1: 是的

问题2: #define                RGB565(R,G,B)                ((R<<11)|(G<<5)|(B))

出0入0汤圆

 楼主| 发表于 2008-10-14 22:29:40 | 显示全部楼层
Re29楼:

可以上传部分代码;但可能不方便上传全部代码,因涉及公司和商业利益!请大家见谅

本贴被 liuweiele 编辑过,最后修改时间:2008-10-14,22:40:38.

出0入22汤圆

发表于 2008-10-14 22:38:50 | 显示全部楼层
标记

出0入0汤圆

发表于 2008-10-14 22:44:52 | 显示全部楼层
感谢楼主答复,速度好快!悟了半天,上来改贴发现答案已经来了,感谢!!

过分的要求:

能发给立体按钮的函数吗? 如果牵涉到公司机密,麻烦指条路--> ucgui_324代码里那些自程序中需重点研究, 



本贴被 myjnj 编辑过,最后修改时间:2008-10-14,22:49:03.

出0入0汤圆

 楼主| 发表于 2008-10-14 23:52:39 | 显示全部楼层
Myjnj也在做半透明效果的GUI吗?请问你以前是如果实现半透明算法的?

出0入0汤圆

发表于 2008-10-14 23:55:10 | 显示全部楼层
下面是什么书?

出0入0汤圆

 楼主| 发表于 2008-10-14 23:57:22 | 显示全部楼层
这是一个3D的填充矩形,可以用来做按钮.
void        GUI_3D_Rectangle(int x_addr,int y_addr,int dx,int dy,int Bright_RGB,int Dark_RGB,int Light_Way)
{         
        U16        Left_RGB,Up_RGB,Right_RGB,Down_RGB,RGB;
        U8        r0,g0,b0,r1,g1,b1;
        ////
                
        r0=(Bright_RGB>>Red)&0x1f;
        g0=(Bright_RGB>>Green)&0x3f;
        b0=(Bright_RGB>>Blue)&0x1f;
        
        r1=(Dark_RGB>>Red)&0x1f;
        g1=(Dark_RGB>>Green)&0x3f;
        b1=(Dark_RGB>>Blue)&0x1f;
        
        RGB=RGB565((r0+r1)>>1,(g0+g1)>>1,(b0+b1)>>1);
        
        GUI_FillRectangle(x_addr+2,y_addr+2,dx-3,dy-3,RGB);
                
        ////        
        
        switch(Light_Way)
        {
        
                case        Left:
                                
                                Left_RGB=Bright_RGB;
                                Up_RGB=RGB;
                                Right_RGB=Dark_RGB;
                                Down_RGB=RGB;
                                break;
                                ////////
        
                case        Up:
                                
                                Left_RGB=RGB;
                                Up_RGB=Bright_RGB;
                                Right_RGB=RGB;
                                Down_RGB=Dark_RGB;
                                break;
                                ////////
                                
                case        Right:
                                
                                Left_RGB=Dark_RGB;
                                Up_RGB=RGB;
                                Right_RGB=Bright_RGB;
                                Down_RGB=RGB;
                                break;
                                ////////
        
                case        Down:
                                
                                Left_RGB=RGB;
                                Up_RGB=Dark_RGB;
                                Right_RGB=RGB;
                                Down_RGB=Bright_RGB;
                                break;
                                ////////
        
                case        Left_Up:
                                
                                Left_RGB=Bright_RGB;
                                Up_RGB=Bright_RGB;
                                Right_RGB=Dark_RGB;
                                Down_RGB=Dark_RGB;        
                                break;
                                ////////
                case        Right_Up:
                                
                                Left_RGB=Dark_RGB;
                                Up_RGB=Bright_RGB;
                                Right_RGB=Bright_RGB;
                                Down_RGB=Dark_RGB;
                                break;
                                ////////
        
                case        Left_Down:
                                
                                Left_RGB=Bright_RGB;
                                Up_RGB=Dark_RGB;
                                Right_RGB=Dark_RGB;
                                Down_RGB=Bright_RGB;        
                                break;
                                ////////
                case        Right_Down:
                                
                                Left_RGB=Dark_RGB;
                                Up_RGB=Dark_RGB;
                                Right_RGB=Bright_RGB;
                                Down_RGB=Bright_RGB;
                                break;
                                ////////
        
                        
                                
        
                default:        return;
        
        
        }
        ////
        
        GUI_Line(x_addr,y_addr,x_addr,y_addr+dy,Left_RGB);                        //Left(Outside).
        GUI_Line(x_addr+1,y_addr+1,x_addr+1,y_addr+dy-2,Left_RGB);                //Left(Inside);
        
        GUI_Line(x_addr,y_addr,x_addr+dx,y_addr,Up_RGB);                        //Up(Outside).
        GUI_Line(x_addr+1,y_addr+1,x_addr+dx-2,y_addr+1,Up_RGB);                //Up(Inside);
                                
        GUI_Line(x_addr+dx,y_addr,x_addr+dx,y_addr+dy,Right_RGB);                //Right(Outside).
        GUI_Line(x_addr+dx-1,y_addr+1,x_addr+dx-2,y_addr+dy,Right_RGB);                //Right(Inside).
        
        GUI_Line(x_addr+1,y_addr+dy,x_addr+dx,y_addr+dy,Down_RGB);                //Down(Outside).
        GUI_Line(x_addr+2,y_addr+dy-1,x_addr+dx-1,y_addr+dy,Down_RGB);                //Down(Inside);
}

出0入0汤圆

 楼主| 发表于 2008-10-14 23:59:09 | 显示全部楼层
经典的uC/OS呀.

出0入0汤圆

 楼主| 发表于 2008-10-15 00:05:46 | 显示全部楼层
刚刚得到一个结论:S3C2440(532M)&nbsp;在MMU和Cache全开的情况下,速度超猛.如果只单开Cache而不开MMU的情况下,速度大打折扣.如果MMU和Cache全关闭,简直比开着Cache&nbsp;的S3C44B0X(60M)还慢了一大截.<font color=#699bcd>本贴被 liuweiele
编辑过,最后修改时间:2008-10-15,00:07:01.

出0入0汤圆

发表于 2008-10-15 08:18:34 | 显示全部楼层
楼主为什么说:如果是初学者,千万不要买"友善之臂"的板子.&nbsp;啊?能否分析一二?
也要弄块板子,也许你的分析能有帮助&nbsp;^_^

出0入0汤圆

 楼主| 发表于 2008-10-15 09:21:10 | 显示全部楼层
友善之臂&nbsp;的售后服务和技术支持非常差.SBC2410的资料很烂.最新MINI2440资料还算丰富.

出0入0汤圆

发表于 2008-10-15 10:33:12 | 显示全部楼层
刚刚入手MINI2440
友善留了一手哦 不提供LCD驱动板原理图 何必呢

出0入0汤圆

发表于 2008-10-15 10:45:07 | 显示全部楼层
我几个月前买的QQ2440准备学ARM&nbsp;不过买的二手屏&nbsp;屏是可以&nbsp;也是没有驱动资料&nbsp;

出0入0汤圆

 楼主| 发表于 2008-10-15 11:23:08 | 显示全部楼层
友善&nbsp;连LCD资料也不提供.更不用说原理图了

出0入0汤圆

发表于 2008-10-15 11:27:04 | 显示全部楼层
楼主有LCD的资料吗?
我还停留在ARM7时代 先裸机玩转先

出0入0汤圆

 楼主| 发表于 2008-10-15 11:30:08 | 显示全部楼层
LS想用什么样的LCD?

出0入0汤圆

 楼主| 发表于 2008-10-15 11:39:00 | 显示全部楼层
ARM7用这个TFT&nbsp;LCD比较合适:分辨率240x320,1600万色,带触摸屏,LED背光(3.0V).
点击此处下载&nbsp;ourdev_455552.pdf(文件大小:681K)&nbsp;<font color=green>(原文件名:TS8003B_TFT2.4_5879_2.4_A.pdf)&nbsp;

出0入0汤圆

发表于 2008-10-15 11:45:54 | 显示全部楼层
我就想要友善的那个NEC&nbsp;的LCD的资料 楼主已经玩得很转了
佩服佩服

出0入0汤圆

 楼主| 发表于 2008-10-15 11:58:45 | 显示全部楼层
NEC&nbsp;3.5寸LCD我也没资料.NEC这个屏显示效果很差(实际效果比照片上还差),不想用.过几天我会把MINI2440的LCD的PCB板改为东华4.3寸的(480x272),这个屏显示效果非常好.<font color=#699bcd>本贴被 liuweiele
编辑过,最后修改时间:2008-10-15,12:02:02.

出0入0汤圆

发表于 2008-10-15 22:23:00 | 显示全部楼层
感谢楼主的答复,我之前只是将背景图案的RGB三色除2,要显示的文字的颜色不变,这样处理文字没大问题,处理图标效果就不好了。
1楼上的IMAG0054.jpg中的图标处理的很好,应该不是用你帖子中的透明算法的,
用24楼的算法,得到的图片主次难以区分(如果色调相近的话)。

出0入0汤圆

 楼主| 发表于 2008-10-15 23:30:31 | 显示全部楼层
1楼&nbsp;的半透明效果(指针式时钟)&nbsp;就是用24楼的算法.只有时钟是半透明效果,其它图标是全透明背景.

出0入0汤圆

发表于 2008-10-23 20:55:36 | 显示全部楼层
好像这个是mini2440&nbsp;NEC屏幕的资料&nbsp;NEC触摸屏手册ourdev_466237.pdf(文件大小:205K)&nbsp;<font color=green>(原文件名:NEC触摸屏手册.pdf)&nbsp;

出0入0汤圆

 楼主| 发表于 2008-10-23 22:16:09 | 显示全部楼层
多谢&nbsp;【51楼】&nbsp;muyuyuzhong&nbsp;共享.

出0入0汤圆

发表于 2008-10-24 11:22:54 | 显示全部楼层
我顶啊!刚买的MINI2440,向楼主学习.

出0入0汤圆

 楼主| 发表于 2008-10-24 14:56:29 | 显示全部楼层
【53楼】&nbsp;sxl0679&nbsp;是用哪个操作系统呢?

出0入0汤圆

发表于 2008-10-24 22:54:48 | 显示全部楼层
买板其实就希望有板整套资料,其实没啥啊,不就详细的电路图和底层的驱动而已

出0入0汤圆

 楼主| 发表于 2008-10-25 00:25:44 | 显示全部楼层
但这详细的电路图和底层的驱动可是些好东西啊!!!

出0入0汤圆

发表于 2008-10-25 12:40:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-10-25 16:02:02 | 显示全部楼层
我买MINI2440是为了学嵌入式LINUX的,以前学过一阵LINUX应用开发,现在的工作是给单片机写程序,用单片机玩系统太麻烦了,所以就买了ARM

出0入0汤圆

发表于 2008-10-25 18:00:13 | 显示全部楼层
同意,mini2440的nec3.5'对比度不好,色彩不够。

出0入0汤圆

 楼主| 发表于 2008-10-27 21:56:55 | 显示全部楼层
是的,看起来不怎么样.

出0入0汤圆

发表于 2008-10-31 09:23:02 | 显示全部楼层
二进制文件是通过先运行VIVI,然后通过USB下到0X30000000地址处。如果断电再重启,QQ2440开发板将直接运行LINUX系统了。



请问有没有办法让开发板自动运行由ADS生成的二进制文件?应该怎么做?可以以你的这个文件为例。谢谢!

出0入0汤圆

发表于 2008-10-31 09:40:41 | 显示全部楼层
zan

出0入0汤圆

 楼主| 发表于 2008-10-31 14:01:05 | 显示全部楼层
【61楼】&nbsp;luojinwen:



最简单的办法是把这个二进制文件烧到QQ2440的NorFlash中(可保留NandFlash中的VIVI,以方便可继续启动Linux),然后选择跳线丛NorFlash启动.搞定...

本贴被 liuweiele 编辑过,最后修改时间:2008-10-31,14:03:51.

出0入0汤圆

发表于 2008-10-31 18:53:35 | 显示全部楼层
谢谢liuweiele&nbsp;,还想请教一个问题,我的NEC3.5驱动做好后,屏幕上出现前面十几个像素点无法显示,为黑屏,如图所示:



NEC3.5LCD上显示图&nbsp;(原文件名:222222.jpg)&nbsp;



请问是什么原因?驱动程序如下(先声明代码是网上下载的,我稍微做了修改,先感谢原作者):

刚把所有代码贴出来了,但太长,可能大家没有心情看完,所以修改了下,只把主要的部分贴出来了

/************************************************&nbsp;

&nbsp;&nbsp;NAME&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;LCDLIB.H

&nbsp;************************************************/

#ifndef&nbsp;__LCDLIB_H__

#define&nbsp;__LCDLIB_H__



#define&nbsp;MVAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(13)

#define&nbsp;MVAL_USED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0)

#define&nbsp;M5D(n)&nbsp;((n)&nbsp;&&nbsp;0x1fffff)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;To&nbsp;get&nbsp;lower&nbsp;21bits



#define&nbsp;MODE_TFT_1BIT_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0x4101)

#define&nbsp;MODE_TFT_8BIT_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0x4102)

#define&nbsp;MODE_TFT_16BIT_240320&nbsp;&nbsp;&nbsp;&nbsp;(0x4104)



#define&nbsp;LCD_XSIZE_TFT_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(240)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

#define&nbsp;LCD_YSIZE_TFT_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(320)



#define&nbsp;SCR_XSIZE_TFT_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LCD_XSIZE_TFT_240320*2)

#define&nbsp;SCR_YSIZE_TFT_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LCD_YSIZE_TFT_240320*2)



#define&nbsp;HOZVAL_TFT_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LCD_XSIZE_TFT_240320-1)

#define&nbsp;LINEVAL_TFT_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LCD_YSIZE_TFT_240320-1)



#define&nbsp;VBPD_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)

#define&nbsp;VFPD_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(5)

#define&nbsp;VSPW_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)

#define&nbsp;HBPD_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(36)

#define&nbsp;HFPD_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(19)

#define&nbsp;HSPW_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(5)



#define&nbsp;CLKVAL_TFT_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;60hz&nbsp;@50Mhz

&nbsp;&nbsp;&nbsp;&nbsp;//VSYNC,HSYNC&nbsp;should&nbsp;be&nbsp;inverted

&nbsp;&nbsp;&nbsp;&nbsp;//HBPD=6VCLK,HFPD=2VCLK,HSPW=3VCLK

&nbsp;&nbsp;&nbsp;&nbsp;//VBPD=1HSYNC,VFPD=2HSYNC,VSPW=1HSYNC



#define&nbsp;LCDFRAMEBUFFER&nbsp;0x33800000&nbsp;//_NONCACHE_STARTADDRESS&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1.&nbsp;The&nbsp;LCD&nbsp;frame&nbsp;buffer&nbsp;should&nbsp;be&nbsp;write-through&nbsp;or&nbsp;non-cachable.

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;2.&nbsp;The&nbsp;total&nbsp;frame&nbsp;memory&nbsp;should&nbsp;be&nbsp;inside&nbsp;4MB.

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;3.&nbsp;To&nbsp;meet&nbsp;above&nbsp;2&nbsp;conditions,&nbsp;the&nbsp;frame&nbsp;buffer&nbsp;should&nbsp;be&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;inside&nbsp;the&nbsp;following&nbsp;regions.

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;0x31000000~0x313ffffff,

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;0x31400000~0x317ffffff,

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;0x31800000~0x31bffffff,

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.....&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;0x33800000~0x33bffffff



extern&nbsp;U32&nbsp;(*frameBuffer8BitTft240320)[SCR_XSIZE_TFT_240320/4];

extern&nbsp;U32&nbsp;(*frameBuffer16BitTft240320)[SCR_XSIZE_TFT_240320/2];



#endif&nbsp;/*__LCDLIB_H__*/

/*****************************************

&nbsp;&nbsp;NAME:&nbsp;lcdlib.c

&nbsp;*****************************************/

#include&nbsp;&lt;string.h>

#include&nbsp;"2440addr.h"

#include&nbsp;"2440lib.h"

#include&nbsp;"def.h"

//#include&nbsp;"option.h"

//#include&nbsp;"24xslib.h"&nbsp;

#include&nbsp;"lcdlib.h"



U32&nbsp;(*frameBuffer8BitTft240320)[SCR_XSIZE_TFT_240320/4];

U32&nbsp;(*frameBuffer16BitTft240320)[SCR_XSIZE_TFT_240320/2];



extern&nbsp;void&nbsp;SET_IF(void);

extern&nbsp;void&nbsp;CLR_IF(void);



U32&nbsp;UserFrameBuffer[SCR_YSIZE_TFT_240320][SCR_XSIZE_TFT_240320/2];



int&nbsp;LCD2440_Init()

{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rCLKCON|=(1&lt;&lt;5);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rGPCUP=0x00000000;&nbsp;//&nbsp;Disable&nbsp;Pull-up&nbsp;register

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rGPCCON=0xaaaaaaaa;&nbsp;//Initialize&nbsp;VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rGPDUP=0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Enable&nbsp;Pull-up&nbsp;register

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rGPDCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0xaaaaaaaa;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Initialize&nbsp;VD[15:8]

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frameBuffer16BitTft240320=(U32&nbsp;(*)[SCR_XSIZE_TFT_240320/2])LCDFRAMEBUFFER;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON1=(CLKVAL_TFT_240320&lt;&lt;8)|(MVAL_USED&lt;&lt;7)|(3&lt;&lt;5)|(12&lt;&lt;1)|0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TFT&nbsp;LCD&nbsp;panel,16bpp&nbsp;TFT,ENVID=off

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON2=(VBPD_240320&lt;&lt;24)|(LINEVAL_TFT_240320&lt;&lt;14)|(VFPD_240320&lt;&lt;6)|(VSPW_240320);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON3=(HBPD_240320&lt;&lt;19)|(HOZVAL_TFT_240320&lt;&lt;8)|(HFPD_240320);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON4=(MVAL&lt;&lt;8)|(HSPW_240320);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON5=(1&lt;&lt;11)|(1&lt;&lt;9)|(1&lt;&lt;8);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//FRM5:6:5,HSYNC&nbsp;and&nbsp;VSYNC&nbsp;are&nbsp;inverted

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR1=(((U32)frameBuffer16BitTft240320>>22)&lt;&lt;21)|M5D((U32)frameBuffer16BitTft240320>>1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR2=M5D(&nbsp;((U32)frameBuffer16BitTft240320+(SCR_XSIZE_TFT_240320*LCD_YSIZE_TFT_240320*2))>>1&nbsp;);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR3=(((SCR_XSIZE_TFT_240320-LCD_XSIZE_TFT_240320)/1)&lt;&lt;11)|(LCD_XSIZE_TFT_240320/1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDINTMSK|=(3);&nbsp;//&nbsp;MASK&nbsp;LCD&nbsp;Sub&nbsp;Interrupt

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//rLPCSEL&=(~7);&nbsp;//&nbsp;Disable&nbsp;LPC3600

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rTCONSEL|=(7);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rTPAL=0;&nbsp;//&nbsp;Disable&nbsp;Temp&nbsp;Palette

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(1);

}



void&nbsp;Lcd_Init(int&nbsp;type)

{

&nbsp;&nbsp;&nbsp;&nbsp;//memset((BYTE*)UserFrameBuffer,0x00,LCD_XSIZE_TFT_640480*LCD_YSIZE_TFT_640480*4);

&nbsp;&nbsp;&nbsp;&nbsp;//UserFrameBuffer&nbsp;=&nbsp;(U32&nbsp;(*)[SCR_XSIZE_TFT_640480/2])malloc(LCD_XSIZE_TFT_640480*LCD_YSIZE_TFT_640480);

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;switch(type)

&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_STN_1BIT:。。。。。。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_STN_2BIT:。。。。。。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_STN_4BIT:。。。。。。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_CSTN_8BIT:。。。。。。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_CSTN_12BIT:。。。。。。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_8BIT_240320:。。。。。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_16BIT_240320:

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rCLKCON|=(1&lt;&lt;5);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rGPCUP=0x00000000;&nbsp;//&nbsp;Disable&nbsp;Pull-up&nbsp;register

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rGPCCON=0xaaaaaaaa;&nbsp;//Initialize&nbsp;VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rGPDUP=0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Enable&nbsp;Pull-up&nbsp;register

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rGPDCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0xaaaaaaaa;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Initialize&nbsp;VD[15:8]

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frameBuffer16BitTft240320=(U32&nbsp;(*)[SCR_XSIZE_TFT_240320/2])LCDFRAMEBUFFER;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON1=(CLKVAL_TFT_240320&lt;&lt;8)|(MVAL_USED&lt;&lt;7)|(3&lt;&lt;5)|(12&lt;&lt;1)|0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TFT&nbsp;LCD&nbsp;panel,16bpp&nbsp;TFT,ENVID=off

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON2=(VBPD_240320&lt;&lt;24)|(LINEVAL_TFT_240320&lt;&lt;14)|(VFPD_240320&lt;&lt;6)|(VSPW_240320);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON3=(HBPD_240320&lt;&lt;19)|(HOZVAL_TFT_240320&lt;&lt;8)|(HFPD_240320);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON4=(MVAL&lt;&lt;8)|(HSPW_240320);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON5=(1&lt;&lt;11)|(1&lt;&lt;9)|(1&lt;&lt;8);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//FRM5:6:5,HSYNC&nbsp;and&nbsp;VSYNC&nbsp;are&nbsp;inverted

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR1=(((U32)frameBuffer16BitTft240320>>22)&lt;&lt;21)|M5D((U32)frameBuffer16BitTft240320>>1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR2=M5D(&nbsp;((U32)frameBuffer16BitTft240320+(SCR_XSIZE_TFT_240320*LCD_YSIZE_TFT_240320*2))>>1&nbsp;);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR3=(((SCR_XSIZE_TFT_240320-LCD_XSIZE_TFT_240320)/1)&lt;&lt;11)|(LCD_XSIZE_TFT_240320/1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDINTMSK|=(3);&nbsp;//&nbsp;MASK&nbsp;LCD&nbsp;Sub&nbsp;Interrupt

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//rLPCSEL&=(~7);&nbsp;//&nbsp;Disable&nbsp;LPC3600

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rTCONSEL|=(7);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rTPAL=0;&nbsp;//&nbsp;Disable&nbsp;Temp&nbsp;Palette

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;



&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_1BIT_640480:.........&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_8BIT_640480:..........&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_16BIT_640480:..........&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_24BIT_640480:...........&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_1BIT_800600:.............&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_8BIT_800600:................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_16BIT_800600:..............

&nbsp;&nbsp;&nbsp;&nbsp;default:break;

&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

}



void&nbsp;Lcd_CstnOnOff(int&nbsp;onoff)

{

&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1:CSTN&nbsp;Panel&nbsp;on&nbsp;&nbsp;0:CSTN&nbsp;Panel&nbsp;off&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;if(onoff==1)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON1|=1;&nbsp;//&nbsp;ENVID=ON

&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON1&nbsp;=rLCDCON1&nbsp;&&nbsp;0x3fffe;&nbsp;//&nbsp;ENVID&nbsp;Off

&nbsp;&nbsp;&nbsp;&nbsp;rGPBUP=rGPBUP|(1&lt;&lt;5);&nbsp;//&nbsp;Pull-up&nbsp;disable

&nbsp;&nbsp;&nbsp;&nbsp;rGPBDAT=rGPBDAT&(~(1&lt;&lt;5))|(onoff&lt;&lt;5);&nbsp;//&nbsp;GPB5=On&nbsp;or&nbsp;Off

&nbsp;&nbsp;&nbsp;&nbsp;rGPBCON=rGPBCON&(~(3&lt;&lt;10))|(1&lt;&lt;10);&nbsp;&nbsp;&nbsp;&nbsp;//GPD9=output

}&nbsp;&nbsp;&nbsp;&nbsp;



void&nbsp;Lcd_EnvidOnOff(int&nbsp;onoff)

{

&nbsp;&nbsp;&nbsp;&nbsp;if(onoff==1)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON1|=1;&nbsp;//&nbsp;ENVID=ON

&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON1&nbsp;=rLCDCON1&nbsp;&&nbsp;0x3fffe;&nbsp;//&nbsp;ENVID&nbsp;Off

}&nbsp;&nbsp;&nbsp;&nbsp;



void&nbsp;Lcd_Lpc3600Enable(void)

{

&nbsp;&nbsp;&nbsp;&nbsp;rTCONSEL&nbsp;&=~(7);

&nbsp;&nbsp;&nbsp;&nbsp;rTCONSEL&nbsp;|=(7);&nbsp;//&nbsp;240320,Enable&nbsp;LPC3600

}&nbsp;&nbsp;&nbsp;&nbsp;



void&nbsp;Lcd_PowerEnable(int&nbsp;invpwren,int&nbsp;pwren)

{

&nbsp;&nbsp;&nbsp;&nbsp;//GPG4&nbsp;is&nbsp;setted&nbsp;as&nbsp;LCD_PWREN

&nbsp;&nbsp;&nbsp;&nbsp;rGPGUP=rGPGUP&(~(1&lt;&lt;4))|(1&lt;&lt;4);&nbsp;//&nbsp;Pull-up&nbsp;disable

&nbsp;&nbsp;&nbsp;&nbsp;rGPGCON=rGPGCON&(~(3&lt;&lt;8))|(3&lt;&lt;8);&nbsp;//GPG4=LCD_PWREN

&nbsp;&nbsp;&nbsp;&nbsp;//Enable&nbsp;LCD&nbsp;POWER&nbsp;ENABLE&nbsp;Function

&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON5=rLCDCON5&(~(1&lt;&lt;3))|(pwren&lt;&lt;3);&nbsp;&nbsp;&nbsp;//&nbsp;PWREN

&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON5=rLCDCON5&(~(1&lt;&lt;5))|(invpwren&lt;&lt;5);&nbsp;&nbsp;&nbsp;//&nbsp;INVPWREN

}&nbsp;&nbsp;&nbsp;&nbsp;



void&nbsp;MoveViewPort(int&nbsp;type)

{

&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;vx=0,vy=0,vd;

&nbsp;&nbsp;&nbsp;&nbsp;vd=(type==MODE_STN_1BIT)*16+(type==MODE_STN_2BIT)*8+(type==MODE_STN_4BIT)*4

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+(type==MODE_CSTN_8BIT)*2+(type==MODE_CSTN_12BIT)*4&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+(type==MODE_TFT_1BIT_240320)*16+(type==MODE_TFT_8BIT_240320)*2+(type==MODE_TFT_16BIT_240320)*1

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+(type==MODE_TFT_1BIT_640480)*16+(type==MODE_TFT_8BIT_640480)*2+(type==MODE_TFT_16BIT_640480)*1+(type==MODE_TFT_24BIT_640480)/2

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+(type==MODE_TFT_1BIT_800600)*16+(type==MODE_TFT_8BIT_800600)*2+

(type==MODE_TFT_16BIT_800600)*1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;while(1)

&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(Uart_Getch())

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'i':

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vy>=vd)vy-=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'j':

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vx>=vd)vx-=vd;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'k':*/

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//if((type==MODE_TFT_1BIT_800600)|(type==MODE_TFT_8BIT_800600)|(type==MODE_TFT_16BIT_800600))&nbsp;&nbsp;&nbsp;

/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((type&0x4000)&&(type&0x400))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vx&lt;=(SCR_XSIZE_TFT_800600-LCD_XSIZE_TFT_800600-vd))vx+=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//else&nbsp;if((type==MODE_TFT_1BIT_640480)|(type==MODE_TFT_8BIT_640480)|



(type==MODE_TFT_16BIT_640480)|(type==MODE_TFT_24BIT_640480))&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if((type&0x4000)&&(type&0x200))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vx&lt;=(SCR_XSIZE_TFT_640480-LCD_XSIZE_TFT_640480-vd))vx+=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//else&nbsp;if((type==MODE_TFT_8BIT_240320)|(type==MODE_TFT_16BIT_240320))&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if((type&0x4000)&&(type&0x100))&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vx&lt;=(SCR_XSIZE_TFT_240320-LCD_XSIZE_TFT_240320-vd))vx+=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//else&nbsp;if((type==MODE_CSTN_8BIT)|(type==MODE_CSTN_12BIT))&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(type&0x2000)&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vx&lt;=(SCR_XSIZE_CSTN-LCD_XSIZE_CSTN-vd))vx+=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vx&lt;=(SCR_XSIZE_STN-LCD_XSIZE_STN-vd))vx+=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;break;*/



//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'m':

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((type&0x4000)&&(type&0x400))

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vy&lt;=(SCR_YSIZE_TFT_800600-LCD_YSIZE_TFT_800600-vd))vy+=vd;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(vy&nbsp;==&nbsp;592)vy+=8;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if((type&0x4000)&&(type&0x200))

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vy&lt;=(SCR_YSIZE_TFT_640480-LCD_YSIZE_TFT_640480-vd))vy+=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if((type&0x4000)&&(type&0x100))

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vy&lt;=(SCR_YSIZE_TFT_240320-LCD_YSIZE_TFT_240320-vd))vy+=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(type&0x2000)&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vy&lt;=(SCR_YSIZE_CSTN-LCD_YSIZE_CSTN-vd))vy+=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vy&lt;=(SCR_YSIZE_STN-LCD_YSIZE_STN-vd))vy+=vd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;



&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'\r':

&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;



&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;break;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}*/

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Uart_Printf("vx=%3d,vy=%3d\n",vx,vy);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lcd_MoveViewPort(vx,vy,type);

&nbsp;&nbsp;&nbsp;&nbsp;}

}



void&nbsp;Lcd_MoveViewPort(int&nbsp;vx,int&nbsp;vy,int&nbsp;type)

{

&nbsp;&nbsp;&nbsp;&nbsp;U32&nbsp;addr;

&nbsp;&nbsp;&nbsp;&nbsp;switch(type)

&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_STN_1BIT:.......................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_STN_2BIT:.....................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_STN_4BIT:..........................

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_CSTN_8BIT:..........................

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_CSTN_12BIT:.........................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_1BIT_240320:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET_IF();&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#if&nbsp;(LCD_XSIZE_TFT_240320&lt;512)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((rLCDCON1>>18)&lt;=1);&nbsp;//&nbsp;if&nbsp;x&lt;512

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((rLCDCON1>>18)==0);&nbsp;//&nbsp;if&nbsp;x>512

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endif

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr=(U32)frameBuffer8BitTft240320+(vx/8)+vy*(SCR_XSIZE_TFT_240320/8);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR1=&nbsp;(&nbsp;(addr>>22)&lt;&lt;21&nbsp;)&nbsp;|&nbsp;M5D(addr>>1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR2=&nbsp;M5D(((addr+(SCR_XSIZE_TFT_240320*LCD_YSIZE_TFT_240320/8))>>1));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR_IF();

&nbsp;&nbsp;&nbsp;&nbsp;break;



&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_8BIT_240320:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET_IF();&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#if&nbsp;(LCD_XSIZE_TFT_240320&lt;64)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((rLCDCON1>>18)&lt;=1);&nbsp;//&nbsp;if&nbsp;x&lt;64

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((rLCDCON1>>18)==0);&nbsp;//&nbsp;if&nbsp;x>64

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endif

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr=(U32)frameBuffer8BitTft240320+(vx/1)+vy*(SCR_XSIZE_TFT_240320/1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR1=&nbsp;(&nbsp;(addr>>22)&lt;&lt;21&nbsp;)&nbsp;|&nbsp;M5D(addr>>1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR2=&nbsp;M5D(((addr+(SCR_XSIZE_TFT_240320*LCD_YSIZE_TFT_240320))>>1));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR_IF();

&nbsp;&nbsp;&nbsp;&nbsp;break;



&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_16BIT_240320:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET_IF();&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#if&nbsp;(LCD_XSIZE_TFT_240320&lt;32)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((rLCDCON1>>18)&lt;=1);&nbsp;//&nbsp;if&nbsp;x&lt;32

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((rLCDCON1>>18)==0);&nbsp;//&nbsp;if&nbsp;x>32

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endif

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr=(U32)frameBuffer16BitTft240320+(vx*2)+vy*(SCR_XSIZE_TFT_240320*2);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR1=&nbsp;(&nbsp;(addr>>22)&lt;&lt;21&nbsp;)&nbsp;|&nbsp;M5D(addr>>1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR2=&nbsp;M5D(((addr+(SCR_XSIZE_TFT_240320*LCD_YSIZE_TFT_240320*2))>>1));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR_IF();

&nbsp;&nbsp;&nbsp;&nbsp;break;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_1BIT_640480:..........................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_8BIT_640480:.....................................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_16BIT_640480:.........................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_24BIT_640480:...............................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_1BIT_800600:.................................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_8BIT_800600:.........................................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MODE_TFT_16BIT_800600:...................................&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;default:break;

&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;

}&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;

void&nbsp;LCD2440_SetPixel(U32&nbsp;x,U32&nbsp;y,U32&nbsp;c)

{&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;=&nbsp;(c&nbsp;&lt;&lt;&nbsp;8&nbsp;)&nbsp;&&nbsp;0xffffff00;

&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;if(x&lt;SCR_XSIZE_TFT_240320&nbsp;&&&nbsp;y&lt;SCR_YSIZE_TFT_240320)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frameBuffer16BitTft240320[(y)][(x)]=(&nbsp;frameBuffer16BitTft240320[(y)][(x)]

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&&nbsp;(0x0)&nbsp;|&nbsp;(&nbsp;c&0xffffff00));&nbsp;//&nbsp;|&nbsp;(&nbsp;c&0x00ffffff));&nbsp;LSB&nbsp;

}



int&nbsp;LCD2440_GetPixel(U32&nbsp;x,U32&nbsp;y)

{

return(frameBuffer16BitTft240320[(y)][(x)]);

}



int&nbsp;LcdInit(void)

{



Lcd_Init(MODE_TFT_16BIT_240320);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LCD初始化

Glib_Init(MODE_TFT_16BIT_240320);

Lcd_PowerEnable(0,&nbsp;1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//上电

Lcd_EnvidOnOff(1);

SetBackground(0x00,0x00);

return(1);

}

本贴被 luojinwen 编辑过,最后修改时间:2008-10-31,19:30:11.

出0入0汤圆

 楼主| 发表于 2008-10-31 21:58:19 | 显示全部楼层
Re&nbsp;【64楼】&nbsp;luojinwen&nbsp;:应该是LCD参数设置不对,你可以用这个初始化程序试试看:





static&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Init(void)



{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;MVAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(13)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Def=13

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;MVAL_USED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//0=each&nbsp;frame&nbsp;&nbsp;&nbsp;1=rate&nbsp;by&nbsp;MVAL



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INVVCLK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INVVLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INVVFRAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INVVD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;INVVDEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//0=normal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1=inverted

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INVPWREN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INVLEND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0)



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;BSWP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Byte&nbsp;swap&nbsp;control

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;HWSWP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Half&nbsp;word&nbsp;swap&nbsp;control



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;M5D(n)&nbsp;((n)&nbsp;&&nbsp;0x1fffff)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;To&nbsp;get&nbsp;lower&nbsp;21bits

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;HOZVAL_TFT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LCD_XSIZE-1)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;LINEVAL_TFT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LCD_YSIZE-1)







&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;HFPD&nbsp;(19)&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;HSPW&nbsp;(5)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;HBPD&nbsp;(36)&nbsp;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;VFPD&nbsp;(5)&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;VSPW&nbsp;(1)&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;VBPD&nbsp;(1)&nbsp;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;CLKVAL_TFT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//////////////////////

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rCLKCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|=(1&lt;&lt;5);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rGPCUP=0x00000000;&nbsp;//&nbsp;Disable&nbsp;Pull-up&nbsp;register

&nbsp;&nbsp;&nbsp;&nbsp;rGPCCON=0xaaaaaaaa;&nbsp;//Initialize&nbsp;VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND&nbsp;



&nbsp;&nbsp;&nbsp;&nbsp;rGPDUP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Enable&nbsp;Pull-up&nbsp;register

&nbsp;&nbsp;&nbsp;&nbsp;rGPDCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0xaaaaaaaa;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Initialize&nbsp;VD[15:8]

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;////

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON1=(CLKVAL_TFT&lt;&lt;8)|(MVAL_USED&lt;&lt;7)|(3&lt;&lt;5)|(12&lt;&lt;1)|0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TFT&nbsp;LCD&nbsp;panel,16bpp&nbsp;TFT,ENVID=off

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON2&nbsp;=&nbsp;(VBPD&lt;&lt;24)&nbsp;|&nbsp;(LINEVAL_TFT&lt;&lt;14)&nbsp;|&nbsp;(VFPD&lt;&lt;6)&nbsp;|&nbsp;(VSPW);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON3&nbsp;=&nbsp;(HBPD&lt;&lt;19)&nbsp;|&nbsp;(HOZVAL_TFT&lt;&lt;8)&nbsp;|&nbsp;(HFPD);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON4&nbsp;=&nbsp;(13&lt;&lt;8)&nbsp;|&nbsp;(HSPW);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDCON5&nbsp;=&nbsp;(1&lt;&lt;11)&nbsp;|&nbsp;(INVVCLK&lt;&lt;10)&nbsp;|&nbsp;(INVVLINE&lt;&lt;9)&nbsp;|&nbsp;(INVVFRAME&lt;&lt;8)&nbsp;|&nbsp;(INVVD&lt;&lt;7)&nbsp;|&nbsp;(INVVDEN&lt;&lt;6)&nbsp;|&nbsp;(1&lt;&lt;3)&nbsp;&nbsp;|(BSWP&lt;&lt;1)|(HWSWP&lt;&lt;0)&nbsp;;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR1=(((U32)LCD_Buffer>>&nbsp;22)&nbsp;&lt;&lt;&nbsp;21)&nbsp;|&nbsp;((M5D((U32)LCD_Buffer>>&nbsp;1))&nbsp;&lt;&lt;&nbsp;0);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR2=M5D(&nbsp;((U32)LCD_Buffer+(LCD_XSIZE*LCD_YSIZE*2))>>1&nbsp;);&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDSADDR3=(((LCD_XSIZE-LCD_XSIZE)/1)&lt;&lt;11)|(LCD_XSIZE/1);&nbsp;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//rLCDSADDR3=(((SCR_XSIZE-LCD_XSIZE)/1)&lt;&lt;11)|(LCD_XSIZE/1);

//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLCDINTMSK|=(3);&nbsp;//&nbsp;MASK&nbsp;LCD&nbsp;Sub&nbsp;Interrupt

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rLPCSEL&=(~7);&nbsp;//&nbsp;Disable&nbsp;LPC3600

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rTPAL=0;&nbsp;//&nbsp;Disable&nbsp;Temp&nbsp;Palette

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_DispOnOff(1);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;////

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(0,"LCD_Init&nbsp;Over!!!\n");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1;

}

出0入0汤圆

发表于 2008-11-1 12:08:49 | 显示全部楼层
RE【65楼】&nbsp;liuweiele&nbsp;



谢谢,总算弄好了,经过反复调试,改了以下参数



#define&nbsp;VBPD_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)

#define&nbsp;VFPD_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(5)

#define&nbsp;VSPW_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)

#define&nbsp;HBPD_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(10)

#define&nbsp;HFPD_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(19)

#define&nbsp;HSPW_240320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(5)

出0入0汤圆

 楼主| 发表于 2008-11-14 21:47:01 | 显示全部楼层
NEC这个3.5寸LCD对比度不理想.

出0入0汤圆

 楼主| 发表于 2009-1-7 23:26:04 | 显示全部楼层
最近增加了支持32位色带Alpha通道的图片显示功能,使图标显示效果大有改善(可以完全实现&nbsp;PNG图片的显示效果):

&nbsp;(原文件名:IMAG0439.jpg)&nbsp;


&nbsp;(原文件名:IMAG0440.jpg)&nbsp;


&nbsp;(原文件名:IMAG0442.jpg)&nbsp;


&nbsp;(原文件名:IMAG0444.jpg)&nbsp;


&nbsp;(原文件名:IMAG0445.jpg)&nbsp;


Alpha混合算法实现代码:
U16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RGB565_Alpha(U16&nbsp;FrColor,U16&nbsp;BkColor&nbsp;,U8&nbsp;Alpha)
{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R,G,B,R0,G0,B0,R1,G1,B1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha0,Alpha1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;////
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=(FrColor>>11)&0x1f;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=(FrColor>>5)&0x3f;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=(FrColor&0x1f);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=(BkColor>>11)&0x1f;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=(BkColor>>5)&0x3f;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=(BkColor&0x1f);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha0&nbsp;&nbsp;&nbsp;=256-Alpha;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha1&nbsp;&nbsp;&nbsp;=Alpha;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=(R0*Alpha0+R1*Alpha1)>>8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=(G0*Alpha0+G1*Alpha1)>>8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=(B0*Alpha0+B1*Alpha1)>>8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RGB565(R,G,B);
}


本贴被 liuweiele 编辑过,最后修改时间:2009-01-07,23:31:48.

出0入0汤圆

发表于 2009-1-8 18:18:28 | 显示全部楼层
非常感谢LZ,,我在用TQ2440,,,学习中,,,,,

出0入0汤圆

 楼主| 发表于 2009-1-11 10:55:32 | 显示全部楼层
带Cache或MMU的ARM才厉害!&nbsp;其它的不行~

出0入0汤圆

发表于 2009-1-11 11:06:57 | 显示全部楼层
请教下楼主&nbsp;液晶上的图标透明显示是如何实现的&nbsp;也就是图标的背景颜色和桌面的背景颜色是一样的

出0入0汤圆

 楼主| 发表于 2009-1-11 20:40:50 | 显示全部楼层
使用Alpha通道

出0入0汤圆

发表于 2009-1-20 00:59:24 | 显示全部楼层
想问一下楼主,800x600的液晶,mini2440那板子能驱动么?点击此处下载&nbsp;ourdev_595404.pdf(文件大小:128K)&nbsp;(原文件名:NL8060BC29-01.pdf)&nbsp;这是液晶的资料。

出0入0汤圆

 楼主| 发表于 2009-1-20 13:36:01 | 显示全部楼层
可以驱动.

出0入0汤圆

发表于 2009-1-20 18:58:33 | 显示全部楼层
lvds接口的液晶能驱动么?是不是还需要转换?

出0入0汤圆

发表于 2009-1-21 16:09:46 | 显示全部楼层
楼主这个用的操作系统是ucos?是哪家公司的GUI?开源的?谢谢!

出0入0汤圆

 楼主| 发表于 2009-1-21 19:26:33 | 显示全部楼层
.

出0入0汤圆

 楼主| 发表于 2009-1-21 19:28:02 | 显示全部楼层
这不是uCOS,也没有用哪家的GUI

出0入0汤圆

发表于 2009-1-23 21:05:58 | 显示全部楼层
你这没有源码,只能算是向大家炫耀而已,有什么用呢???

出0入0汤圆

 楼主| 发表于 2009-1-23 22:50:46 | 显示全部楼层
源码太大,传不上.

出0入0汤圆

发表于 2009-1-24 19:37:34 | 显示全部楼层
LZ买的是友善之臂的板子吧 性价比还是很高的 不过这种GUI  ucos跑不出来吧

出0入0汤圆

 楼主| 发表于 2009-1-24 23:07:27 | 显示全部楼层
【83楼】&nbsp;keangel&nbsp;

为什么说这种GUI用ucos跑不出来呢?





&nbsp;(原文件名:IMAG0568.jpg)&nbsp;





本贴被 liuweiele 编辑过,最后修改时间:2009-01-24,23:12:19.

出0入0汤圆

发表于 2009-2-26 22:23:09 | 显示全部楼层
很期待LZ的源码啊,或者介绍一下程序部分嘛

出0入0汤圆

发表于 2009-2-26 22:45:00 | 显示全部楼层
Mini2440呢

O(∩_∩)O哈哈~

喜欢

更喜欢你的UI源代码

出0入0汤圆

发表于 2009-2-27 10:53:02 | 显示全部楼层
再次回帖,期待源码!!!!

出0入0汤圆

 楼主| 发表于 2009-2-27 12:58:29 | 显示全部楼层
源码正在升级~

出0入0汤圆

发表于 2009-3-1 18:46:08 | 显示全部楼层
楼主什么时候放源码出来啊 很期待学习学习

出0入0汤圆

发表于 2009-3-4 08:47:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-15 02:49:04 | 显示全部楼层
周一刚买了MINI2440,试了下TFT,很不错,
然后试了下半透明效果,发现有时候读取像素数据的时候错误,
于是弄了个镜像缓冲区,这样可以保证读取数据的正确性,
¥%……¥%&……

出0入0汤圆

发表于 2009-3-15 02:51:56 | 显示全部楼层
其实这块屏幕的对比度是可以调节的, 屏幕背面有个可调节电位器, 螺丝刀调节一下对比度会更好。
过几天再驱动一下800 * 600 的TFT看看, 这块屏幕的颜色非常好,是老笔记本上拆下来的。

出0入0汤圆

 楼主| 发表于 2009-3-15 12:20:20 | 显示全部楼层
调背光电压的

出0入0汤圆

 楼主| 发表于 2009-3-15 12:21:00 | 显示全部楼层
这块屏的对比度最大为70:1

出0入0汤圆

发表于 2009-3-15 19:15:58 | 显示全部楼层
【63楼】 liuweiele

一般是把程序烧到NAND 留出NOR来启动吧

可以使用NOR的A选项把程序烧写到NAND的0地址 然后拨到NAND启动 过一会儿就能启动了 这个我试过 可能代码拷贝到内存得花上几秒

楼主提供的源代码不全啊 GUI.h我就找不到!

我也是最近才开始裸奔 目前搞定了屏显示自己的图片 其他功能正在尝试中 希望楼主提供源代码研究一下!

出0入0汤圆

发表于 2009-3-15 19:51:34 | 显示全部楼层
裸奔好, 可以摸透硬件, 先玩几个月的裸奔先。

BTW: 那个电位器真的不是背光亮度的, 电位器调节的是COM引脚电压,
背光只有几个LED,且电位器阻值为10K,不可能用这么大的电阻去调节背光电流。
看手册里面的框图就知道了, 动手调节一下更可以看得出效果。

出0入0汤圆

发表于 2009-3-17 09:34:35 | 显示全部楼层
为什么我在ram中可以正常运行的程序,用hjtag下载到norflash中,程序就不运行了呢?

出0入0汤圆

 楼主| 发表于 2009-3-17 13:19:09 | 显示全部楼层
把启动信息发上来看看

出0入0汤圆

发表于 2009-3-22 22:23:33 | 显示全部楼层
我也是用mini2440,初学的,下来研究一下,谢谢了!

出0入0汤圆

发表于 2009-3-22 23:53:20 | 显示全部楼层
MARK!!!

出0入0汤圆

发表于 2009-3-24 20:47:27 | 显示全部楼层
我成功的烧写到了S3C2440 的板子上

也是有显示开机画面的

但是进入主菜单

触摸屏幕没有反应

无法进入相应的菜单

请教下这可能是什么问题

和您一样的开发板友善的

谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 03:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表