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

📄 2.0tft demomain 1.c

📁 LCD模块驱动 SHARP2.0“TFT模块驱动程序
💻 C
📖 第 1 页 / 共 5 页
字号:
void Display_chipcopy_receiving()
{
	unsigned char l;
	unsigned char x;
	unsigned char y;
	Chip_select_LCD();
	LCDREG=0x12;  LCDREG=0x87;          
                //VRAM access area setting register(X direction/start and pointer)
    LCDREG=0x13;  LCDREG=0xDB;          
                //VRAM access area setting register(Y direction/start and pointer)
    LCDREG=0x15;  LCDREG=0x28;          
                //VRAM access area setting register(X direction/end)
    LCDREG=0x16;  LCDREG=0x00;          
                //VRAM access area setting register(Y direction/end)
    LCDREG=0x18;  LCDREG=0x03;          
                //Address auto increment setting register
    LCDREG=0x14;     LCDREG=0x87;					// X address register
    LCDREG=0x17;     LCDREG=0x80; 
								
		for(y=0;y<40;y++)
		{
			for(x=0;x<12;x++)
			{
				for(l=0x80;l>=1;l=l>>1)
				{				
					if((Receiving[(39-y)*12+x]&l)!=0)
					{
					LCDDATA=0;
					LCDDATA=0;
					LCDDATA=0;
					}
					else
					{
					LCDDATA=0xff;
					LCDDATA=0xff;
					LCDDATA=0xff;
					}
				}
			}
		}

	
}

//============================================================================================================

void Program_flash(unsigned char xdata *image_data_addr,unsigned char io_data)
{
	Chip_select_flash();
	FLASH_5555=0xaa;
	FLASH_2AAA=0x55;
	FLASH_5555=0xa0;
	*image_data_addr=io_data;
}

void Chip_erase_flash()
{
	unsigned char i;
	Chip_select_flash();
	FLASH_5555=0xaa;
	FLASH_2AAA=0x55;
	FLASH_5555=0x80;
	FLASH_5555=0xaa;
	FLASH_2AAA=0x55;
	FLASH_5555=0x10;
	for (i=0;i<15;i++)
	{
		Led_light(true);
		Delayms(200);
		Led_light(false);
		Delayms(200);
	}
}


void Auxdata_write(unsigned char data_mask,unsigned char auxa_data)
{
	Chip_select_LCD();
	Auxdata=(Auxdata&data_mask)+auxa_data;
	AUXOUT=Auxdata;
}


//*****************************************
void serial () interrupt 4 
{
	unsigned char image_data;
	unsigned char  block_addr;
    
   	block_addr=Block_addr<<1;
	EA=0;
	if (Chip_copy)
	{
		if (RI) 
    	 {
			RI=0;
			image_data=SBUF;
            Auxdata_write(BLOCK_ADDR_MASK,Block_addr&block_mask);
            Program_flash(Image_data_addr,image_data);
 			Image_data_addr++;
			if (Image_data_addr==0x0000)
		 	{	Block_addr++;
                if (Block_addr==8) Chip_copy_over=true;
                Auxdata_write(BLOCK_ADDR_MASK,Block_addr&block_mask);
                Chip_select_Flash();
    		    Chip_select_LCD();
            	LCDREG=0x12;  LCDREG=175-(Block_addr<<3)-48;          
            			    //VRAM access area setting register(X direction/start and pointer)
   				LCDREG=0x13;  LCDREG=0x5E;          
     			            //VRAM access area setting register(Y direction/start and pointer)
        		LCDREG=0x15;  LCDREG=175-(Block_addr<<3)-55;          
        		     	    //VRAM access area setting register(X direction/end)
     			LCDREG=0x16;  LCDREG=0x5A;          
               			    //VRAM access area setting register(Y direction/end)
    			LCDREG=0x18;  LCDREG=0x03;          
          		    	    //Address auto increment setting register
      			LCDREG=0x14;     LCDREG=175-(Block_addr<<3)-48;					// X address register
                LCDREG=0x17;     LCDREG=0x5E; 
				
                            				
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				Chip_select_flash();
			}
		}
    	else  
    	{  
			TI = 0;
          	SBUF=*(Image_data_addr);
 			Image_data_addr++;
			if (Image_data_addr==0x0000)
		 	{	
				Block_addr++;
				if (Block_addr==8) Chip_copy_over=true;
		  		Auxdata_write(BLOCK_ADDR_MASK,Block_addr&block_mask);
 		    	Chip_select_LCD();
				LCDREG=0x12;  LCDREG=175-(Block_addr<<3)-48;          
            			    //VRAM access area setting register(X direction/start and pointer)
   				LCDREG=0x13;  LCDREG=0x5E;          
     			            //VRAM access area setting register(Y direction/start and pointer)
        		LCDREG=0x15;  LCDREG=175-(Block_addr<<3)-55;          
        			        //VRAM access area setting register(X direction/end)
     			LCDREG=0x16;  LCDREG=0x5A;          
               			    //VRAM access area setting register(Y direction/end)
    			LCDREG=0x18;  LCDREG=0x03;          
          			       //Address auto increment setting register
      			LCDREG=0x14;     LCDREG=175-(Block_addr<<3)-48;					// X address register
                LCDREG=0x17;     LCDREG=0x5E; 
							
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				Chip_select_flash();
			}
        }
	}
	else
	{
 		if (RI ) 
    	 {
   			RI=0;
		  
            image_data=SBUF;
           
            Program_flash(Image_data_addr,image_data);
 			Image_data_addr++;

			if (Image_data_addr==0x0000)
			   {  block_addr++;
                  Auxdata_write(BLOCK_ADDR_MASK,block_addr&block_mask);
                  Chip_select_Flash();
			    } 		
		    if (Download_counter==2)        Download_total=image_data;
			if (Download_counter==3)    	Download_total=image_data*256+Download_total;
            if (Download_counter==4)       	Download_total=image_data*256*256+Download_total;
			if (Download_counter==70145)   Download_over=true;
    		Download_counter++;
			Download_process++;
		/*	Chip_select_LCD();
 			if (Download_process==0xf1)
			{     
				LCDREG=0x12;  LCDREG=175-Download_x/8-58;          
            			    //VRAM access area setting register(X direction/start and pointer)
   				LCDREG=0x13;  LCDREG=0x63;          
     			            //VRAM access area setting register(Y direction/start and pointer)
        		LCDREG=0x15;  LCDREG=175-Download_x/8-58;          
        			        //VRAM access area setting register(X direction/end)
     			LCDREG=0x16;  LCDREG=0x60;          
               		        //VRAM access area setting register(Y direction/end)
    			LCDREG=0x18;  LCDREG=0x03;          
          		    	    //Address auto increment setting register
      			LCDREG=0x14;     LCDREG=175-Download_x/8-58;					// X address register
                LCDREG=0x17;     LCDREG=0x63; 
				
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				LCDDATA=0xff;LCDDATA=0xff;LCDDATA=0xff;
				Download_x++; 
				Download_process=0xff;
			}*/
		}
     }
	EA=1; 
}

//*****************************

void Serial_init()						//serial port setup         
{
	IP0H=0x10;            //proitity setup 
	EA=1;                //interrupt enable
	T2CON=0x30;           //timer2
    T2MOD=0x00; 		  //timer2mode
	PCON=0;               //SMOD baudrate double disable
	SCON=0x50;            //8bitsUART, baud rate variable
	RCAP2L = 0xf0;		//bf 9600 df 19200 f0 38400
	RCAP2H = 0xff;        //baudrate setup:
	TR2=true;                //run timer2
}


void Pcam1_init()
{
	TMOD=0x02;            //timer 0 auto-loadmode
	TH0=256-20000000/6/51200;  //timer0=51.2kHz=50us
	TR0=true;
	CMOD=0x04;			//PCA's input :timer0:20kHz;pwm :51.2k/256=200Hz
    CCON=0x40;          //RUN the pca
	CCAPM1=0x42;		//PWM mode
	CCAP1H=255-Bl_brightness;     //set duty
}


//===========================================keyboard server begin
void Key_int() interrupt 0
{
	unsigned char key;
	EA=false;
	EX0=false;
	Delayms(10);
	P1=P1|key_mask;
	key=P1&key_mask;
	Delayms(5);
	if(key!=(P1&key_mask)) goto keyend;
	Delayms(5);
	if(key!=(P1&key_mask)) goto keyend;
   	switch(key)
	{
		case key_up: Key_up_server();
			break;
		case key_down: Key_down_server();
			break;
		case key_shift: Key_shift_server();
			break;
		case key_playpause: Key_playpause_server();
			break;
		default: ;
	 }
keyend: Delayus(10);
	EA=true;
	EX0=true;
} 


//keyboand sever sub program===========================
void Key_up_server()
{
	if (Shift==0) 
    {
		switch(Bl_brightness)
		{
			case 255: 		Bl_brightness=255;	
				break;
			case 127: 		Bl_brightness=255;
				break;
			case 25: 		Bl_brightness=127;
				break;
			case 0: 		Bl1=1;	Pcam1_init();	Bl_brightness=25;
				break;
			default: ;
	 	}
		CCAP1H=255-Bl_brightness;
	}
	else
	{
		switch(Contrast)
		{
	
	 	}
	}
}

void Key_down_server()
{
	if (Shift==0) 
    {
		switch(Bl_brightness)
		{
			case 255: 	Bl_brightness=127;
				break;
			case 127: 	Bl_brightness=25;
				break;
			case 25: 	Bl1=0;Bl_brightness=0;
				break;
			case 0:		Poweroff();		Led_flash(3);
				break;
			default: ;
	 	}
		CCAP1H=255-Bl_brightness;
	}
	else
	{
		switch(Contrast)
		{
	
	 	}
	}
}



void Key_shift_server()
{
	Shift=!Shift;
	Led_light(Shift);	
}

void Key_playpause_server()
{
	Pause=!Pause;
}
//===========================================keyboard server end



//chip select program===============================
void Chip_select_flash()
{
	LCDcs=true;
    Flashcs=false;
} 

void Chip_select_LCD()
{	Flashcs=true;
    LCDcs=false;
} 

void Led_light(bit led)
{	
	Led=led;
}

void Led_flash(unsigned char cycle)
{	
 ledflash:
     	Led=true;
    	Delayms(cycle*100);
		Led=false;
		Delayms(cycle*100);
	goto ledflash;
}
void Hardreset()                  /*lcd hardware reset*/
{
	Chip_select_LCD();
	Auxdata_write(0xf7,0x00);
	Delayms(10);
	Auxdata_write(0xf7,0x08);
	AUXOUT=Auxdata;

⌨️ 快捷键说明

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