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

📄 lcdlib.c

📁 成功移植ucos2.85到s3c44b0的开发板
💻 C
字号:
#define LCDCON1	    (*(volatile unsigned *)0x1f00000)
#define LCDCON2	    (*(volatile unsigned *)0x1f00004)
#define LCDCON3	    (*(volatile unsigned *)0x1f00040)
#define LCDSADDR1	(*(volatile unsigned *)0x1f00008)
#define LCDSADDR2	(*(volatile unsigned *)0x1f0000c)
#define LCDSADDR3	(*(volatile unsigned *)0x1f00010)
#define REDLUT		(*(volatile unsigned *)0x1f00014)
#define GREENLUT	(*(volatile unsigned *)0x1f00018)
#define BLUELUT	    (*(volatile unsigned *)0x1f0001c)
#define DP1_2		(*(volatile unsigned *)0x1f00020)
#define DP4_7		(*(volatile unsigned *)0x1f00024)
#define DP3_5		(*(volatile unsigned *)0x1f00028)
#define DP2_3		(*(volatile unsigned *)0x1f0002c)
#define DP5_7		(*(volatile unsigned *)0x1f00030)
#define DP3_4		(*(volatile unsigned *)0x1f00034)
#define DP4_5		(*(volatile unsigned *)0x1f00038)
#define DP6_7		(*(volatile unsigned *)0x1f0003c)
#define DITHMODE	(*(volatile unsigned *)0x1f00044)
#define PCOND		(*(volatile unsigned *)0x1d2001c)

#include "lcdlib.h"


typedef  unsigned int U32;
//#define MODE_MONO
//#define MODE_G4
#define MODE_G16

#ifdef MODE_MONO
unsigned char frameBuffer[240][320/8];
#endif

#ifdef MODE_G4
unsigned char frameBuffer[240][320*2/8];
#endif

#ifdef MODE_G16
unsigned char frameBuffer[240][320*4/8];
#endif


void LCD_INIT(void)
{  
    PCOND=0xaaaa; //LCD控制

#ifdef MODE_MONO

	LCDCON1=(0)|(1<<5)|(0x3<<8)|(0x3<<10)|(5<<12); //4位单扫描模式,禁止视频输出
	LCDCON2=(240-1)|((320/4-1)<<10)|(10<<21);  
	LCDSADDR1=(0x0<<27)|(((U32)frameBuffer>>22)<<21)|\
	           (0x1fffff&((U32)frameBuffer>>1));  //黑白模式,禁止自刷新
	LCDSADDR2=(0x1fffff&(((U32)frameBuffer+(320*240/8))>>1))|(1<<29);  //字节交换使能
	LCDSADDR3=320/16;
	LCDCON1=(1)|(1<<5)|(0x3<<8)|(0x3<<10)|(5<<12);  //允许视频输出
	
#endif
 
#ifdef MODE_G4 

    BLUELUT=0xfa40; 
	DITHMODE=0x0;
	DP1_2 =0xa5a5;      
	DP4_7 =0xba5da65;
	DP3_5 =0xa5a5f;
	DP2_3 =0xd6b;
	DP5_7 =0xeb7b5ed;
	DP3_4 =0x7dbe;
	DP4_5 =0x7ebdf;
	DP6_7 =0x7fdfbfe;
	LCDCON1=(0)|(1<<5)|(0x3<<8)|(0x3<<10)|(5<<12); //4位单扫描模式,禁止视频输出
	LCDCON2=(240-1)|((320/4-1)<<10)|(10<<21);  
	LCDSADDR1=(0x1<<27)|(((U32)frameBuffer>>22)<<21)|\
	           (0x1fffff&((U32)frameBuffer>>1));   //4级灰度模式,禁止自刷新
	LCDSADDR2=(0x1fffff&(((U32)frameBuffer+(320*240*2/8))>>1))|(1<<29); //字节交换使能
	LCDSADDR3=320*2/16;
	LCDCON1=(1)|(1<<5)|(0x3<<8)|(0x3<<10)|(5<<12);  //允许视频输出
	
#endif	   


#ifdef MODE_G16

    DITHMODE=0x12210; 	
    DP1_2 =0xa5a5;      
	DP4_7 =0xba5da65; 
	DP3_5 =0xa5a5f;
	DP2_3 =0xd6b;
	DP5_7 =0xeb7b5ed;
	DP3_4 =0x7dbe;
	DP4_5 =0x7ebdf;
	DP6_7 =0x7fdfbfe;
	LCDCON1=(0)|(1<<5)|(0x3<<8)|(0x3<<10)|(5<<12);  //4位单扫描模式,禁止视频输出
	LCDCON2=(240-1)|((320/4-1)<<10)|(10<<21);  
	LCDSADDR1=(0x2<<27)|(((U32)frameBuffer>>22)<<21)|\
	           (0x1fffff&((U32)frameBuffer>>1));    //16级灰度模式,禁止自刷新
	LCDSADDR2=(0x1fffff&((((U32)frameBuffer+(320*240*4/8))>>1)))|(1<<29); //字节交换使能
	LCDSADDR3= 320*4/16;
	LCDCON1=(1)|(1<<5)|(0x3<<8)|(0x3<<10)|(5<<12); //允许视频输出
	
#endif
 
}


void LCD_CLS(void)
{
    unsigned char i,k;
    for(i=0;i<240;i++)
    
#ifdef MODE_MONO    
        for(k=0;k<40;k++)
#endif       

#ifdef MODE_G4    
        for(k=0;k<80;k++)
#endif

#ifdef MODE_G16    
        for(k=0;k<160;k++)
#endif 

            frameBuffer[i][k]=0;
}

void lcdtest(void) 
{
    int i,k;
    LCD_INIT();
    LCD_CLS();
    for(i=10;i<220;i++)
       for(k=10;k<150;k++)
           frameBuffer[i][k]=0xff;  
      
}

⌨️ 快捷键说明

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