#include "def.h"
#include "lcd.h"
#include "2440addr.h"
#include "uart.h"
unsigned short LCD_BUFER[240][320];
extern unsigned char gImage_1[153600];
extern unsigned char gImage_2[153600];
//void Delay(unsigned int time);
void MS_Delay(unsigned int time)
{
int tt;
for(;time>0;time--)
{
for(tt=100000;tt>0;tt--){}
}
}
void US_Delay(unsigned int time)
{
int tt;
for(;time>0;time--){
for(tt=400;tt>0;tt--)
{}
}
}
void lcd_port_init()
{
rGPCCON = 0xaa95aaaa;
rGPCUP = 0x0;
rGPDCON = 0xaaaaaaaa;//0xaa95aaa5
rGPDUP = 0x0;
}
void lcd_register_init()
{
unsigned int addrstart;
unsigned int addrstart_low;
unsigned int addrstart_high;
unsigned int addrend;
unsigned int addrend_low;
rLCDCON1 = (6<<8)|(0<<7)|(3<<5)|(12<<1)|(0);
rLCDCON2 = (8<<24)|(239<<14)|(3<<6)|(2);
rLCDCON3 = (19<<19)|(319<<8)|(3);
// rLCDCON4 = (18<<8);
//rLCDCON5 = (15<<8)|(0<<1)|(1);
rLCDCON4 = 18;
rLCDCON5 =((1<<11)|(1<<10)|(1<<9)|(1<<8)|(0<<7)|(0<<6)|(0<<1)|(1));
//rLCDSADDR1 = (((0x30000000&0x7fffffff)>>22)|((0x30000000&0x3ffff)>>1));
//rLCDSADDR2 = (((0x30000000&0x3ffff)>>1)+320*240*2);
addrstart = (unsigned int) LCD_BUFER;
addrstart_high = addrstart>>22;
addrstart_low = addrstart&0x3fffff;
addrend = addrstart + 320*240*2;
addrend_low = addrend&0x3fffff;
rLCDSADDR1 = (addrstart_high<<21)|(addrstart_low>>1);
rLCDSADDR2 = addrend_low>>1;
rLCDSADDR3 = 320;
rLCDINTMSK = 0x3;
rTCONSEL = 0x0;
rTPAL = 0x0;
}
void LTV350QV_Write(unsigned short index, unsigned short regdata)
{
unsigned short int tmp1;
unsigned short int tmp2;
unsigned int tmp3;
unsigned short int i;
CS_H;//#define CS_H rGPCDAT |=(1<<8)
SCLK_H;//#define SCLK_H rGPCDAT |=(1<<9)
SDI_H;//#define SDI_H rGPCDAT |=(1<<10)
US_Delay(100);
tmp1 = 0x74; //start byte
tmp2 = index;
tmp3 = (tmp1<<16)|tmp2;
CS_L;//#define CS_L rGPCDAT &=~(1<<8)
US_Delay(100);
for(i=0;i<24;i++)
{
SCLK_L;//#define SCLK_L rGPCDAT &=~(1<<9)
if(tmp3&(1<<(23-i)))
{
SDI_H;
}
else
{
SDI_L;//#define SDI_L rGPCDAT &=~(1<<10)
}
US_Delay(100);
SCLK_H;
US_Delay(100);
}
CS_H;
Uart_Printf("ddd\n");
US_Delay(100);
tmp1 = 0x76;
tmp2 = regdata;
tmp3 = (tmp1<<16)|tmp2;
CS_L;
US_Delay(100);
for(i=0;i<24;i++)
{
SCLK_L;
if(tmp3&(1<<(23-i)))
{
SDI_H;
}
else
{
SDI_L;
}
US_Delay(100);
SCLK_H;
US_Delay(100);
}
CS_H;
US_Delay(100);
Uart_Printf("a\n");
}
void LTV350QV_init()
{
MS_Delay(5);
LTV350QV_Write(9,0x0);
MS_Delay(10);
LTV350QV_Write(9,0x4000);
LTV350QV_Write(10,0x2000);
LTV350QV_Write(9,0x4055);
MS_Delay(50);
LTV350QV_Write(1,0x409d);
LTV350QV_Write(2,0x0204);
LTV350QV_Write(3,0x0100);
LTV350QV_Write(4,0x3000);
LTV350QV_Write(5,0x4003);
LTV350QV_Write(6,0x000a);
LTV350QV_Write(7,0x0021);
LTV350QV_Write(8,0x0c00);
LTV350QV_Write(10,0x0103);
LTV350QV_Write(11,0x0301);
LTV350QV_Write(12,0x1f0f);
LTV350QV_Write(13,0x1f0f);
LTV350QV_Write(14,0x0707);
LTV350QV_Write(15,0x0307);
LTV350QV_Write(16,0x0707);
LTV350QV_Write(17,0x0);
LTV350QV_Write(18,0x0004);
LTV350QV_Write(19,0x0);
MS_Delay(200);
LTV350QV_Write(9,0x4a55);
LTV350QV_Write(5,0x5003);
Uart_Printf("b\n");
}
void Lcd_ClearScr(unsigned short color)
{
unsigned short i;
unsigned short j;
for(i=0;i<240;i++)
{
for(j=0;j<320;j++)
{
LCD_BUFER[i][j] = color;
}
US_Delay(5);
}
Uart_Printf("c\n");
}
void Test_Pic(void)
{
Lcd_Pic_H(gImage_1);
MS_Delay(1000);
Lcd_Pic_V(gImage_2);
MS_Delay(1000);
}
void Lcd_Pic_H(unsigned char *p) //行
{
unsigned int i;
unsigned char *h;
unsigned char *k;
h=p;
k=(unsigned char *)LCD_BUFER;
for(i=0;i<153600;i++)
{
*k=*h;
h++;
k++;
US_Delay(5);
}
}
void Lcd_Pic_V(unsigned char *p) //列
{
unsigned int i;
unsigned int j;
//unsigned int n;
unsigned char *h;
unsigned char *k;
h=p;
k=(unsigned char *)LCD_BUFER;
for(i=0;i<320*2;i++)
{
for(j=0;j<240*2;j++)
{
*(k+j*320+i) = *(h+j*320+i);
// h++;
//k++;
US_Delay(5);
}
}
}
void lcd_displayen()
{
rLCDCON1 |= 1;
US_Delay(100);
Uart_Printf("d\n");
}