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

📄 lcdc.c

📁 基于arm嵌入式处理器的LCDC驱动代码及详细pdf中文手册
💻 C
字号:
/*                                                                                            
********************************************************************************************  
*filename:			lcdc.c						                                                  
*author:			zhangbing	                                                                  
*create date:		2005-5-10
*description:	    The file consists of the grey function test of lcdc         
*modify history:	
*misc:                                                                                        
********************************************************************************************  
*/ 

#include <stdio.h>
#include "HA_TypeDef.h" 
#include "lcdc.h"
#include "hardware_reg.h"



//*********************************
//gpio
//*********************************
#define PORT_BASE	0X1000B000

#define DBCLK_DIV	0X1000B000

#define PORTE_DIR	(PORT_BASE+0X34)
#define PORTE_SEL	(PORT_BASE+0X38)
#define PORTE_INCTL	(PORT_BASE+0X3C)
#define PORTE_INTRCTL	(PORT_BASE+0X40)
#define PORTE_INTRCLR	(PORT_BASE+0X44)
#define PORTE_DATA	(PORT_BASE+0X48)
//ER init_lcdc(U8 colour_type)
ER init_lcdc(U32 sysclk,U8 test_flg,U8 colour_type)
{
	U32 t1;
	U8 i,tmp;
	U8  * ptr;
	
	*(RP)PORTE_SEL = 0X1<<11;			//GPIO端口E配置为LCDC用
	*(RP)PORTE_DATA =( 0X1 << 11);
	
	
	
	*(RP)SSA = VS_BASE;				//存储缓冲区设置
	*(RP)SIZE = 0x00f00140;     	//屏幕分辨率为240*320
	*(RP)HCR = 0xc8000204;			//水平配置	
	*(RP)VCR = 0x14000102;			//垂直配置
	//*(RP)PWMR = 0x00000120;			//对比度控制
	*(RP)DMACR = 0x80070003;		//DMA配置

	
	if(colour_type == grey4)
	{
		tmp = (U8)(sysclk/1000000);
		tmp = tmp/5;
		*(RP)PCR = (0x22000000)|(tmp-1);		//4级灰度控制字
		
		/*调色板寄存器设置*/
		*(RP)LGPMR = 0x00000000;
		*(RP)(LGPMR+4) = 0x00000004;
		*(RP)(LGPMR+8) = 0x0000000a;
		*(RP)(LGPMR+12) = 0x0000000f;
		
		if(test_flg)
		{
			ptr = (U8 *)fish4;			
			
			/*4显示4级灰度图片fish4*/
			for(t1=0; t1<320*240*2/8; t1++)
				*(RP8)(VS_BASE+t1) = *(ptr+t1);												
		}
	}
	
	else if(colour_type == grey16)
	{
		tmp = (U8)(sysclk/1000000);
		tmp = tmp/5;
		*(RP)PCR = (0x24000000)|(tmp-1);	//16级灰度控制字
		
		/*调色板寄存器设置*/
		for(i=0;i<16;i++)
			*(RP)(LGPMR+4*i) = i;
		
		if(test_flg)	
		{
			ptr = (U8 *)fish16;

			/*16显示4级灰度图片fish16*/
			for(t1=0; t1<320*240*4/8; t1++)
				*(RP8)(VS_BASE+t1) = *(ptr+t1);		
		}
	}
		
	else
		return E_SYS;
		
	/*如果不显示测试图片,则把屏幕刷黑*/
	if(!test_flg)
		for(t1=0; t1<320*240*(colour_type==grey4?2:4)/8; t1++)
			*(RP8)(VS_BASE+t1) = 0xff;	
	
	*(RP)LECR = 0x00000001;    //使能LCDC
	
    printf("LCDC has been initialed!\n");	

                                                                                                                            
	return E_OK;		                                                                                                     
	                                                                                                                             
}  




⌨️ 快捷键说明

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