共2条
1/1 1 跳转至页
,VXWORKS,NUCLEUS,keil,for,arm,01a,ccd,13581980230, 谁弄过LTV350QV-F05 的lcd 帮我看下上电过程
问
spi口是用的s3c2440 的spi0口
const unsigned short LCD_REGS_VAL[19]={
0x409D,0x0204,0x0100,0x3000,0x4003,0x000A,0x0021,0x0C00,
0x0000,/*reg 9 at Instruction Setting not set */
0x0103,0x0301,0x1F0F,0x1F0F,0x0707,0x0307,0x0707,0x0000,0x0004,0x0000
};
void LCD_SEL_REG(unsigned char REGX)
{
volatile SSPreg *s2440SPIP;
s2440SPIP= (SSPreg *) SSP_BASE;
while(!(s2440SPIP->rSPSTA0&0x1)); /*wait tx ready*/
s2440SPIP->rSPTDAT0=0x2e;
while(!(s2440SPIP->rSPSTA0&0x1));
s2440SPIP->rSPTDAT0=0x00;
while(!(s2440SPIP->rSPSTA0&0x1));
s2440SPIP->rSPTDAT0=REGX;
}
//先高位后低位!!!
LCD_SET_DATA(unsigned short SVAL)
{
volatile SSPreg *s2440SPIP;
s2440SPIP= (SSPreg *) SSP_BASE;
while(!(s2440SPIP->rSPSTA0&0x1)); /*wait tx ready*/
s2440SPIP->rSPTDAT0=0x6e;
while(!(s2440SPIP->rSPSTA0&0x1));
s2440SPIP->rSPTDAT0=(SVAL&0xff00)>>8;
while(!(s2440SPIP->rSPSTA0&0x1));
s2440SPIP->rSPTDAT0=SVAL&0x00ff;
}
void SPI_Port_Init(/*int MASorSLV*/void )
{
volatile IOPreg *s2440IOP;
volatile SSPreg *s2440SPIP;
s2440IOP = (IOPreg *)IOP_BASE;
s2440SPIP= (SSPreg *) SSP_BASE;
// SPI channel 0 setting
s2440IOP->rGPECON=((s2440IOP->rGPECON&0xf03fffff)|0xa800000); // using SPI 0
s2440IOP->rGPEUP=(s2440IOP->rGPEUP & ~(7<11))|(1<13);
//现在接10k将nSS上拉到高电平
//if(MASorSLV==1){
// rGPGCON=((rGPGCON&0xffffffcf)|0x10); // Master(GPIO_Output)
// rGPGDAT|=0x4; // Activate nSS
//}
//else
// rGPGCON=((rGPGCON&0xffffffcf)|0x30); // Slave(nSS)
//rGPGUP|=0x4;
// SPI channel 1 setting
//rGPDCON=(rGPDCON&0xcfc0ffff)|(3<<16)|(3<<18)|(3<<20)|(1<<28); // MISO1, MOSI1, CLK1, Master
//rGPDDAT|=1<<14;
//rGPDUP=(rGPDUP&~(7<<8))|(1<<10);
//设置clk ,polling mode .. (datasheet 23 Serial clock cycle time tscyc 100ns(min))
s2440SPIP->rSPPRE0=0x4; //if PCLK=50Mhz,SPICLK=pclk/2/(pre0+1)=5Mhz
s2440SPIP->rSPCON0=(0<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,format A,normal
s2440SPIP->rSPPIN0=(0<<2)|(1<<1)|(0<<0); //dis-ENMUL,SBO,release
}
void SPI_Port_deInit(/*int MASorSLV*/void )
{
//2440SPIP->rSPCON0&=0x10; //dis-SCK
}
void lcdPowerUp(void)
{
int i;
volatile IOPreg *s2440IOP;
volatile SSPreg *s2440SPIP;
s2440IOP = (IOPreg *)IOP_BASE;
s2440SPIP= (SSPreg *) SSP_BASE;
//设置reset gpf4 cs gpf5 (output)
s2440IOP->rGPFCON=(s2440IOP->rGPFCON &0xf0ff) | 0x0500;
s2440IOP->rGPFUP|=0x30; //disable pullup
s2440IOP->rGPFDAT|=0x30; //init reset High cs High
//1.reset low>3us
s2440IOP->rGPFDAT|=0x10; //High
DelayMilliSeconds(1); //delay 1ms
s2440IOP->rGPFDAT&=0xef; //Low
SPI_Port_Init(); //spi init
s2440IOP->rGPFDAT&=0xdf; //set cs Low
//2.delay 5ms ->R09 = 0000h
DelayMilliSeconds(5); //delay 5ms
LCD_SEL_REG(9);
LCD_SET_DATA(0x0);
//3.delay More than 10ms ->Power Setting Function 1 ->(R09 ← 4000h R0A ← 2000h)
DelayMilliSeconds(10); //delay 10ms
LCD_SEL_REG(9);
LCD_SET_DATA(0x4000);
LCD_SEL_REG(10);
LCD_SET_DATA(0x2000);
//4. Power Setting Function 2 -> R09 ← 4055h
LCD_SEL_REG(9);
LCD_SET_DATA(0x4055);
//5.delay more than 50ms Instruction Setting
DelayMilliSeconds(50); //delay 50ms
for(i=0;i<sizeof(LCD_REGS_VAL);i++){
if(i!=8){
LCD_SEL_REG(i+1);
LCD_SET_DATA(LCD_REGS_VAL[i]);
}
}
//6.Wait more than 2 Frames 75HZ * 2
DelayMilliSeconds(27); //delay 27ms
//7.Display On Sequence ->R09 ← 4A55h R05 ← 5003h
LCD_SEL_REG(9);
LCD_SET_DATA(0x4A55);
LCD_SEL_REG(5);
LCD_SET_DATA(0x5003);
//s2440IOP->rGPFDAT|=0x20; //init cs High
}
void lcdPowerDown(void)
{
return;
} 答 1: LTV350QV-F05LTV350QV-F05在哪买的?可以告诉我吗?
mail:fulu97@126.com 答 2: 我还不会写哦!可不可传个完整的给我!学习!inverter.lin@163.com
const unsigned short LCD_REGS_VAL[19]={
0x409D,0x0204,0x0100,0x3000,0x4003,0x000A,0x0021,0x0C00,
0x0000,/*reg 9 at Instruction Setting not set */
0x0103,0x0301,0x1F0F,0x1F0F,0x0707,0x0307,0x0707,0x0000,0x0004,0x0000
};
void LCD_SEL_REG(unsigned char REGX)
{
volatile SSPreg *s2440SPIP;
s2440SPIP= (SSPreg *) SSP_BASE;
while(!(s2440SPIP->rSPSTA0&0x1)); /*wait tx ready*/
s2440SPIP->rSPTDAT0=0x2e;
while(!(s2440SPIP->rSPSTA0&0x1));
s2440SPIP->rSPTDAT0=0x00;
while(!(s2440SPIP->rSPSTA0&0x1));
s2440SPIP->rSPTDAT0=REGX;
}
//先高位后低位!!!
LCD_SET_DATA(unsigned short SVAL)
{
volatile SSPreg *s2440SPIP;
s2440SPIP= (SSPreg *) SSP_BASE;
while(!(s2440SPIP->rSPSTA0&0x1)); /*wait tx ready*/
s2440SPIP->rSPTDAT0=0x6e;
while(!(s2440SPIP->rSPSTA0&0x1));
s2440SPIP->rSPTDAT0=(SVAL&0xff00)>>8;
while(!(s2440SPIP->rSPSTA0&0x1));
s2440SPIP->rSPTDAT0=SVAL&0x00ff;
}
void SPI_Port_Init(/*int MASorSLV*/void )
{
volatile IOPreg *s2440IOP;
volatile SSPreg *s2440SPIP;
s2440IOP = (IOPreg *)IOP_BASE;
s2440SPIP= (SSPreg *) SSP_BASE;
// SPI channel 0 setting
s2440IOP->rGPECON=((s2440IOP->rGPECON&0xf03fffff)|0xa800000); // using SPI 0
s2440IOP->rGPEUP=(s2440IOP->rGPEUP & ~(7<11))|(1<13);
//现在接10k将nSS上拉到高电平
//if(MASorSLV==1){
// rGPGCON=((rGPGCON&0xffffffcf)|0x10); // Master(GPIO_Output)
// rGPGDAT|=0x4; // Activate nSS
//}
//else
// rGPGCON=((rGPGCON&0xffffffcf)|0x30); // Slave(nSS)
//rGPGUP|=0x4;
// SPI channel 1 setting
//rGPDCON=(rGPDCON&0xcfc0ffff)|(3<<16)|(3<<18)|(3<<20)|(1<<28); // MISO1, MOSI1, CLK1, Master
//rGPDDAT|=1<<14;
//rGPDUP=(rGPDUP&~(7<<8))|(1<<10);
//设置clk ,polling mode .. (datasheet 23 Serial clock cycle time tscyc 100ns(min))
s2440SPIP->rSPPRE0=0x4; //if PCLK=50Mhz,SPICLK=pclk/2/(pre0+1)=5Mhz
s2440SPIP->rSPCON0=(0<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,format A,normal
s2440SPIP->rSPPIN0=(0<<2)|(1<<1)|(0<<0); //dis-ENMUL,SBO,release
}
void SPI_Port_deInit(/*int MASorSLV*/void )
{
//2440SPIP->rSPCON0&=0x10; //dis-SCK
}
void lcdPowerUp(void)
{
int i;
volatile IOPreg *s2440IOP;
volatile SSPreg *s2440SPIP;
s2440IOP = (IOPreg *)IOP_BASE;
s2440SPIP= (SSPreg *) SSP_BASE;
//设置reset gpf4 cs gpf5 (output)
s2440IOP->rGPFCON=(s2440IOP->rGPFCON &0xf0ff) | 0x0500;
s2440IOP->rGPFUP|=0x30; //disable pullup
s2440IOP->rGPFDAT|=0x30; //init reset High cs High
//1.reset low>3us
s2440IOP->rGPFDAT|=0x10; //High
DelayMilliSeconds(1); //delay 1ms
s2440IOP->rGPFDAT&=0xef; //Low
SPI_Port_Init(); //spi init
s2440IOP->rGPFDAT&=0xdf; //set cs Low
//2.delay 5ms ->R09 = 0000h
DelayMilliSeconds(5); //delay 5ms
LCD_SEL_REG(9);
LCD_SET_DATA(0x0);
//3.delay More than 10ms ->Power Setting Function 1 ->(R09 ← 4000h R0A ← 2000h)
DelayMilliSeconds(10); //delay 10ms
LCD_SEL_REG(9);
LCD_SET_DATA(0x4000);
LCD_SEL_REG(10);
LCD_SET_DATA(0x2000);
//4. Power Setting Function 2 -> R09 ← 4055h
LCD_SEL_REG(9);
LCD_SET_DATA(0x4055);
//5.delay more than 50ms Instruction Setting
DelayMilliSeconds(50); //delay 50ms
for(i=0;i<sizeof(LCD_REGS_VAL);i++){
if(i!=8){
LCD_SEL_REG(i+1);
LCD_SET_DATA(LCD_REGS_VAL[i]);
}
}
//6.Wait more than 2 Frames 75HZ * 2
DelayMilliSeconds(27); //delay 27ms
//7.Display On Sequence ->R09 ← 4A55h R05 ← 5003h
LCD_SEL_REG(9);
LCD_SET_DATA(0x4A55);
LCD_SEL_REG(5);
LCD_SET_DATA(0x5003);
//s2440IOP->rGPFDAT|=0x20; //init cs High
}
void lcdPowerDown(void)
{
return;
} 答 1: LTV350QV-F05LTV350QV-F05在哪买的?可以告诉我吗?
mail:fulu97@126.com 答 2: 我还不会写哦!可不可传个完整的给我!学习!inverter.lin@163.com
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |