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

📄 ic-ili9320-8bit.c

📁 ICL9320 C8051F120 驱动 8位并行模式 效果相当好
💻 C
📖 第 1 页 / 共 2 页
字号:
                                                                                           //---------------------------------------------------------------------------
// Target:     C8051F12X
// Tool chain: Keil C51 7.50 / Keil EVAL C51
// Controller IC: ILI9320
// Paraller type: 8 bit-8080 interface
// Release 1.0
//-----------------------------------------------------------------------------
#include <c8051F120.h>
#include <math.h>
#include <OSC_init.c>
#include <PORT_init.c>

#include "176x40.h"                           
#include "240x40.h"
////#include "176x30.h"
#include "15x15.h"
#include "text.h"

unsigned char code CLR[1] = {0xff};
//-----------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F12x
//-----------------------------------------------------------------------------
sfr16 RCAP3    = 0xCA;                 // Timer3 reload value
sfr16 TMR3     = 0xCC;                 // Timer3 counter
//-----------------------------------------------------------------------------
// Global Constants
//-----------------------------------------------------------------------------
//define the LCM pixel
#define DisplayCol  320
#define DisplaySeg  240 
//define LCD control interface
sbit _WR  = P4^7;
sbit _RD  = P4^6;
sbit _CS1 = P1^0;
sbit  RS  = P1^1; 
sbit _RST = P1^2;   
//define Touch panel control interface
sbit TP_CS   = P1^3;
sbit TP_DIN  = P1^4;
sbit TP_DCLK = P1^5;
sbit TP_IRQ  = P1^6;
sbit TP_DOUT = P1^7;
sbit TP_BUSY = P2^7;
//define external flash memory interface
sbit _FLASH_CS=P4^5;//4
sbit _FLASH_B4=P4^3;
sbit _FLASH_B3=P4^2;
sbit _FLASH_B2=P4^1;
sbit _FLASH_B1=P4^0;

#define XBYTE ((unsigned char volatile xdata *) 0)
#define SYSCLK 10000000 // approximate SYSCLK frequency in Hz
#define DataPort_H   P3
#define DataPort_L   P7
#define DATA_BUS XBYTE[0x0000]

#define BLOCK	P4
//********KEYs Defined******
sbit  TP_TEST_KEY    = P2^2;
sbit   STOP_KEY      = P2^6;
sbit  NEXTPHOTO_KEY  = P2^5; 

//sbit  LED = P1^6; 
long unsigned int x_cor=0;
long unsigned int y_cor=0;
unsigned char case_value = 0;
unsigned int d_color = 0;
//unsigned int page,seg;
unsigned int pointer;
unsigned long int adr;
unsigned char blocks=0,clear=0;
unsigned char xdata *ptr;
//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
//void Timer3_Init (int counts);
void delay(unsigned int param);
void LCD_Index(unsigned char index);
void LCD_DataWrite(unsigned int set_db);
void LCD_CmdWrite(unsigned char index_h,unsigned char index_l,unsigned int set_db_h,unsigned int set_db_l);
void LCD_Reset(void);
void Power_set(void);
void LCD_Initial1(void);
void Gamma_Control(void);
void LCD_Initial2(void) ;
void Display_ON(void);
void lcd_int(void);
void ADS7846_init();
void tp_test();
void standard_window(unsigned char x, unsigned int y, unsigned char dx, unsigned int dy, unsigned char *ptr);
void WriteBmp(unsigned char pages);
void Checker(unsigned int param1,unsigned int param2); //Full on,off,checkerboard
void WriteBoundary(void);  //write boundary

//-----------------------------------------------------------------------------
// main() Routine
//-----------------------------------------------------------------------------
void main (void) 
{   unsigned char step=0;
// disable watchdog timer
   WDTCN = 0xde;
   WDTCN = 0xad;
	OSC_init();
   PORT_Init ();                            // Initialize crossbar and GPIO
    lcd_int();
	ADS7846_init();
	step=0;
	while(1)
	 {	
	  
	  
			    if((TP_TEST_KEY==0)){  Checker(0xff,0xff);WriteBoundary();delay(8000);Checker(0xf8,0x0);delay(8000);Checker(0x07,0xe0);delay(8000);Checker(0x00,0x1f);delay(8000);WriteBmp(0);delay(8000);Checker(0xff,0xff);}  //all on 
		    	
				
				else      { Checker(0xff,0xff);WriteBoundary();delay(8000);Checker(0xf8,0x0);delay(8000);Checker(0x07,0xe0);delay(8000);Checker(0x00,0x1f);delay(8000);WriteBmp(0);delay(8000);Checker(0xff,0xff);delay(8000);tp_test();}
		    	
		    	
	      
 	      
	 
	   
      
	 }
}

//----------------------------------------------------------------------------
void delay(unsigned int param)
{   unsigned int i;
   for(;param>0;param--)
 	 for(i=0;i<960;i++);
}

void LCD_Index(unsigned char index)
{	SFRPAGE=CONFIG_PAGE;
    RS=0;	DATA_BUS=index;	RS=1;
} 

void LCD_DataWrite(unsigned int set_db)  //80-16bit
{  // DataPort_H=set_db>>8;
  RS=1;	DATA_BUS=set_db; RS=0;
} 

void LCD_CmdWrite(unsigned char index_h,unsigned char index_l,unsigned int set_db_h,unsigned int set_db_l)
{	RS=0;
	LCD_Index(index_h);
    LCD_Index(index_l);
	RS=1;

	LCD_DataWrite(set_db_h);
	LCD_DataWrite(set_db_l);

} 

void LCD_Reset(void)
{   P4=0;
	_CS1=0;
    _RST=1;
	_RD=1;
    delay(10);
	_RST=0;
	delay(60);
	_RST=1;
	delay(10);
}

void lcd_int(void)            //ILI9220
{       LCD_Reset();
        //  display  custom _(comment) seting
        LCD_CmdWrite(0x00,0x00, 0x00,0x01);
		LCD_CmdWrite(0x00,0x01, 0x01,0x00);
		LCD_CmdWrite(0x00,0x02, 0x05,0x00);
		LCD_CmdWrite(0x00,0x03, 0x11,0x30);
		LCD_CmdWrite(0x00,0x04, 0x00,0x00);
		LCD_CmdWrite(0x00,0x08, 0x02,0x02);
        
		//  display voltage seting
		LCD_CmdWrite(0x00,0x09, 0x00,0x00);
		LCD_CmdWrite(0x00,0x0a, 0x00,0x00);
		LCD_CmdWrite(0x00,0x0c, 0x00,0x00);
		LCD_CmdWrite(0x00,0x0d, 0x00,0x00);//LCD_CmdWrite(0x00,0x13, 0x32,0x1c)


		LCD_CmdWrite(0x00,0x0f, 0x00,0x00);
		LCD_CmdWrite(0x00,0x10, 0x00,0x00);
		LCD_CmdWrite(0x00,0x11, 0x00,0x01);

         //  ARM  adress setting
		LCD_CmdWrite(0x00,0x12, 0x00,0x00);
        LCD_CmdWrite(0x00,0x13, 0x00,0x00);
		LCD_CmdWrite(0x00,0x10, 0x14,0xb0);
		LCD_CmdWrite(0x00,0x11, 0x00,0x01);


         //  display on  setting 
		LCD_CmdWrite(0x00,0x12, 0x01,0x38);
		LCD_CmdWrite(0x00,0x13, 0x18,0x00);
		LCD_CmdWrite(0x00,0x17, 0x00,0x01);
		LCD_CmdWrite(0x00,0x29, 0x00,0x18);
		LCD_CmdWrite(0x00,0x20, 0x00,0x00);


		LCD_CmdWrite(0x00,0x21, 0x00,0x00);
		LCD_CmdWrite(0x00,0x2b, 0x01,0x30);
		LCD_CmdWrite(0x00,0x50, 0x00,0x00);
		LCD_CmdWrite(0x00,0x51, 0x00,0xef);
		LCD_CmdWrite(0x00,0x52, 0x00,0x00);

		
		LCD_CmdWrite(0x00,0x53, 0x01,0x3f);
		LCD_CmdWrite(0x00,0x60, 0x27,0x00);
		LCD_CmdWrite(0x00,0x61, 0x00,0x05);
		LCD_CmdWrite(0x00,0x6a, 0x00,0x00);
		LCD_CmdWrite(0x00,0x80, 0x00,0x00);
		LCD_CmdWrite(0x00,0x81, 0x00,0x00);
		LCD_CmdWrite(0x00,0x82, 0x00,0x00);
		LCD_CmdWrite(0x00,0x83, 0x00,0x00);
		LCD_CmdWrite(0x00,0x84, 0x00,0x00);
		LCD_CmdWrite(0x00,0x85, 0x00,0x00);
		LCD_CmdWrite(0x00,0x90, 0x00,0x00);
		LCD_CmdWrite(0x00,0x91, 0x00,0x00);
		LCD_CmdWrite(0x00,0x92, 0x00,0x00);
		LCD_CmdWrite(0x00,0x93, 0x00,0x03);
		LCD_CmdWrite(0x00,0x95, 0x00,0x00);
		LCD_CmdWrite(0x00,0x97, 0x00,0x00);
		LCD_CmdWrite(0x00,0x98, 0x00,0x00);
		LCD_CmdWrite(0x00,0x07, 0x01,0x73);



       	LCD_Index(0x00);
		LCD_Index(0x22);
	


	







}
void Set_address()
{       
       	LCD_CmdWrite(0x00,0x50, 0x00,0x00);
		LCD_CmdWrite(0x00,0x51, 0x00,0xef);
		LCD_CmdWrite(0x00,0x52, 0x00,0x00);
		LCD_CmdWrite(0x00,0x53, 0x01,0x3f);
		LCD_CmdWrite(0x00,0x20, 0x00,0x00);
		LCD_CmdWrite(0x00,0x21, 0x00,0x00);
		LCD_Index(0x00);
		LCD_Index(0x22);
      
}

//============================================================================
void standard_window(unsigned char x,unsigned int y,unsigned char dx,unsigned int dy,unsigned char *ptr)
{	unsigned int i;
	unsigned char j;
	unsigned int add_y = y;
	long unsigned int k=0;
		
	for(i=0;i<dy;i++)	
	{	

	  // LCD_CmdWrite(0x00,0x44, (x+dx),x);
	//	LCD_CmdWrite(0x00,0x45, (y+dy),(add_y));
	//	LCD_CmdWrite(0x00,0x21, (add_y),x);

	//	LCD_Index(0x00);
	//	LCD_Index(0x22); 
	 /*  	LCD_CmdWrite(0x00,0x50, 0x00,x);
		LCD_CmdWrite(0x00,0x51, 0x00,x+dx);
		LCD_CmdWrite(0x00,0x52, 0x00,(add_y));
		LCD_CmdWrite(0x00,0x53, ((y+dy)-0xff),(y+dy));*/
		//LCD_CmdWrite(0x00,0x45, 0xdb,0x00);
		LCD_CmdWrite(0x00,0x20, 0x00,x);
		LCD_CmdWrite(0x00,0x21, ((add_y)>>8),(add_y));
		LCD_Index(0x00);
		LCD_Index(0x22);
       

	
		if(clear==0)
	    for(j=0;j<dx;j++)
	    {	DATA_BUS = ptr[k];	k++;
	       	DATA_BUS =ptr[k];	k++;	
	    }
		else
	    for(j=0;j<dx;j++)
	    {	DATA_BUS = ptr[0];
			DATA_BUS =ptr[0];
	    }
	    add_y=(add_y+1);   
	}		
}

//============================================================================
void Pixel(unsigned char x, unsigned int y)
{	unsigned char i;
	    
	// LCD_CmdWrite(0x00,0x21, (y-1),(x-1));
        /* LCD_Index(0x00);
		 LCD_Index(0x21);
		 LCD_DataWrite(y-1);
		 LCD_DataWrite(x-1);*/

		// LCD_CmdWrite(0x00,0x44, (x-1),(x-1));
	////	 LCD_CmdWrite(0x00,0x45, (y-1),(y-1));
	//	 LCD_Index(0x00);
	//	 LCD_Index(0x22); 
	 /*  	LCD_CmdWrite(0x00,0x50, 0x00,(x-1));
		LCD_CmdWrite(0x00,0x51, 0x00,(x-1));
		LCD_CmdWrite(0x00,0x52, 0x00,(y-1));
		LCD_CmdWrite(0x00,0x53, ((y-1)-0xff),(y-1));
		//LCD_CmdWrite(0x00,0x45, 0xdb,0x00);*/
		LCD_CmdWrite(0x00,0x20, 0x00,(x-1));
		LCD_CmdWrite(0x00,0x21, ((y-1)>>8),(y-1));
		LCD_Index(0x00);
		LCD_Index(0x22);
	for(i=0;i<3;i++)
	{	DATA_BUS  = d_color;
    	DATA_BUS = d_color;
	}
        
	//	 LCD_CmdWrite(0x00,0x21, (y),(x-1));
		/* LCD_Index(0x00);
		 LCD_Index(0x21);
		 LCD_DataWrite(y);
		 LCD_DataWrite(x-1);*/
		//  LCD_CmdWrite(0x00,0x44,(x-1),(x-1));
		// LCD_CmdWrite(0x00,0x45, (y),(y));
		// LCD_Index(0x00);
	//	 LCD_Index(0x22); 
	 /*   LCD_CmdWrite(0x00,0x50, 0x00,(x-1));
		LCD_CmdWrite(0x00,0x51, 0x00,(x-1));
		LCD_CmdWrite(0x00,0x52, 0x00,(y));
		LCD_CmdWrite(0x00,0x53, ((y)-0xff),(y));
		//LCD_CmdWrite(0x00,0x45, 0xdb,0x00);*/
		LCD_CmdWrite(0x00,0x20, 0x00,(x-1));
		LCD_CmdWrite(0x00,0x21, ((y)>>8),(y));
		LCD_Index(0x00);
		LCD_Index(0x22);
	for(i=0;i<3;i++)
	{	DATA_BUS = d_color;
    	DATA_BUS = d_color;
	}

       
	//	 LCD_CmdWrite(0x00,0x21, (y+1),(x-1));
	/*	 LCD_Index(0x00);
		 LCD_Index(0x21);
		 LCD_DataWrite(y+1);
		 LCD_DataWrite(x-1);*/
	//	 LCD_CmdWrite(0x00,0x44, (x-1),(x-1));
	//	 LCD_CmdWrite(0x00,0x45, (y+1),(y+1));
	//	 LCD_Index(0x00);
	//	 LCD_Index(0x22); 
	  /*	LCD_CmdWrite(0x00,0x50, 0x00,(x-1));
		LCD_CmdWrite(0x00,0x51, 0x00,(x-1));
		LCD_CmdWrite(0x00,0x52, 0x00,(y+1));
		LCD_CmdWrite(0x00,0x53, ((y+1)-0xff),(y+1));*/
		//LCD_CmdWrite(0x00,0x45, 0xdb,0x00);
		LCD_CmdWrite(0x00,0x20, 0x00,(x-1));
		LCD_CmdWrite(0x00,0x21, ((y+1)>>8),(y+1));
		LCD_Index(0x00);
		LCD_Index(0x22);
	for(i=0;i<3;i++)
	{	DATA_BUS  = d_color;

⌨️ 快捷键说明

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