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

📄 ssd1289_eio1.c

📁 此案例为ARM2131+flash+QVGAtft+按键的读写显示控制程序
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Beijing Visionox Technology Co.,LTD.
**                                      
**                                 
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2007-03-09
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Alan Dong
** Created date:		2007-03-08
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "KEY_LED.h"
#include "TFT_LCD.h"


/*******************************************************************************************************/
//Delay sevral ms
void DelayNS(uint32 dly)	//dly=1,delay 10ms									
{	uint32 i;
	
	for(;dly>0;dly--)
		for(i=0;i<50000;i++);
}
/*void WaitKey1(void)
{
	uint32 i;
	while(1)
	{
		while()
	}
}*/
//Write Command
void Write_cmd(uint32 cmd)
{
	IO0CLR=TFT_RS;				//This is function 	for CMD
	IO0SET=TFT_WR;				//Pull up the WR sign
	IO0PIN=(IO0PIN&0xFF00FFFF)|((cmd&0x0000FF00)<<8);
	IO1PIN=(IO1PIN&0xFF00FFFF)|((cmd&0x000000FF)<<16);
	IO0CLR=TFT_WR;

}
//Write Data
void Write_data(uint32 data)
{
	IO0SET=TFT_RS;
	IO0SET=TFT_WR;
	IO0PIN=(IO0PIN&0xFF00FFFF)|((data&0x0000FF00)<<8);
	IO1PIN=(IO1PIN&0xFF00FFFF)|((data&0x000000FF)<<16);
	IO0CLR=TFT_WR;
	
}

//Display the last picture
void DisLastP(void)
{

}
//Display the next picture
void DisNextP(void)
{

}
//All Display ON
void DisplayOn(void)
{	uint32	i;
	Write_cmd(0x22);			//WRITE TO RAM
	for(i=0;i<76800;i++)
	Write_data(0x0000);			//RED
}
//All Display OFF
void DisplayOff(void)
{

}
//Display RGB
void DisplayRGB(void)
{	uint32 i;
	Write_cmd(0x22);			//WRITE TO RAM
	for(i=0;i<25600;i++)
	Write_data(0x07FF);			//RED
	for(i=0;i<25600;i++)
	Write_data(0xF81F);			//GREEN
	for(i=0;i<25600;i++)
	Write_data(0xFFE0);			//BLUE

}
void DisplayRed(void)
{	uint32 i; 
	Write_cmd(0x22);			//WRITE TO RAM
	for(i=0;i<76800;i++)
	Write_data((0x07FF)|((i/2400)<<11));			//RED
}
void DisplayGreen(void)
{	uint32 i;
	Write_cmd(0x22);			//WRITE TO RAM
	for(i=0;i<76800;i++)
	Write_data((0xF81F)|((i/1200)<<5));			//GREEN
}
void DisplayBlue(void)
{	uint32 i;
	Write_cmd(0x22);			//WRITE TO RAM
	for(i=0;i<76800;i++)
	Write_data((0xFFE0)|(i/2400));			//BLUE
}
//Display package
void DisplayPack(int i)
{
	
	switch(i)
	{
	case 0:
		DisplayOn();
		break;
	case 1:
		DisplayRed();
		break;
	case 2:
		DisplayGreen();
		break;
	case 3:
		DisplayBlue();
		break;
	default:
		break;	
	}
}

//TFT_LCD int
void TFT_Int(void)
{
	//int i;
	IO0CLR=TFT_RES;
	IO0CLR=TFT_CS;				//Active the TFT IC
	//IO0CLR=TFT_RES;
	IO0SET=TFT_RS;				//Initial the RS sign
	IO0SET=TFT_RD;				//Pull up the RD sign
	IO0SET=TFT_WR;				//Initial the RS sign
	DelayNS(10);				//Delay 100ms
	IO0SET=TFT_RES;
	//initial code
	Write_cmd(0x10);			//Oscillation Start
	Write_data(0x0000);			
	DelayNS(1);				//Delay 100ms
	Write_cmd(0x00);			//Oscillation Start
	Write_data(0x0001);			
	Write_cmd(0x01);			//Output Control
	Write_data(0x2B3F);
	Write_cmd(0x10);			//Sleep Mode
	Write_data(0x0000);
	Write_cmd(0x07);			//Display Control
	Write_data(0x0033);
	Write_cmd(0x11);			//Entry mode
	Write_data(0x6830);
	Write_cmd(0x02);			//LCD driver AC control
	Write_data(0x0600);
	Write_cmd(0x03);			//Power Control
	Write_data(0x046E);
	Write_cmd(0x0D);			//Power Control
	Write_data(0x0008);
	Write_cmd(0x0E);			//Power Control
	Write_data(0x3300);
	Write_cmd(0x25);			//Frame	Frequency
	Write_data(0xE000);
	Write_cmd(0x0B);			//Frame cycle control
	Write_data(0x5333);
	Write_cmd(0x17);			//Vertical porch
	Write_data(0x1B1B);
	Write_cmd(0x1E);			//Power control
	Write_data(0x009B);
	Write_cmd(0x0F);			//Gate scan start
	Write_data(0x0000);
	Write_cmd(0x041);			//Vertical scroll
	Write_data(0x0000);
	Write_cmd(0x42);			//Vertical scroll
	Write_data(0x0000);
	Write_cmd(0x44);			//Horizontal scroll
	Write_data(0xEF00);
	Write_cmd(0x45);			//Vertical ram adress start
	Write_data(0x0000);
	Write_cmd(0x46);			//Vertical ram adress end
	Write_data(0x013F);
	Write_cmd(0x48);			//First window start
	Write_data(0x0000);
	Write_cmd(0x49);			//First window end
	Write_data(0x013F);
	Write_cmd(0x4A);			//Second window start
	Write_data(0x0000);
	Write_cmd(0x4B);			//Second window end
	Write_data(0x0000);
	//GammaSet
	Write_cmd(0x30);
	Write_data(0x0100);
	Write_cmd(0x31);
	Write_data(0x0707);
	Write_cmd(0x32);
	Write_data(0x0707);
	Write_cmd(0x33);
	Write_data(0x0200);
	Write_cmd(0x34);
	Write_data(0x0000);
	Write_cmd(0x35);
	Write_data(0x0000);
	Write_cmd(0x36);
	Write_data(0x0706);
	Write_cmd(0x37);
	Write_data(0x0002);
	Write_cmd(0x3A);
	Write_data(0x1E00);
	Write_cmd(0x3B);
	Write_data(0x000F);
	
	
	

}

/*******************************************************************************************************/
/*******************************************************************************************************/
int main (void)
{// add user source code 
	
	//int i;
	
	PINSEL0=0x00000000;											//P0[31:0]  used as GPIO
	PINSEL1=0x00000000;											//P0[31:0]  used as GPIO
	PINSEL2=PINSEL2&(~0x08);									//P1[25:16] used as GPIO
	
	//IO0DIR=LED_BL;											//LED_BL 	used as OUTPUT PIN
	//IO1DIR=LED_FLASH;											//LED_FLASH used as OUTPUT PIN
	IO0DIR=0xFFFFFD7F;											//P0	used as OUTPUT but p0.7&p0.9
	IO1DIR=TFT_DL|LED_FLASH;

	TFT_Int();
	IO0SET=LED_BL;
	//DisplayOn();
	DisplayRGB();
	
//*																//THIS while used to test the hardward
	while(1)													
	{
		if((IO0PIN&KEY_UP)==0)
		{
			IO0SET=LED_BL;
			IO1CLR=LED_FLASH;
//			for(j=0;j<50000;j++);
//			if((IO0PIN&KEY_UP)==0)
			//while((IO0PIN&KEY_UP)==0);
			//DisplayPack(i++);
			

		}else if((IO0PIN&KEY_DOWN)==0){
			IO0SET=LED_BL;
			IO1SET=LED_FLASH;
			//while((IO0PIN&KEY_DOWN)==0);
			//DisplayPack(i--);
			
		}
		//if(i>3)	i=0;
		//if(i<0)	i=3;
	}
//*/
	
	
		
    return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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