屏厂原始驱动
📎 原始文档:https://www.kdocs.cn/l/cb2BSLm01ZZP 屏厂原始驱动
#include "c8051F340.h"
#include <intrins.h>
#include <absacc.h>
#include <main.h>
#include <lcd\lcd.h>
/**********************************************************
函数名:SendDataSPI
功能:SPI写数据,发送一个字节
**********************************************************/
void SendDataSPI(unsigned char dat)
{
unsigned char i;
for(i=0; i<8; i++)
{
if(dat&0x80) SDA = 1;
else SDA = 0;
dat <<= 1;
SCL = 0;
SCL = 1;
}
}
/**********************************************************
函数名:WriteComm
功能:4线8位SPI发送命令
**********************************************************/
void WriteComm(unsigned int i)
{
CS0 = 0;
RS = 0;
SendDataSPI(i);
CS0 = 1;
}
/**********************************************************
函数名:SPI_WriteComm
功能:4线8位SPI发送参数
**********************************************************/
void WriteData(unsigned int i)
{
CS0 = 0;
RS = 1;
SendDataSPI(i);
CS0 = 1;
}
/*********************************************************
函数名:LCD_Init
功能:LCD driver IC inital code
**********************************************************/
#define SPI_WriteComm WriteComm
#define SPI_WriteData WriteData
void LCD_Init(void)
{
RST=1;
Delay(20);
RST=0;
Delay(20);
RST=1;
Delay(120);
SPI_WriteComm(0xFE);
SPI_WriteComm(0xEF);
SPI_WriteComm(0xEB);
SPI_WriteData(0x14);
SPI_WriteComm(0x84);
SPI_WriteData(0x40);
SPI_WriteComm(0x85);
SPI_WriteData(0xFF);
SPI_WriteComm(0x86);
SPI_WriteData(0xFF);
SPI_WriteComm(0x87);
SPI_WriteData(0xFF);
SPI_WriteComm(0x8E);
SPI_WriteData(0xFF);
SPI_WriteComm(0x8F);
SPI_WriteData(0xFF);
SPI_WriteComm(0x88);
SPI_WriteData(0x0A);
SPI_WriteComm(0x89);
SPI_WriteData(0x21);
SPI_WriteComm(0x8A);
SPI_WriteData(0x00);
SPI_WriteComm(0x8B);
SPI_WriteData(0x80);
SPI_WriteComm(0x8C);
SPI_WriteData(0x01);
SPI_WriteComm(0x8D);
SPI_WriteData(0x01);
SPI_WriteComm(0xB6);
SPI_WriteData(0x00);
SPI_WriteData(0x20);
SPI_WriteComm(0x36);
SPI_WriteData(0x48);
SPI_WriteComm(0x3A);
SPI_WriteData(0x05);
SPI_WriteComm(0x90);
SPI_WriteData(0x08);
SPI_WriteData(0x08);
SPI_WriteData(0x08);
SPI_WriteData(0x08);
SPI_WriteComm(0xBD);
SPI_WriteData(0x06);
SPI_WriteComm(0xBC);
SPI_WriteData(0x00);
SPI_WriteComm(0xFF);
SPI_WriteData(0x60);
SPI_WriteData(0x01);
SPI_WriteData(0x04);
SPI_WriteComm(0xC3);
SPI_WriteData(0x13);
SPI_WriteComm(0xC4);
SPI_WriteData(0x13);
SPI_WriteComm(0xC9);
SPI_WriteData(0x22);
SPI_WriteComm(0xBE);
SPI_WriteData(0x11);
SPI_WriteComm(0xE1);
SPI_WriteData(0x10);
SPI_WriteData(0x0E);
SPI_WriteComm(0xDF);
SPI_WriteData(0x21);
SPI_WriteData(0x0c);
SPI_WriteData(0x02);
SPI_WriteComm(0xF0);
SPI_WriteData(0x45);
SPI_WriteData(0x09);
SPI_WriteData(0x08);
SPI_WriteData(0x08);
SPI_WriteData(0x26);
SPI_WriteData(0x2A);
SPI_WriteComm(0xF1);
SPI_WriteData(0x43);
SPI_WriteData(0x70);
SPI_WriteData(0x72);
SPI_WriteData(0x36);
SPI_WriteData(0x37);
SPI_WriteData(0x6F);
SPI_WriteComm(0xF2);
SPI_WriteData(0x45);
SPI_WriteData(0x09);
SPI_WriteData(0x08);
SPI_WriteData(0x08);
SPI_WriteData(0x26);
SPI_WriteData(0x2A);
SPI_WriteComm(0xF3);
SPI_WriteData(0x43);
SPI_WriteData(0x70);
SPI_WriteData(0x72);
SPI_WriteData(0x36);
SPI_WriteData(0x37);
SPI_WriteData(0x6F);
SPI_WriteComm(0xED);
SPI_WriteData(0x1B);
SPI_WriteData(0x0B);
SPI_WriteComm(0xAE);
SPI_WriteData(0x77);
SPI_WriteComm(0xCD);
SPI_WriteData(0x63);
SPI_WriteComm(0x70);
SPI_WriteData(0x07);
SPI_WriteData(0x07);
SPI_WriteData(0x04);
SPI_WriteData(0x0E);
SPI_WriteData(0x0F);
SPI_WriteData(0x09);
SPI_WriteData(0x07);
SPI_WriteData(0x08);
SPI_WriteData(0x03);
SPI_WriteComm(0xE8);
SPI_WriteData(0x34);
SPI_WriteComm(0x62);
SPI_WriteData(0x18);
SPI_WriteData(0x0D);
SPI_WriteData(0x71);
SPI_WriteData(0xED);
SPI_WriteData(0x70);
SPI_WriteData(0x70);
SPI_WriteData(0x18);
SPI_WriteData(0x0F);
SPI_WriteData(0x71);
SPI_WriteData(0xEF);
SPI_WriteData(0x70);
SPI_WriteData(0x70);
SPI_WriteComm(0x63);
SPI_WriteData(0x18);
SPI_WriteData(0x11);
SPI_WriteData(0x71);
SPI_WriteData(0xF1);
SPI_WriteData(0x70);
SPI_WriteData(0x70);
SPI_WriteData(0x18);
SPI_WriteData(0x13);
SPI_WriteData(0x71);
SPI_WriteData(0xF3);
SPI_WriteData(0x70);
SPI_WriteData(0x70);
SPI_WriteComm(0x64);
SPI_WriteData(0x28);
SPI_WriteData(0x29);
SPI_WriteData(0xF1);
SPI_WriteData(0x01);
SPI_WriteData(0xF1);
SPI_WriteData(0x00);
SPI_WriteData(0x07);
SPI_WriteComm(0x66);
SPI_WriteData(0x3C);
SPI_WriteData(0x00);
SPI_WriteData(0xCD);
SPI_WriteData(0x67);
SPI_WriteData(0x45);
SPI_WriteData(0x45);
SPI_WriteData(0x10);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteComm(0x67);
SPI_WriteData(0x00);
SPI_WriteData(0x3C);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x01);
SPI_WriteData(0x54);
SPI_WriteData(0x10);
SPI_WriteData(0x32);
SPI_WriteData(0x98);
SPI_WriteComm(0x74);
SPI_WriteData(0x10);
SPI_WriteData(0x85);
SPI_WriteData(0x80);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x4E);
SPI_WriteData(0x00);
SPI_WriteComm(0x98);
SPI_WriteData(0x3e);
SPI_WriteData(0x07);
SPI_WriteComm(0x35);
SPI_WriteData(0x00);
SPI_WriteComm(0x21);
Delay(120);
//--------end gamma setting--------------//
SPI_WriteComm(0x11);
Delay(320);
SPI_WriteComm(0x29);
Delay(120);
SPI_WriteComm(0x2C);
}
/**********************************************************
函数名:BlockWrite
功能:MCU/SPI接口设置显示窗口
**********************************************************/
void BlockWrite(unsigned int Xstart,unsigned int Xend,unsigned int Ystart,unsigned int Yend) reentrant
{
WriteComm(0x2A);
WriteData(Xstart>>8);
WriteData(Xstart);
WriteData(Xend>>8);
WriteData(Xend);
WriteComm(0x2B);
WriteData(Ystart>>8);
WriteData(Ystart);
WriteData(Yend>>8);
WriteData(Yend);
WriteComm(0x2c);
}