⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 md130驱动程序.c

📁 TFTLCD(驱动加资料) TFTLCD(驱动加资料)大大的好
💻 C
字号:
			   ------		
	VCC	22	--|	 |--1	GND
	VCC	21	--|	 |--2	GND
	VCC	20	--|	 |--3	GND	
	VCCIO	19	--|	 |--4	#RST
	VCCIO	18	--|	 |--5	NC
	D0	17	--|	 |--6	#RD
	D1	16	--|	 |--7	#WR
	D2	15	--|	 |--8	#CS
	D3	14	--|	 |--9	RS
	D4	13	--|	 |--10	D7
	D5	12	--|	 |--11	D6
			   ------
VCC	:2.6~3.3V
VCCIO	:1.6~3.3V


#define uchar unsigned char
#define uint unsigned int

/*
sbit LCD_RS		= P3^4;
sbit LCD_CS		= P3^3;
sbit LCD_WR		= P3^2;
sbit LCD_RD		= P3^1;
sbit LCD_RST	= P3^0;


sbit LCD_CS		= P3^3;//P3^3;
sbit LCD_WR		= P3^7;//P3^7;
sbit LCD_RS		= P3^4;
sbit LCD_RD		= P3^5;
sbit LCD_RST	= P2^7;

*/
sbit LCD_CS		= P2^4;
sbit LCD_WR		= P3^5;
sbit LCD_RS		= P2^5;
sbit LCD_RD		= P3^4;
sbit LCD_RST	= P0^1;

#define DATA P1

void MUC_Init();
void LCD_Init();
void LCD_WR_REG(uchar index);
void LCD_WR_CMD(uchar dbw,uchar index,uint val);

void LCD_WR_Data(uint val);
void LCD_test();
void LCD_clear(uint p);

uint color[]={0xf800,0x07e0,0x001f,0xffe0,0x0000,0xffff,0x07ff,0xf81f};
extern unsigned char code gImage_qqp[];
void delay_us(uint t)
{
	t+=170;
	while(--t);
}

void delay_ms(uint t)
{
	uchar i,j;
	while(--t)
	{
		j=8;
		while(--j)
			while(--i);
	}
}


 
void MUC_Init()
 {
//	P1M0 = 0x00;
//	P1M1 = 0xFF;
//	P2M0 = 0x00;
//	P2M1 = 0xFF;
//	P3M0 = 0x00;
//	P3M1 = 0xFF;
    P1=0xff;
   	P2=0xff;
   	P3=0xff;
}

//写寄存器地址函数
void LCD_WR_REG(uchar index)
{
//	delay_us(10);
	LCD_RS = 0;
	_nop_();
	_nop_();
	LCD_CS = 0;
	_nop_();
	_nop_();
	DATA = index;
	_nop_();
	_nop_();
	LCD_WR = 0;
	_nop_();
	_nop_();
	LCD_WR = 1;
	_nop_();
	_nop_();
	LCD_CS = 1;
	_nop_();
	_nop_();
	LCD_RS = 0;
}

//写8位数据函数
void LCD_WR_DATA8(uchar pd)
{
//	delay_us(10);

	LCD_RS = 1;
	_nop_();
	_nop_();
	LCD_CS = 0;
	_nop_();
	_nop_();
	DATA = pd;
	_nop_();
	_nop_();
	LCD_WR = 0;
	_nop_();
	_nop_();
	LCD_WR = 1;
	_nop_();
	_nop_();
	LCD_CS = 1;
	_nop_();
	_nop_();
	LCD_RS = 0;
}

//写寄存器数据函数
//输入:dbw 数据位数,1为16位,0为8位。
void LCD_WR_CMD(uchar dbw,uchar index,uint val)
{
	LCD_RS = 0;
	_nop_();
	_nop_();
	LCD_CS = 0;
	_nop_();
	_nop_();
	DATA = index;
	_nop_();
	_nop_();
	LCD_WR = 0;
	_nop_();
	_nop_();
	LCD_WR = 1;
	_nop_();
	_nop_();
	LCD_CS = 1;
	_nop_();
	_nop_();
	LCD_RS = 0;

	delay_us(1);

	if(dbw)
	{
		LCD_RS = 1;
		_nop_();
		_nop_();
		LCD_CS = 0;
		_nop_();
		_nop_();
		DATA = (uchar)(val>>8);
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		LCD_WR = 0;
		_nop_();
		_nop_();
		LCD_WR = 1;
		_nop_();
		_nop_();
		LCD_CS = 1;
		_nop_();
		_nop_();
		LCD_RS = 0;
	}
	delay_us(1);

	LCD_RS = 1;
	_nop_();
	_nop_();
	LCD_CS = 0;
	_nop_();
	_nop_();
	DATA = (uchar)val;
	_nop_();
	_nop_();
	LCD_WR = 0;
	_nop_();
	_nop_();
	LCD_WR = 1;
	_nop_();
	_nop_();
	LCD_CS = 1;
	_nop_();
	_nop_();
	LCD_RS = 0;
}

//读16位寄存器数据函数
//输入:index 寄存器地址
//输出:
unsigned int LCD_RD_REG16(uchar index)
{
	unsigned int pd;

	LCD_RS = 0;
	_nop_();
	_nop_();
	LCD_CS = 0;
	_nop_();
	_nop_();
	DATA = index;
	_nop_();
	_nop_();
	LCD_WR = 0;
	_nop_();
	_nop_();
	LCD_WR = 1;
	_nop_();
	_nop_();
	LCD_CS = 1;
	_nop_();
	_nop_();
	LCD_RS = 0;
	_nop_();
	_nop_();

	LCD_RS = 1;
	_nop_();
	_nop_();
	LCD_CS = 0;
	OEB = 0x00;
	DATA = 0xFF;
	LCD_RD = 0;
	_nop_();
	_nop_();
	LCD_RD = 1;
	pd = DATA;
	LCD_CS = 1;
	LCD_RS = 0;
	
	pd = pd<<8;

	LCD_RS = 1;
	_nop_();
	_nop_();
	LCD_CS = 0;
	_nop_();
	_nop_();
	LCD_RD = 0;
	_nop_();
	_nop_();
	LCD_RD = 1;
	pd = pd + DATA;
	LCD_CS = 1;
	LCD_RS = 0;
	return pd;
}

//写16位数据函数
void LCD_WR_Data(uint val)
{
	_nop_();
	_nop_();
	LCD_RS = 1;
	_nop_();
	_nop_();
	LCD_CS = 0;

	DATA = (uchar)(val>>8);
	_nop_();
	_nop_();
	LCD_WR = 0;
	_nop_();
	_nop_();
	LCD_WR = 1;
	LCD_CS = 1;
	LCD_RS = 0;

	LCD_RS = 1;
	LCD_CS = 0;
	_nop_();
	_nop_();
	DATA = (uchar)val;
	_nop_();
	_nop_();
	LCD_WR = 0;
	_nop_();
	_nop_();
	LCD_WR = 1;
	_nop_();
	_nop_();
	LCD_CS = 1;
	_nop_();
	_nop_();

	LCD_RS = 0;
	_nop_();
	//delay_us(10);
}

//初始化函数
void LCD_Init()
{
	LCD_RST = 0;
	delay_ms(200);
	LCD_RST = 1;
	delay_ms(200);

	//initializing funciton 1
	delay_us(10);
	LCD_WR_REG(0xA1);
	delay_us(16);
	LCD_WR_DATA8(0x00);
	delay_us(90);
	LCD_WR_REG(0xA0);
	delay_us(10);
	LCD_WR_DATA8(0x00);
	delay_us(10);
	LCD_WR_CMD(0,0x70,0xC8);

	delay_ms(20);
	
	LCD_WR_CMD(0,0x72,0xA3);
	delay_us(10);
	LCD_WR_CMD(0,0x73,0x04);
	delay_us(10);
	LCD_WR_CMD(0,0x75,0x45);
	delay_us(10);
	LCD_WR_CMD(0,0x76,0x23);
	delay_us(10);
	LCD_WR_CMD(0,0x77,0x08);
	delay_us(10);
	LCD_WR_CMD(0,0x78,0x08);
	delay_us(10);
	LCD_WR_CMD(0,0x79,0x00);
	delay_us(10);
	LCD_WR_CMD(0,0x7F,0xF0);
	delay_us(10);

	LCD_WR_CMD(0,0x71,0x81);	//

	delay_ms(2);

	LCD_WR_CMD(0,0x0D,0x23);
	delay_us(10);
	LCD_WR_CMD(0,0x11,0x00);
	delay_us(10);
	LCD_WR_CMD(0,0x12,0x00);
	delay_us(10);
	LCD_WR_CMD(0,0x21,0x37);
	delay_us(10);
	LCD_WR_CMD(0,0x22,0x02);
	delay_us(10);
	LCD_WR_CMD(0,0x23,0x24);
	delay_us(10);
	delay_us(10);
	LCD_WR_CMD(0,0x24,0x13);
	delay_us(10);
	LCD_WR_CMD(0,0x25,0x0A);
	delay_us(10);
	LCD_WR_CMD(0,0x26,0x82);
	delay_us(10);
	LCD_WR_CMD(0,0x27,0x01);
	delay_us(10);
	LCD_WR_CMD(0,0x1E,0x25);
	delay_us(10);
	LCD_WR_CMD(0,0x1F,0x59);
	delay_us(10);

	//GAMMA设置
	LCD_WR_CMD(1,0x30,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x31,0x0444);
	delay_us(10);
	LCD_WR_CMD(1,0x32,0x0555);
	delay_us(10);
	LCD_WR_CMD(1,0x33,0x0444);
	delay_us(10);
	LCD_WR_CMD(1,0x34,0x0333);
	delay_us(10);
	LCD_WR_CMD(1,0x35,0x0333);
	delay_us(10);
	LCD_WR_CMD(1,0x36,0x0333);
	delay_us(10);
	LCD_WR_CMD(1,0x37,0x0333);
	delay_us(10);
	LCD_WR_CMD(1,0x38,0x0444);
	delay_us(10);
	LCD_WR_CMD(1,0x39,0x0555);
	delay_us(10);
	LCD_WR_CMD(1,0x3A,0x0666);
	delay_us(10);
	LCD_WR_CMD(1,0x3B,0x0666);
	delay_us(10);
	LCD_WR_CMD(1,0x3C,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x3D,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x3E,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x3F,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x40,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x41,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x42,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x43,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x44,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x45,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x46,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x47,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x48,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x49,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x4A,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x4B,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x4C,0x0777);
	delay_us(10);
	LCD_WR_CMD(1,0x4D,0x0666);
	delay_us(10);
	LCD_WR_CMD(1,0x4E,0x0666);
	delay_us(10);
	LCD_WR_CMD(1,0x4F,0x0666);

	delay_us(400);

	LCD_WR_CMD(0,0x00,0x04);	//扫描方向控制
	delay_us(10);
	LCD_WR_CMD(0,0x01,0x07);	//扫描方向控制
	delay_us(10);

	LCD_WR_CMD(0,0x02,0x00);	//X
	LCD_WR_CMD(1,0x03,0x0000);	//Y

	//面板大小设置
	LCD_WR_CMD(0,0x04,0xEF);	//结束列数(0~239)	
	LCD_WR_CMD(1,0x05,0x013F);	//结束行数(0~319)

	//窗口设置
	LCD_WR_CMD(0,0x06,0x00);	//水平起始位置
	LCD_WR_CMD(1,0x07,0x0000);	//垂直起始位置
	LCD_WR_CMD(0,0x08,0xEF);	//水平结束位置
	LCD_WR_CMD(1,0x09,0x013F);	//垂直结束位置

	delay_us(10);
	LCD_WR_CMD(0,0x0A,0x00);
	delay_us(10);
	LCD_WR_CMD(0,0x0B,0x00);
	delay_us(10);
	LCD_WR_CMD(0,0x0C,0x00);
	delay_us(10);
	LCD_WR_CMD(0,0x14,0x00);
	delay_us(10);
	LCD_WR_CMD(0,0x15,0x00);
	delay_us(10);
	LCD_WR_CMD(0,0x16,0x00);
	delay_us(10);
	LCD_WR_CMD(1,0x17,0x01FF);
	delay_us(10);
	LCD_WR_CMD(1,0x18,0x01FF);
	delay_us(10);	
	LCD_WR_CMD(0,0x13,0x00);
	delay_us(10);
	LCD_WR_CMD(1,0x19,0x01FF);
	delay_us(10);
	LCD_WR_CMD(1,0x1B,0x01FF);
	delay_us(10);
	LCD_WR_CMD(1,0x1C,0x01FF);
	delay_us(10);
	LCD_WR_CMD(1,0x1A,0x01FF);	
	delay_us(10);
	LCD_WR_CMD(0,0x1D,0x0E);
	delay_us(10);
	LCD_WR_CMD(0,0x10,0x06);		//开显示
	LCD_WR_REG(0x0E);
	delay_us(100);
}

//演示程序
void LCD_test()
{
	uint temp,num;
	unsigned int *p; 
	uchar n,c,g;
	LCD_WR_CMD(0,0x00,0x04);
	LCD_WR_CMD(0,0x01,0x07);
	LCD_WR_CMD(0,0x02,0x00);
	LCD_WR_CMD(1,0x03,0x0000);
	LCD_WR_CMD(0,0x04,0xEF);
	LCD_WR_CMD(1,0x05,0x013F);
	LCD_WR_CMD(0,0x06,0x00);
	LCD_WR_CMD(1,0x07,0x0000);
	LCD_WR_CMD(0,0x08,0xEF);
	LCD_WR_CMD(1,0x09,0x013F);	
	LCD_WR_CMD(0,0x2,0);        //0-239
	LCD_WR_CMD(1,0x3,0);        //0-319
	//显示彩条	
	LCD_WR_REG(0x0E);
	for(n=0;n<8;n++)
	 {
	    temp=color[n];
		for(num=40*240;num>0;num--)
		  LCD_WR_Data(temp);
	 }
	delay_ms(1000);

	//显示单色彩色
	for(c=0;c<8;c++)
	{
		temp = color[c];
		LCD_WR_CMD(0,0x2,0);        //0-239
		LCD_WR_CMD(1,0x3,0);        //0-319
		
		LCD_WR_REG(0x0E);
		for(n=0;n<240;n++)
		{
			for(num=0;num<320;num++)
			  LCD_WR_Data(temp);
	 	}
   		delay_ms(1000);
	}
	//显示小QQ图标
   	for(g=0;g<8;g++)
	{
		for(c=0;c<6;c++)
		{
			LCD_WR_CMD(0,0x02,c*40);
			LCD_WR_CMD(1,0x03,g*40);
			LCD_WR_CMD(0,0x04,c*40+39);
			LCD_WR_CMD(1,0x05,g*40+39);

			LCD_WR_CMD(0,0x06,c*40);
			LCD_WR_CMD(1,0x07,g*40);
			LCD_WR_CMD(0,0x08,c*40+0x39);
			LCD_WR_CMD(1,0x09,g*40+0x39);
	
			LCD_WR_CMD(0,0x2,c*40);        //0-239
			LCD_WR_CMD(1,0x3,g*40);        //0-319
			LCD_WR_REG(0x0E);
			p = gImage_qqp;
   			for(num=0;num<1600;num++)	//
			{		
				LCD_WR_Data(*p++);
				delay_us(40);
			}
	 	}
  	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -