ili9486液晶驱动函数8位模式,使用PB0到PB7为数据口,初始化、读点函数、写点函数

void LCD_INIT_ILI9486(void)
{
    LCD_GPIOInit();        
 //************* Reset LCD Driver ****************//
    LCD_RST_SET; 
  delay_ms(1); // Delay 1ms
    LCD_RST_CLR; 
  delay_ms(20); // Delay 10ms           
    LCD_RST_SET; 
  delay_ms(50); // Delay 50 ms  
    
    LCD_CS_CLR;
  LCD_RD_SET;    
    //************* Start Initial Sequence **********//    
    LCD_WrCom(0xE0); 
    LCD_WrDat(0x00); 
    LCD_WrDat(0x07); 
    LCD_WrDat(0x0f); 
    LCD_WrDat(0x0D); 
    LCD_WrDat(0x1B); 
    LCD_WrDat(0x0A); 
    LCD_WrDat(0x3c); 
    LCD_WrDat(0x78); 
    LCD_WrDat(0x4A); 
    LCD_WrDat(0x07); 
    LCD_WrDat(0x0E); 
    LCD_WrDat(0x09); 
    LCD_WrDat(0x1B); 
    LCD_WrDat(0x1e); 
    LCD_WrDat(0x0f);  
    
    LCD_WrCom(0xE1); 
    LCD_WrDat(0x00); 
    LCD_WrDat(0x22); 
    LCD_WrDat(0x24); 
    LCD_WrDat(0x06); 
    LCD_WrDat(0x12); 
    LCD_WrDat(0x07); 
    LCD_WrDat(0x36); 
    LCD_WrDat(0x47); 
    LCD_WrDat(0x47); 
    LCD_WrDat(0x06); 
    LCD_WrDat(0x0a); 
    LCD_WrDat(0x07); 
    LCD_WrDat(0x30); 
    LCD_WrDat(0x37); 
    LCD_WrDat(0x0f); 
    
    LCD_WrCom(0xC0); 
    LCD_WrDat(0x10); 
    LCD_WrDat(0x10); 
    
    LCD_WrCom(0xC1); 
    LCD_WrDat(0x41); 
    
    LCD_WrCom(0xC5); 
    LCD_WrDat(0x00); 
    LCD_WrDat(0x22); 
    LCD_WrDat(0x80); 
    
    LCD_WrCom(0x36); 
    LCD_WrDat(0x68); //68竖屏,C8横屏
    
    LCD_WrCom(0x3A); //Interface Mode Control
    LCD_WrDat(0x55);
        
    LCD_WrCom(0XB0);  //Interface Mode Control  
    LCD_WrDat(0x00); 
    LCD_WrCom(0xB1);   //Frame rate 70HZ  
    LCD_WrDat(0xB0); 
    LCD_WrDat(0x11); 
    LCD_WrCom(0xB4); 
    LCD_WrDat(0x02);   
    LCD_WrCom(0xB6); //RGB/MCU Interface Control
    LCD_WrDat(0x02); 
    LCD_WrDat(0x02); 
    
    LCD_WrCom(0xB7); 
    LCD_WrDat(0xC6); 
    LCD_WrCom(0xE9); 
    LCD_WrDat(0x00);
    
    LCD_WrCom(0XF7);    
    LCD_WrDat(0xA9); 
    LCD_WrDat(0x51); 
    LCD_WrDat(0x2C); 
    LCD_WrDat(0x82);
    
    LCD_WrCom(0x11); 
    delay_ms(10);
    LCD_WrCom(0x29); 
    
    lcddev.dir = 0;//竖屏
    lcddev.setxcmd=0x2A;
    lcddev.setycmd=0x2B;
    lcddev.wramcmd=0x2C;
    lcddev.width=320;
    lcddev.height=480;
    LCD_Clear(BLACK);
}

//读取个某点的颜色值     
//x,y:坐标
//返回值:此点的颜色
u16 LCD_ReadPoint(u16 x,u16 y)
{
     u16 r,g,b,x1;
    u8 r1,b1;
    if(x>=lcddev.width||y>=lcddev.height)return 0;    //超过了范围,直接返回           
    LCD_SetCursor(x,y);
    LCD_WR_REG(0X2E);    //发送读GRAM指令
    
    GPIOB->CRL = 0X88888888; //PB0-7  上拉输入
    GPIOB->ODR |= 0X00FF;     //全部输出高

    LCD_RS_SET;
    LCD_CS_CLR;        
    //读取数据(读GRAM时,第一次为假读)    
    LCD_RD_CLR;    
  delay_us(1);//延时1us

    LCD_RD_SET;
 
    LCD_RD_CLR;                       
    delay_us(1);//延时1us                       
     r1 = DATAIN;
    r = r1;
    r <<= 8;
    LCD_RD_SET;
    
    LCD_RD_CLR;                       
    delay_us(1);//延时1us                       
     r1 = DATAIN; 
    r |= r1;
    LCD_RD_SET;
     
    LCD_RD_CLR;                       
    b1=DATAIN;
    b = b1;
    b <<= 8;
    LCD_RD_SET;
    
    LCD_RD_CLR;                       
    b1=DATAIN;
    b |= b1;
    LCD_RD_SET;
    
    g=r&0XFF;
    g<<=8;
    
    GPIOB->CRL = 0X33333333;         //PB0-7  上拉输出
    GPIOB->ODR |= 0X00FF;            //全部输出高  
    
    x1 = (((r>>11)<<11)|((g>>10)<<5)|(b>>11));
    return x1;
}

void ILI9486_DrawPoint(u16 Xpos,u16 Ypos,u16 RGB_Code)
{
    LCD_SetCursor(Xpos,Ypos);
    LCD_WriteRAM_Prepare();
  LCD_WR_DATAX(RGB_Code);        
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值