📄 lcddrv.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 + -