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

📄 mytft.c

📁 2440 ADS项目
💻 C
字号:
#include "2440addr.h"
#include "2440lib.h"
#include "myTFT.h"

#define M5D(n) ((n) & 0x1fffff)	// To get lower 21bits



void myTFT_Init(int vram_addr, int width, int height, int virtual_width, int virtual_height)
{
     rGPCUP=0xFFFFFFFF; 			// Disable Pull-up register
     rGPCCON=0xAAAAAAAA; 			// Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND 
     rGPDUP=0xFFFFFFFF; 			// Disable Pull-up register
     rGPDCON=0xAAAAAAAA; 			// Initialize VD[23:8]	
     
     
     
     rLCDCON1=(1<<8)|(0<<7)|(3<<5)|(12<<1)|0;
     // 16bpp TFT, ENVID=off
     rLCDCON2=((32-1)<<24)|((height-1)<<14)|((11-1)<<6)|((2-1)<<0);
     rLCDCON3=((48-1)<<19)|((width-1)<<8)|((16-1)<<0);
     rLCDCON4=(13<<8)|((96-1)<<0);
     rLCDCON5=(1<<11)|(1<<9)|(1<<8)|(1<<0);	// FRM5:6:5,HSYNC and VSYNC are inverted
     
     // BPP24BL:x,FRM565:x,INVVCLK:x,INVVLINE:x,INVVFRAME:x,INVVD:x,
     // INVVDEN:x,INVPWREN:x,INVLEND:x,PWREN:x,ENLEND:x,BSWP:x,HWSWP:x
     rLCDSADDR1=(((U32)vram_addr>>22)<<21 )|M5D((U32)vram_addr>>1);
     rLCDSADDR2=M5D( ((U32)vram_addr+(virtual_width*height*2))>>1 );
     rLCDSADDR3=(((virtual_width-width)/1)<<11)|(width/1);
    
    
    
     rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
     rTCONSEL&=~((1<<4)|1); // Disable LCC3600, LPC3600
     rTPAL=0; // Disable Temp Palette
	
     //rLPCSEL&=(~7); // Disable LPC3600
     //rLPCSEL|=(7); // 240320,Enable LPC3600
     
     //GPG4 is setted as LCD_PWREN
     rGPGUP|=(1<<4); 				// Pull-up disable
     rGPGCON|=(3<<8); 				// GPG4=LCD_PWREN
     //Enable LCD POWER ENABLE Function
     rLCDCON5|=(1<<3);   			// PWREN
     rLCDCON5&=~(1<<5);   			// INVPWREN
     
     rLCDCON1|=1; // ENVID=ON
     		
}	


void myTFT_Putpixel(int x, int y, int color)
{
     unsigned int addr;	       	
     
     addr=LCDFRAMEBUFFER+(x+y*SCR_XSIZE)*2;
     *(volatile short *)(addr)=color;    
} 

int  myTFT_Getpixel(int x, int y)
{
     unsigned int addr, tmp;	       	
    
     addr=LCDFRAMEBUFFER+(x+y*SCR_XSIZE)*2;
     tmp=*(volatile short *)(addr);
     
     return (tmp);
} 

void clear_LCD()
{
	int i;
	for(i=0;i<640*480*2;i+=4)
         *(volatile int *)(LCDFRAMEBUFFER+i)=0xFFFFFFFF;
}

⌨️ 快捷键说明

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