×
单片机 > 单片机程序设计 > 详情

51单片机软件SPI初始化ILI9488-DPI模式程序

发布时间:2021-12-03 发布时间:
|

大家好,最近的项目用到ILI9488这个芯片的屏幕,用51单片机的IO口模拟SPI信号,发送初始化代码
设置成DPI-18bitRGB模式。并用LT768芯片来显示图片。下面是程序和ILI9488资料分享:
显示图片为18bitR6G6B6信号,由于便于测试,每种颜色的6根脚都接一起了,效果如下图:




单片机驱动ILI9488源程序如下:

#define CS P13

#define CLK P14

#define DCX P15

#define SI P16

#define LCD_nRESET P00


void SPId_Init(void)

{

P1M0 |= (1<<3);

P1M1 &= ~(1<<3);

P1M0 |= (1<<4);

P1M1 &= ~(1<<4);

P1M0 |= (1<<5);

P1M1 &= ~(1<<5);

P1M0 |= (1<<6);

P1M1 &= ~(1<<6);

CS = 1;

CLK = 1;

SI = 1;

DCX = 1;

}


void LCD_ILI9488_CMD(unsigned char val)

{

unsigned char count = 0;

DCX = 0;

CS = 0;

for(count = 0 ; count < 8 ; count++)

{

CLK = 0;

delay_us(1);

if((val&0x80)==0x80)

{

SI = 1;

delay_us(1);

}

else

{

SI = 0;

delay_us(1);

}

CLK = 1;

delay_us(1);

val=val<<1;

}

CS = 1;

delay_us(1);delay_us(1);delay_us(1);

}


void LCD_ILI9488_INDEX(unsigned char val)

{

unsigned char count = 0;

DCX = 1;

CS = 0;

for(count = 0 ; count < 8 ; count++)

{

CLK = 0;

delay_us(1);

if((val&0x80)==0x80)

{

SI = 1;

delay_us(1);

}

else

{

SI = 0;

delay_us(1);

}

CLK = 1;

delay_us(1);

val=val<<1;

}

CS = 1;

delay_us(1);delay_us(1);delay_us(1);

}


void LCD_Init(void)

{

LCD_nRESET = 1;

delay_ms(1);

LCD_nRESET = 0;

delay_ms(10);

LCD_nRESET = 1;

delay_ms(120);


LCD_ILI9488_CMD(0xE0);

LCD_ILI9488_INDEX(0x00);

LCD_ILI9488_INDEX(0x07);

LCD_ILI9488_INDEX(0x0f);

LCD_ILI9488_INDEX(0x07);

LCD_ILI9488_INDEX(0x15);

LCD_ILI9488_INDEX(0x09);

LCD_ILI9488_INDEX(0x3c);

LCD_ILI9488_INDEX(0x99);

LCD_ILI9488_INDEX(0x4b);

LCD_ILI9488_INDEX(0x09);

LCD_ILI9488_INDEX(0x10);

LCD_ILI9488_INDEX(0x0d);

LCD_ILI9488_INDEX(0x1c);

LCD_ILI9488_INDEX(0x1e);

LCD_ILI9488_INDEX(0x0f);

LCD_ILI9488_CMD(0xE1);

LCD_ILI9488_INDEX(0x00);

LCD_ILI9488_INDEX(0x20);

LCD_ILI9488_INDEX(0x23);

LCD_ILI9488_INDEX(0x02);

LCD_ILI9488_INDEX(0x0f);

LCD_ILI9488_INDEX(0x06);

LCD_ILI9488_INDEX(0x34);

LCD_ILI9488_INDEX(0x45);

LCD_ILI9488_INDEX(0x43);

LCD_ILI9488_INDEX(0x04);

LCD_ILI9488_INDEX(0x0a);

LCD_ILI9488_INDEX(0x08);

LCD_ILI9488_INDEX(0x30);

LCD_ILI9488_INDEX(0x37);

LCD_ILI9488_INDEX(0x0f);


LCD_ILI9488_CMD(0xC0);

LCD_ILI9488_INDEX(0x10);

LCD_ILI9488_INDEX(0x10);

LCD_ILI9488_CMD(0xC1);

LCD_ILI9488_INDEX(0x41);


LCD_ILI9488_CMD(0xC5);

LCD_ILI9488_INDEX(0x00);

LCD_ILI9488_INDEX(0x20);

LCD_ILI9488_INDEX(0xd0);


LCD_ILI9488_CMD(0x36);

LCD_ILI9488_INDEX(0x48);


LCD_ILI9488_CMD(0x3A); //Interface Mode Control

LCD_ILI9488_INDEX(0x60);



LCD_ILI9488_CMD(0XB0); //Interface Mode Control

LCD_ILI9488_INDEX(0x08);

LCD_ILI9488_CMD(0xB1); //Frame rate 60HZ

LCD_ILI9488_INDEX(0xA0);

LCD_ILI9488_INDEX(0x11);

LCD_ILI9488_CMD(0xB4);

LCD_ILI9488_INDEX(0x02);

LCD_ILI9488_CMD(0xB6); //RGB/MCU Interface Control

……………………




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式