裸奔S3C2440的LCD功能,使用三星3.5的屏,主要是LCD控制器要设置好,由于没有三星屏里边的控制芯片参数,用东华手册的作为参考,总是有左的一块区域没有显示,后来灵机想到用买的开发板的一个测试程序做参考。呵呵,解决了上面的问题,但是又出了个问题,就是屏的上半部分和下半部分显示一样的内容,开始以为是
VSPW
,VBPD,VFPD没设置好,弄了半天,没搞好。嘿嘿,玩了下游戏,重新比对测试程序,发现是rLCDSADDR2参数的显示缓冲区定义有问题,先将我弄好的程序帖上:
void Lcd_Init()
{
//配置端口,用作LCD
rGPCUP=0x0;
rGPCCON=0xaaaa02a9;// ; 0xaaaa56a9
rGPDUP=0x0;
rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]
//我的HCLK=100MHZ,如果你不知道你的,请参考我的UART试验
//VCLK=100/[(7+1)*2]=6.25
rLCDCON1=(7<<8)|//CLKVAL,6.25MHZ??
(0<<7)|//VM
(3<<5)|(12<<1)|0;
rLCDCON2=(15)| //VSPW
(1<<24)| //VBPD
((240-1)<<14)| //LINRVAL
(2<<6); //VFPD
rLCDCON4=(13<<8)|
8; //HSPW
rLCDCON3=(5<<19)| //HBPD
((320-1)<<8)| //HOZVAL
(15); //HFPD
rLCDCON5=(0<<7)| //VD数据极性,0-正常,////绝对正确///。
(1<<11)| //0-5:5:5:1,1-5:6:5////绝对正确///。
(0<<1)| //字节交换.////绝对正确///。
(1)| //半字节交换.////绝对正确///。
(1<<9)| //HSYNC,水平。行同步。////绝对正确///。
(1<<8)| //VSYNC,垂直。帧同步。////绝对正确///。
(0<<6)| //VDEN的极性,VM。
(1<<5)| //PWREN极性
(1<<10)| //0-VCLK的下降沿读数据,1-上升沿
(1<<3); //LEND极性 (0<<4)
// 下面三句是设置显示缓冲区的地址,不说了
rLCDSADDR1=(((u32)LCD_BUFFER>>22)<<21)|(((u32)LCD_BUFFER>>1)&0x1fffff);
rLCDSADDR2=((((u32 )LCD_BUFFER+(320*240*2))>>1)&0x1fffff);
rLCDSADDR3=(0<<11)|320;
rLCDINTMSK|=3; // MASK LCD Sub Interrupt
rTCONSEL &= (~7) ;
//rTCONSEL &= ~( ( 1 << 4 ) | 1 ); // Disable LPC3480
rTPAL=0; // Disable Temp Palette
}
另外在调用上面初始函数后要使用下面函数设置背光和LCD给电。
rLCDCON1|=1; // ENVID=ON;控制信号输出使能
LcdBkLtSet(70);
Lcd_PowerEnable(0, 1);
Lcd_EnvidOnOff(1); //turn on vedio
阅读(1028) | 评论(0) | 转发(0) |