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

📄 lcd.c

📁 用51模拟的TFT RGB接口驱动程序(HS,VS,DE,PCLK时序)
💻 C
字号:

/****************************************************************************
* 公司名称:SITRONIX         										        *
* 模块名称:LCD.C			                                			    *
* 模块功能:IC与板子之间的接口函数,可以按需要作移植修改         			*
* 创建人员:Jim Yuan															*
* 创建日期:2007-6-26														*
* 修改日期:2007-7-5 														*
****************************************************************************/

#include "lcd.h"
#include "interface.h"

#define	PANEL_X_PIXEL	240
#define PANEL_Y_PIXEL	320
#define PANEL_X_SHIFT	0
#define PANEL_Y_SHIFT	0

/****************************************************************************
* 函数名称:disp_area							    				        *
* 函数功能:设置显示区域在RAM中的范围和位置       						    *
* 入口参数:x      LCM上的X坐标,从0开始                                      *	  
*		   y      LCM上的Y坐标,从0开始	                 	                *
*          width  LCM上显示区域的宽度                                       *
*          height LCM上显示区域的高度                                       *              
* 出口参数:FALSE设置失败/TRUE设置成功						     			*
* 创建日期:2007-6-8															*
* 修改日期:2007-6-26														*
* 修改原因:增加函数返回值                       							*
****************************************************************************/
uint8 disp_area(uint16 x, uint16 y, uint16 width, uint16 height)
{   
    if ((x + width) > PANEL_X_PIXEL){return FALSE;}
    if ((y + height) > PANEL_Y_PIXEL){return FALSE;}
    writec(0x2A);               //column range
    writed(0x00);  				//start
	writed(x + PANEL_X_SHIFT);             
    writed(0x00);		 		//end
	writed(x + PANEL_X_SHIFT + width - 1); 
	 
    writec(0x2B);
	writed(((y + PANEL_Y_SHIFT) >> 8) & 0x0f);				//page range
    writed((y + PANEL_Y_SHIFT) & 0xff);              //start
    writed(((y + PANEL_Y_SHIFT + height -1 ) >> 8) & 0x0f);   
    writed((y + PANEL_Y_SHIFT + height - 1) & 0xff); //end

    writec(0x2C);
    return TRUE;
}

void init(void)
{	
	writec(0x11);//sleep out
	delay(30);
	writec(0xb0);
	writed(0x00);//0xc

	writec(0xB1);//set frame rate control(normal mode/full colors)  
  	writed(0x23);
  	writed(0x10);
    writed(0x10);

	writec(0xB2);//set frame rate control(idle mode/8-colors)  
  	writed(0x23);
  	writed(0x10);
    writed(0x10);

	writec(0xB3);//set frame rate control(partial mode/full-colors)  
  	writed(0x3e);
  	writed(0x02);
    writed(0x02);
  	writed(0x3e);
  	writed(0x02);
    writed(0x02);
	
	writec(0xB6);//set behavior of source output at porch area  
  	writed(0x02);
  	writed(0x04);

	writec(0xBC);//turn off the VSYNC funtion 
  	writed(0x02);
  	writed(0x04);

	writec(0xC0);//set power system  
  	writed(0x00);

  	writec(0xC1);//set power system  
  	writed(0xbb);
  	writed(0x00);

	writec(0xC2);  
  	writed(0x01);
  	writed(0xD6);
  	writed(0x85);
  	writed(0x30);
  	writed(0x05);

	writec(0xC3);  
  	writed(0x01);
  	writed(0x33);
  	writed(0x01);
  	writed(0x00);
  	writed(0x00);

   	writec(0xC4);  
  	writed(0x01);
  	writed(0xB3);
  	writed(0x03);
  	writed(0x00);
  	writed(0x00);

	writec(0xC5);
	writed(0x80);  
  	writed(0x22);
  	writed(0x14);

  	writec(0xC6);//set vcomAC level  
  	writed(0x18);
  	writed(0x28);

  	writec(0xF4);//set timing for sram  
  	writed(0xFF);
  	writed(0x3F);

  	writec(0xFB);//set equalize mode of source output  
  	writed(0x7F);
	writec(0x36);
	writed(0xC0);

	writec(0x20);

	writec(0x3A);
	writed(0x55);

	writec(0x29);//display on
}


void delay(uint8 tt)
{
	system_delay_lcd(tt);
}
void disp_pattern(uint8 dat1, uint8 dat2)
{
	uint32 i;
	uint32 x,y;
	x = PANEL_X_PIXEL;
	y = PANEL_Y_PIXEL;
	x = x * y;
	disp_area(0, 0, PANEL_X_PIXEL, PANEL_Y_PIXEL);
	for(i = 0; i < x; i++)
	{
		writed(dat1);
		writed(dat2);	
	}
}
void disp_data(uint8 dat)
{
	writed(dat);
}
void disp_flash(uint8 rom, uint32 address)
{
	uint32 i,w,h;
	w = PANEL_X_PIXEL;
	h = PANEL_Y_PIXEL;
	i = w * h;
	if (disp_area(0, 0, PANEL_X_PIXEL, PANEL_Y_PIXEL) == FALSE){return;}
    flash_data_out(rom, address, i);
}
void disp_hex(uint16 row, uint16 column, uint8 hex)
{
    print_hex(row, column, hex);
}
void disp_string(uint16 row, uint16 column, uint8 *str)
{
    print_string(row, column, str);
}
void disp_key_test(uint16 row, uint16 column)
{
	disp_string(row, column, "KEY TEST:");
	disp_hex(row, column + 9, key_test());
}

⌨️ 快捷键说明

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