我现在用S3C44B0X来驱动TFT LCM(16BIT),之前一直是用单片机,因为现在速度比较慢,内存比较小,所以改为ARM.<br /><br />我将TFT LCM挂在S3C44B0X的nGCS3上,TFT LCM的读写控制分别接S3C44B0X的nOE和nWR.<br />TFT的16bit数据线接S3C44B0的D0~D15,Reset接S3C44B0X的nReset,上电复位.<br /><br />程序如是,没有反应,可否请各位帮忙分析一下,<br /><br />****************************************************************<br /> <br />//*****************************************************************************<br />//Project: 1.8" TFT LCM display test code<br />//Driver IC: r61503<br />//nGCS2 connect to LCM CS.<br />//16-bit and 8080 times<br />//<br />//test LED use portc GPC4.GPC5.GPC6.GPC7<br />//LCD_cs //nGCS2<br />//LCD_reset //nRESET<br />//<br />//*****************************************************************************<br /><br />#include "INCDEF.H"<br /><br />#include "SRCpicture.c"<br /><br />#define rBWSCON (*(volatile unsigned int *) 0x0180000)<br /><br />#define rPCONA (*(volatile unsigned int *)0x01d2000) //IO port A control register<br /><br />#define rPCONB (*(volatile unsigned int *)0x01d2008) //IO port B control register<br /><br />#define rPCONC (*(volatile unsigned int *)0x01d20010) //IO port C control register<br /><br />#define rPDATA (*(volatile unsigned int *)0x01d2004) //IO port data A register<br /><br />#define rPDATB (*(volatile unsigned int *)0x01d2000C) //IO port data B register<br /> <br />#define rPDATC (*(volatile unsigned int *)0x01d20014) //IO port data C register<br /><br />#define rPUPC (*(volatile unsigned int *)0x01d20018) //IO port data register<br /><br />#define rSend_data(addr,i) *((volatile unsigned int *)(addr<<1))=(unsigned int) i //data0~data15 I/O port<br /><br /> <br />//*****************************************************************************<br /><br />S16 sx,ex,syl,syh,eyl,eyh,rgbz_data;<br /><br />S16 *p; <br /><br />//*****************************************************************************<br /><br />void Write_command(unsigned int i);<br /><br />void ShowPicture(const U8 temp[]);<br /> <br />void Delay(S16 t);<br /><br />void initial();<br /><br />void Write_data(unsigned int j);<br /><br />void display_scolor(S16 sx,S16 ex,S16 sy,S16 ey,S16 rgb_data);<br /><br />void Display();<br /><br />//*****************************************************************************<br />int Main()<br />{<br /><br /> //rBWSCON=0x01001112;<br /> <br /> rPCONA =0x00; //½«A0ÉèÖÃΪÊä³öģʽ<br /> rPCONC =0x55555555; //½«IO¿ÚÖÃΪÊä³öģʽ<br /> rPUPC=0xff;<br /> <br /> rPDATC=0x00;<br /> <br /> Delay(5);<br /> <br /> rPDATC=0xa0;<br /> <br /> Delay(5);<br /> <br /> rPDATC=0x50;<br /> <br /> Delay(5);<br /> <br /> rPCONB=0x7ff;<br /> //nGCS3<br /> rPDATB&=0x77f; //nGCS3 LOW,and TFT LCM enable<br /><br /> initial();<br /> <br /> Display(); <br /><br /> return(0); <br />}<br /><br />//*****************************************************************************<br /><br />void Delay(S16 t)<br />{<br />unsigned int i,j,k;<br />for(i=0;i<=t;i++)<br /> for(j=0;j<0xff;j++)<br /> for(k=0;k<0xff;k++);<br />}<br /><br /><br />//*****************************************************************************<br /><br />void initial()<br /><br />{<br /> <br /> <br /> Write_command(0x11);<br /> Write_data(0x171b);<br /> <br /> Write_command(0x12);<br /> Write_data(0x0003);<br /> <br /> Write_command(0x13);<br /> Write_data(0x080c);<br /> <br /> Write_command(0x14);<br /> Write_data(0x0017);<br /> <br /> Write_command(0x10);<br /> Write_data(0x1208);<br /> <br /> Write_command(0x13);<br /> Write_data(0x081c);<br /> <br /> Write_command(0x01);<br /> Write_data(0x0a0c);<br /> <br /> Write_command(0x02);<br /> Write_data(0x0200);<br /> <br /> Write_command(0x03);<br /> Write_data(0x1030);<br /> <br /> Write_command(0x07);<br /> Write_data(0x0005);<br /> <br /> Write_command(0x08);<br /> Write_data(0x030a);<br /> <br /> Write_command(0x0b);<br /> Write_data(0x0004);<br /> <br /> Write_command(0x0c);<br /> Write_data(0x0000);<br /> <br /> Write_command(0xa0);<br /> Write_data(0x0100);<br /> <br /> Write_command(0xa7);<br /> Write_data(0x0011);<br /> <br /> Write_command(0x0e);<br /> Write_data(0x0002);<br /><br /> Write_command(0x30);<br /> Write_data(0x0000);<br /> <br /> Write_command(0x31);<br /> Write_data(0x0507);<br /> <br /> Write_command(0x32);<br /> Write_data(0x0003);<br /> <br /> Write_command(0x33);<br /> Write_data(0x0601);<br /> <br /> Write_command(0x34);<br /> Write_data(0x0407);<br /> <br /> Write_command(0x35);<br /> Write_data(0x0002);<br /> <br /> Write_command(0x36);<br /> Write_data(0x0707);<br /> <br /> Write_command(0x37);<br /> Write_data(0x0106);<br /> <br /> Write_command(0x38);<br /> Write_data(0x0200);<br /> <br /> Write_command(0x40);<br /> Write_data(0x0000);<br /> <br /> Write_command(0x42);<br /> Write_data(0x9f00);<br /> <br /> Write_command(0x07);<br /> Write_data(0x0001);<br /> <br /> Write_command(0x07);<br /> Write_data(0x0021);<br /> <br /> Write_command(0x07);<br /> Write_data(0x0023);<br /> <br /> Write_command(0x07);<br /> Write_data(0x1037);<br /> <br /> Write_command(0x21);<br /> Write_data(0x0000);<br /> <br /> <br />}<br /><br /><br />//*****************************************************************************<br /><br />void Write_command(unsigned int i)<br />{<br /> <br /> rPDATA=0x01;<br /> rSend_data(0x06000000,i);<br /> <br /><br />}<br /><br />//*****************************************************************************<br /><br /><br />void Write_data(unsigned int j)<br />{<br /> rPDATA=0x00;<br /> rSend_data(0x06000000,j);<br />}<br /><br />//*****************************************************************************<br />void Display()<br />{<br /> display_scolor(0,127,0,159,0x0000); //black<br /> display_scolor(0,127,0,159,0xffff); //white<br /> display_scolor(0,127,0,159,0xf800); //red<br /> display_scolor(0,127,0,159,0x07e0); //green<br /> display_scolor(0,127,0,159,0x001f); //blue<br /> ShowPicture(pho1);<br /><br /><br />}<br /><br />//=============================================================<br /><br />void display_scolor(S16 sx,S16 ex,S16 sy,S16 ey,S16 rgb_data)<br />{ <br /> S16 i,j,k;<br /> S16 syl,syh;<br /> <br /> k=ey;<br /> <br /> syh=0;<br /> syl=0;<br /> <br /> eyh=(k>>8)&0x01;<br /> <br /> eyl=k&0xff;<br /> <br /> <br /><br /> Write_command(0x2a); //Column start high address set xs8=0<br /> Write_data(0x0000); //Column start low address set <br /> Write_data(sx);<br /> Write_data(0x0000); //Column end high address set xe8=0<br /> Write_data(ex); //Column end low address set <br /><br /> Write_command(0x2b);<br /> Write_data(syh);<br /> Write_data(syl);<br /><br /> Write_data(eyh);<br /> Write_data(eyl);<br /><br /><br /> <br /> for (i=0; i<ey-sy+1; i++)<br /> { for (j=0; j<ex-sx+1; j++)<br /> { Write_data(rgb_data); <br /> }<br /> }<br />} <br /><br /><br /><br />//==============================================================<br /> <br /><br />/*-----------Display external----------------------*/<br />void ShowPicture(const U8 temp[])<br />{ <br /> S16 j;<br /> S16 i;<br /><br /> Write_command(0x2a);<br /> Write_data(0x0000); //Column address set<br /> Write_data(0);<br /> Write_data(0x00);<br /> Write_data(239);<br /><br /> Write_command(0x2b);<br /> Write_data(0x00);<br /> Write_data(0x00);<br /><br /> Write_data(0x01);<br /> Write_data(0x40);<br /> <br /> temp=pho1;<br /> <br />// *p=temp;<br /><br /><br /> for (i=0;i<319;i++)<br /> { for (j=0;j<239;j++)<br /> { <br /> Write_data(*p++);<br /> <br /> }<br /> } <br /> <br />} |
|