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

📄 lcddrv.c

📁 HaiBIOS 是为我的S3C2410开发板写的一个启动程序。 C盘是RAMDISK
💻 C
字号:
/*
;---------------------------------------------------------------------------------
; Copyright (c) Haisoft 2007-9-1
; Author:				Kingsea
; Email:				jinhailiao@163.com
;-------------------------------------------------------------
; Project:				HaiBios
; File:					lcddrv.c
; Description:
;-------------------------------------------------------------
; Reversion Histroy:
;-------------------------------------------------------------
; Version		date		operations				by who
; 1.0.0		2007-09-01		Create					Kingsea
;
;---------------------------------------------------------------------------------
*/
#include "haitype.h"
#include "cfg2410.h"
#include "reg2410.h"

#if 0

#define CLKVAL_60HZ	4 	
    // 60hz @50Mhz
    //VSYNC,HSYNC should be inverted
    //HBPD=6VCLK,HFPD=2VCLK,HSPW=3VCLK
    //VBPD=1HSYNC,VFPD=2HSYNC,VSPW=1HSYNC
#define CLKVAL	9 	
#define MMODE	0
#define PNRMODE	3
#define BPPMODE		13

#define VBPD		(2-1)
#define VFPD		(3-1)
#define VSPW	(2-1)
#define HBPD		(7*2-1)
#define HFPD		(3*2-1)
#define HSPW	(4-1)

#define LINEVAL		319
#define HOZVAL		239

#define INVVLINE		1
#define INVVFRAME	1


S_DWORD fb[LINEVAL+1][HOZVAL+1];
#else

#define VBPD				((2-1)&0xff)
#define VFPD				((3-1)&0xff)
#define VSPW				((2-1) &0x3f)
#define HBPD				((7*2-1)&0x7f)
#define HFPD				((3*2-1)&0xff)
#define HSPW				((4-1)&0xff)
#define MVAL				(13)
#define MVAL_USED 			(0)
#define M5D(n) 				((n) & 0x1fffff)
#define HOZVAL				(239)
#define LINEVAL				(319)
#define CLKVAL				9

static int disp_buffer[240][320];


#endif

S_VOID hai_InitLCD(S_VOID)
{
#if 0
	rLCDCON1 = (CLKVAL<<8)|(MMODE<<7)|(PNRMODE<<5)|(BPPMODE<<1); //LCD control 1
	rLCDCON2 = (VBPD<<24)|(LINEVAL<<14)|(VFPD<<6)|(VSPW<<0); //LCD control 2
	rLCDCON3 = (HBPD<<19)|(HOZVAL<<8)|(HFPD<<0); //LCD control 3
	rLCDCON4 = HSPW; //LCD control 4
	rLCDCON5 = (INVVLINE<<9)|(INVVFRAME<<8); //LCD control 5
	rLCDSADDR1 = (((S_DWORD)fb>>22)<<21)|(((S_DWORD)fb>>1)&0x1FFFFF); //STN/TFT Frame buffer start address 1
	rLCDSADDR2 = ((S_DWORD)fb+((LINEVAL+1)*(HOZVAL+1)*4))&0x1FFFFF; //STN/TFT Frame buffer start address 2
	rLCDSADDR3 = 0x00; //STN/TFT Virtual screen address set
	rLCDINTMSK |= 3; //LCD Interrupt mask
	rLPCSEL &= (~7); //disable LPC3600 Control
	rTPAL = 0x00; //TFT Temporary palette
#else
	rLCDCON1=(CLKVAL<<8)|(MVAL_USED<<7)|(3<<5)|(13<<1);
	rLCDCON2=(VBPD<<24)|(LINEVAL<<14)|(VFPD<<6)|(VSPW);
	rLCDCON3=(HBPD<<19)|(HOZVAL<<8)|(HFPD);
	rLCDCON4=(MVAL<<8)|(HSPW);
	rLCDCON5=(1<<11)|(1<<9)|(1<<8);
	rLCDSADDR1=(((unsigned int)disp_buffer>>22)<<21)|M5D((unsigned int)disp_buffer>>1);
	rLCDSADDR2=M5D(((unsigned int)disp_buffer+(240*320*4))>>1);
	rLCDSADDR3=0x00; 
	rLCDINTMSK|=(3);
	rLPCSEL&=(~7);
	rTPAL=0; 
	rLCDCON1|=0x01;
#endif
}

S_VOID hai_EnableLCD(S_VOID)
{
	rLCDCON1 |= 1;	
}

S_VOID hai_SetScreenBG(S_DWORD c)
{
	S_WORD i, j;

	for (i = 0; i < 240; i++)
		for (j = 0; j < 320; j++)
			disp_buffer[i][j] = c;
	return;
}

⌨️ 快捷键说明

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