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

📄 tftdriver.c

📁 单片机直接驱动TFT液晶显示320x240图像不需要lcd驱动IC
💻 C
字号:
/*------------------------------------------------------------------------------
//	TFTdriver.C
//
//  TFT LCD: CASIO CMD777
//  Min flash rate : 50Hz
//
------------------------------------------------------------------------------*/
#include "Main.h"
#include "TFTdriver.h"
#include "Delay.h"

extern unsigned char *Bmp_Buffer;

void Test_TFT_Lcd(void)
{
    unsigned int i;
	unsigned char value;
	
 	Init_TFT_Port();

	CLR_FLM_FP();
	CLR_CL1_LP();
	CLR_CL2_CP();
	delay_1ms();

  	while(1)
   	{  
//		TFT_clear_screen(0x00249249); // 0 is off,1 is on											  
		TFT_show_screen(Bmp_Buffer);
    }
}

void Init_TFT_Port(void)
{
	//TFT LCD PORT INIT
	DDRD = 0xFF;		//PORTD output for TFT LCD control signal
	DDRB = 0xFF;		//PORTB output for TFT LCD data signal	  

	SET_C_VLCD_VCCFL();
	SET_DISPLAY_ON_OFF();
}

///////////////////////////////////////////////////////////////////////////////
//图形化处理
///////////////////////////////////////////////////////////////////////////////
//用固定颜色清除整屏
void TFT_clear_screen(unsigned long color)
{  
	unsigned char i,j;
	unsigned char a,b,c;

	SET_FLM_FP();				// Start-up signal
	a=(color&0xFF0000)>>16;
	b=(color&0xFF00)>>8;
	c=color&0xFF;
	delay_500us();
	delay_200us();
	j=40;
	do							// 320*3/8 = 120/3 =40
	{
		PORTB=a;
		SET_CL2_CP();
		NOP();
		CLR_CL2_CP();			// CL2大于500ns
		NOP();
		PORTB=b;
		SET_CL2_CP();
		NOP();
		CLR_CL2_CP();			// CL2大于500ns
		NOP();
		PORTB=c;
		SET_CL2_CP();
		j--;
		NOP();
		CLR_CL2_CP();			// CL2大于500ns
	}while(j);
	SET_CL1_LP();
	CLR_CL1_LP();	 			// CL1大于150ns
    CLR_FLM_FP();
	for (i=1;i<=240;i++)
	{
		j=40;
		do						// 320*3/8 = 120/3 = 40
		{
			PORTB=a;
			SET_CL2_CP();
			NOP();
			CLR_CL2_CP();		// CL2大于500ns
			NOP();
			PORTB=b;
			SET_CL2_CP();
			NOP();
			CLR_CL2_CP();		// CL2大于500ns
			NOP();
			PORTB=c;
			SET_CL2_CP();
			j--;
			NOP();
			CLR_CL2_CP();		// CL2大于500ns
		}while(j);
		SET_CL1_LP();
		CLR_CL1_LP();
	}
}

//整屏显示图像
void TFT_show_screen(unsigned char *buff)
{  
	unsigned char i,j;
	unsigned int k=0;

	SET_FLM_FP();
	delay_500us();
	delay_200us();
	j=0;
	do 
	{
		PORTB=*(buff+k);
		SET_CL2_CP();
		k++;
		CLR_CL2_CP();
		j++;
	}while(j<120);	  	  	  // 320*3/8 = 120
	SET_CL1_LP();
	CLR_CL1_LP();
   	CLR_FLM_FP();
	for (i=1;i<=240;i++)
	{
		j=0;
		do 
		{
			PORTB=*(buff+k);
			SET_CL2_CP();
			k++;
			CLR_CL2_CP();
			j++;
		}while(j<120);	   	  // 320*3/8 = 120
		SET_CL1_LP();
		CLR_CL1_LP();
	}
}

⌨️ 快捷键说明

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