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

📄 ra8806.c

📁 Radio公司的最新控制器RA8806只要一条命令就可以实现硬件上90度的滚屏效果
💻 C
📖 第 1 页 / 共 4 页
字号:
/*******************************************************************************
*
*	Filename :	RA8806.c
*
*	Author :	Tony Kan
*	Author Date :	2007/08/21
*	Company :	RAiO Technology	Inc.
*	Case :		320 x 240
*	Device :	MXIC MX10E8050IQC at 18.432MHZ
*	Modifier :	
*	Modify Date :	
*	Visions : 	X
*	Compiled Using Keil C v7.50
*
*******************************************************************************/	

#include "RA8806.h"

//------------------------------------------------------------------------------
//Subroutine Declare
//------------------------------------------------------------------------------
extern void LCD_CmdWrite(uchar);
extern uchar LCD_CmdRead(void);
extern void LCD_DataWrite(uchar);
extern uchar LCD_DataRead(void);

//Delay Function
extern void Delay2us(uchar);
extern void Delay100us(uchar);
extern void Delay1ms(uchar);
extern void Delay10ms(uchar);
extern void Delay100ms(uchar);
/******************************************************************************/
/*Sub Program Area		  													  */
/******************************************************************************/
//==============================================================================
//Subroutine :	LCD_Reset
//Function:		
//==============================================================================
void LCD_Reset(void)
{
	bRST = 0;
 	Delay100ms(5);
	bRST = 1;
	Delay100ms(2);		
}

//==============================================================================
//Subroutine:	LCD_CmdWrite
//Function:		
//==============================================================================
void LCD_CmdWrite(uchar cmd)
{
//	LCD_ChkBusy();
#ifdef Parallel_8080
//	DATA_BUS = cmd;
	bCSZ = 0;
	bA0  = 1;
//	DATA_BUS = cmd;				
	bWRZ = 0;
	DATA_BUS = cmd;

//	Delay2us(3);
	bWRZ = 1;
//	bCSZ = 0;	
	bCSZ = 1;
	DATA_BUS = 0xff;				
#endif

#ifdef Parallel_8080_4bit
	bCSZ = 0;
	bA0  = 1;
	DATA_BUS = cmd >> 4;				
	bWRZ = 0;
	bWRZ = 1;
	bCSZ = 1;

	DATA_BUS = 0xff;
	bCSZ = 0;
	DATA_BUS = cmd & 0x0f;				
	bWRZ = 0;
	bWRZ = 1;		
	bCSZ = 1;
	DATA_BUS = 0xff;				
#endif

#ifdef Parallel_6800
	bCSZ = 0;
	bA0  = 1;						
	bWRZ = 0;			//R/W			
	DATA_BUS = cmd;					
	bRDZ = 1;			//EN			
	bRDZ = 0;
	bWRZ = 1;						
	bCSZ = 1;				
	DATA_BUS = 0xff;
#endif

#ifdef Parallel_6800_4bit
	bCSZ = 0;
	bA0  = 1;						
	bWRZ = 0;			//R/W			
	DATA_BUS = cmd >> 4;				
	bRDZ = 1;			//EN			
	bRDZ = 0;
	bWRZ = 1;						
	bCSZ = 1;				
	DATA_BUS = 0xff;

	bCSZ = 0;
	bA0  = 1;						
	bWRZ = 0;			//R/W			
	DATA_BUS = cmd & 0x0f;				
	bRDZ = 1;			//EN			
	bRDZ = 0;
	bWRZ = 1;						
	bCSZ = 1;				
	DATA_BUS = 0xff;
#endif

	bA0  = 0;
}

//==============================================================================
//Subroutine:	LCD_DataWrite
//Function:		
//==============================================================================
void LCD_DataWrite(uchar Data)
{
//	LCD_ChkBusy();
#ifdef Parallel_8080
//	DATA_BUS = Data;
	bCSZ = 0;
	bA0  = 0;
//	DATA_BUS = Data;
	bWRZ = 0;	
	DATA_BUS = Data;
	bWRZ = 1;	
//	bCSZ = 0;	
	bCSZ = 1;						
	DATA_BUS = 0xff;  				
#endif

#ifdef Parallel_8080_4bit
	bCSZ = 0;
	bA0  = 0;
	DATA_BUS = Data >> 4;				
	bWRZ = 0;						
	bWRZ = 1;
	bCSZ = 1;

	DATA_BUS = 0xff;
	bCSZ = 0;
	DATA_BUS = Data & 0x0f;				
	bWRZ = 0;						
	bWRZ = 1;						
	bCSZ = 1;						
	DATA_BUS = 0xff;  				
#endif

#ifdef Parallel_6800
	bCSZ = 0;
	bA0  = 0;
	DATA_BUS = Data;
	bWRZ = 0;				
	bRDZ = 1;						
	bRDZ = 0;						
	bWRZ = 1;						
	bCSZ = 1;						
	DATA_BUS = 0xff;
#endif	

#ifdef Parallel_6800_4bit
	bCSZ = 0;
	bA0  = 0;
	DATA_BUS = Data >> 4;
	bWRZ = 0;				
	bRDZ = 1;						
	bRDZ = 0;						
	bWRZ = 1;						
	bCSZ = 1;						
	DATA_BUS = 0xff;

	bCSZ = 0;
	bA0  = 0;
	DATA_BUS = Data & 0x0f;
	bWRZ = 0;				
	bRDZ = 1;						
	bRDZ = 0;						
	bWRZ = 1;						
	bCSZ = 1;						
	DATA_BUS = 0xff;
#endif	

	bA0  = 1;
}

//==============================================================================
//Subroutine:	CmdRead
//Function:		
//==============================================================================

uchar LCD_CmdRead(void)
{
	uchar Data;

#ifdef	Parallel_8080
		bCSZ = 0;					
		bA0  = 1;					
		bWRZ = 1;	
//		Data = DATA_BUS;				
		bRDZ = 0;					
		Data = DATA_BUS;
		bRDZ = 1;		
//		bCSZ = 0;	
		bCSZ = 1;
		DATA_BUS = 0xff;
#endif

#ifdef Parallel_8080_4bit
       bWRZ = 1;
	   bCSZ = 0;
	   bA0  = 1;
	   bRDZ = 0;
  	   Data = (DATA_BUS << 4) | 0x0f;
	   bRDZ = 1;
	   bCSZ = 1;
	
	   DATA_BUS = 0xff;	
	   bCSZ = 0;
	   bRDZ = 0;
	   Data = DATA_BUS & Data;
	   bRDZ = 1;
	   bCSZ = 1;					
#endif

#ifdef	Parallel_6800
		bCSZ = 0;
		bA0  = 1;
		bRDZ = 1;
		Data = DATA_BUS;
		bRDZ = 0;
		bCSZ = 1;
		DATA_BUS = 0xff;
#endif

#ifdef	Parallel_6800_4bit
		bCSZ = 0;
		bA0  = 1;
		bRDZ = 1;
		Data = (DATA_BUS << 4) | 0x0f;
		bRDZ = 0;
		bCSZ = 1;
		DATA_BUS = 0xff;

		bCSZ = 0;
		bA0  = 1;
		bRDZ = 1;
		Data = DATA_BUS & Data;
		bRDZ = 0;
		bCSZ = 1;
		DATA_BUS = 0xff;
#endif
        bA0  = 0;

	return Data;
}

//==============================================================================
//Subroutine:	LCD_DataRead
//Function:		
//==============================================================================
uchar LCD_DataRead(void)
{
	uchar Data;

#ifdef Parallel_8080
	   bWRZ = 1;
	   bCSZ = 0;
	   bA0  = 0;
//	   Data = DATA_BUS;
	   bRDZ = 0;
	   Data = DATA_BUS;
	   bRDZ = 1;
//	   bCSZ = 0;	
	   bCSZ = 1;			
#endif

#ifdef Parallel_8080_4bit
       bRDZ = 1;
       bWRZ = 1;
       bCSZ = 0;
       bA0  = 0;
       bRDZ = 0;
   	   Data = (DATA_BUS << 4) | 0x0f;
       bRDZ = 1;
	   bCSZ = 1;
	   	
	   DATA_BUS = 0xff;
	   bCSZ = 0;
       bRDZ = 0;
	   Data = DATA_BUS & Data;
	   bRDZ = 1;
       bCSZ = 1;
#endif

#ifdef Parallel_6800				
       bCSZ = 0;
	   bA0  = 0;
 	   bRDZ = 1;			 
	   Data = DATA_BUS;
	   bRDZ = 0;
	   bCSZ = 1;
#endif

#ifdef Parallel_6800_4bit				
       bCSZ = 0;
	   bA0  = 0;
 	   bRDZ = 1;			 
	   Data = (DATA_BUS << 4) | 0x0f;
	   bRDZ = 0;
	   bCSZ = 1;

	   bCSZ = 0;
	   bA0  = 0;
 	   bRDZ = 1;			 
	   Data = DATA_BUS & Data;
	   bRDZ = 0;
	   bCSZ = 1;
#endif
	   bA0  = 1;

	return Data;
}
//==============================================================================
//Subroutine:	LCD_Initial
//Function:		
//==============================================================================
void LCD_Initial(void)
{
	LCD_CmdWrite(WLCR);		//[00H] , Default --> 0x00
	LCD_DataWrite(0x00);	

	LCD_CmdWrite(MISC);		//[01H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(ADSR);		//[03H] , Default --> 0x00 
	LCD_DataWrite(0x00);

	LCD_CmdWrite(INTR);		//[0FH] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(WCCR);		//[10H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(CHWI);		//[11H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(MAMR);		//[12H] , Default --> 0x11 
	LCD_DataWrite(0x11);

	LCD_CmdWrite(AWRR);		//[20H] , Default --> 0x27
	LCD_DataWrite(0x27);

	LCD_CmdWrite(DWWR);		//[21H] , Default --> 0x27
	LCD_DataWrite(0x27);

	LCD_CmdWrite(AWBR);		//[30H] , Default --> 0xEF	
	LCD_DataWrite(0xef);

	LCD_CmdWrite(DWHR);		//[31H] , Default --> 0xEF
	LCD_DataWrite(0xef);

	LCD_CmdWrite(AWLR);		//[40H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(AWTR);		//[50H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(CURX);		//[60H] , Default --> 0x00 
	LCD_DataWrite(0x00);

	LCD_CmdWrite(BGSG);		//[61H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(EDSG);		//[62H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(CURY);		//[70H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(BGCM);		//[71H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(EDCM);		//[72H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(BTMR);		//[80H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(ITCR);		//[90H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(KSCR1);	//[A0H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(KSCR2);	//[A1H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(KSDR0);	//[A2H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(KSDR1);	//[A3H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(KSDR2);	//[A3H] , Default --> 0x00
	LCD_DataWrite(0x00);

//	LCD_CmdWrite(MWCR);		//[B0H] , Default --> NA 

//	LCD_CmdWrite(MRCR);		//[B1H] , Default --> NA

//	LCD_CmdWrite(TPCR);		//[C0H] , Default --> 0x00
//	LCD_DataWrite(0x00);

//	LCD_CmdWrite(TPXR);		//[C1H] , Default --> 0x00
//	LCD_DataWrite(0x00);

//	LCD_CmdWrite(TPYR);		//[C2H] , Default --> 0x00
//	LCD_DataWrite(0x00);

//	LCD_CmdWrite(TPZR);		//[C3H] , Default --> 0x00
//	LCD_DataWrite(0x00);

	LCD_CmdWrite(PCR);		//[D0H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(PDCR);		//[D1H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(PNTR);		//[E0H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(FNCR);		//[F0H] , Default --> 0x00
	LCD_DataWrite(0x00);

	LCD_CmdWrite(FVHT);		//[F1H] , Default --> 0x00
	LCD_DataWrite(0x00);
}

//==============================================================================
//Subroutine:	LCD_SleepMode
//Function:		
//==============================================================================
void LCD_SleepMode(void)
{
	uchar temp;
	
	LCD_CmdWrite(WLCR);
	temp = LCD_DataRead();
	temp |= cSetb7;
	LCD_CmdWrite(WLCR);
	LCD_DataWrite(temp);
}

//==============================================================================
//Subroutine:	LCD_ChkBusy
//Function:		
//==============================================================================
void LCD_ChkBusy(void)
{
	uchar temp;
	
	do
	{
		temp = LCD_CmdRead();
	}while(temp & 0xc0);
}

//==============================================================================
//Subroutine:	LCD_On
//Function:
//==============================================================================
void LCD_ON(void)
{
	uchar temp;

	LCD_CmdWrite(WLCR);
	temp = LCD_DataRead();
	temp |= cSetb2;
	LCD_CmdWrite(WLCR);
	LCD_DataWrite(temp);
}

void LCD_OFF(void)
{
	uchar temp;
	
	LCD_CmdWrite(WLCR);
	temp = LCD_DataRead();
	temp &= cClrb2;
	LCD_CmdWrite(WLCR);
	LCD_DataWrite(temp);

⌨️ 快捷键说明

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