📄 nedu_drive_lcd.c
字号:
/*
*********************************************************************************************************************
* 东软培训中心教学项目:基于ARM和uc/os-II的PDA系统
*
* (c) Copyright 2005, 东软培训中心
* All Rights Reserved
*
* 模块名称:驱动程序模块
* 文件名:NEDU_DRIVE_LCD.C
* 作者:朱成果
* 时间:2005年9月20日
* 版本:V0.01
**********************************************************************************************************************
*/
#include "def.h"
#include "44b.h"
#include "driven.h"
U32* pLCDBuffer16=(U32*)0xc000000;
extern RTC_REG RTC_data, RTC_Sdata;
extern char intstr[9];
extern RECLIST numturm[100];
void LCDDisplayOpen(U8 isOpen);
void Delay(int time);
/*
**********************************************************************************************************************
* LCD_INIT
*
* 作者:北京博创兴业科技有限公司
*
* 时间:2005年9月20日
*
* 描述:初始化显示控制器的相关寄存器,清除从0x0c000000开始的缓冲区320*240=768000字节。
*
* 参数:无
*
* 返回值:无
*
***********************************************************************************************************************
*/
void LCD_Init()
{
int i;
U32 LCDBASEU,LCDBASEL,LCDBANK;
LCDDisplayOpen(FALSE);
rLCDCON1=(0);
// disable LCD display
rLCDCON2=(239)|(119<<10)|(15<<21);
//320x240LCD LINEBLANK=15 (without any calculation)
LCDBANK=0xc000000>>22;//((U32)LCDBuffer16)>>22;
LCDBASEU=0x0;//((U32)LCDBuffer16)&0x3fffff;
LCDBASEL=LCDBASEU+(160)*240;
rLCDSADDR1= (0x3<<27) |(LCDBANK<<21)|LCDBASEU;//| ((((U32)LCDBuffer16)>>1)&0x7ffffff);
// color_mode, LCDBANK, LCDBASEU
rLCDSADDR2= (0<<29)|(0<<21)|LCDBASEL;
rLCDSADDR3= (320/2)|(0<<9);
//No virtual screen.
rREDLUT=0xfca86420;
rGREENLUT=0xfca86420;
rBLUELUT=0xfffffa50;
rLCDCON1=LCDCON1_ENVID|0<<1|0<<2|0<<3|(2<<5)|1<<7|(0x3<<8)|(0x3<<10)|(CLKVAL<<12);//|LCDCON1_MMODE;
// enable,8B_SNGL_SCAN,WDLY=16clk,WLH=16clk,CLKVAL=20
for(i=0;i<80*240;i++) //清除显示缓冲区
*(pLCDBuffer16+i)=0x0;
LCD_loard_tig(PDA_NEUTIG);
Delay(500);
LCDDisplayOpen(TRUE);
}
/*
**********************************************************************************************************************
* LCDDISPLAYOPEN
*
* 作者:北京博创兴业科技有限公司
*
* 时间:2005年9月20日
*
* 描述:根基输入参数通过GPB4开关显示。
*
* 参数: isOpen,逻辑变量,为TRUE时,打开显示,FALSE时关闭显示。
*
* 返回值:无
*
***********************************************************************************************************************
*/
void LCDDisplayOpen(U8 isOpen)
{
if(isOpen){
rPDATB&=~LCDDisplayPin;
}
else{
rPDATB|=LCDDisplayPin;
}
}
/*
**********************************************************************************************************************
* LCD_CLEAR
*
* 作者:朱成果
*
* 时间:2005年10月27日
*
* 描述:自动清除屏幕上"Neusoft东软"下方的所有内容。
*
* 参数:int mod:0:清除工作区;1:清除工作区和状态区;2:清除状态区;default:清除工作区。
*
* 返回值:无
*
***********************************************************************************************************************
*/
void LCD_Clear(int mod)
{
int i,clrnum;
U32* pList;
switch (mod)
{ case 0:
pList =(U32*)0xc002300;
clrnum = 0x3b60;
break;
case 1:
pList =(U32*)0xc002300;
clrnum = 0x42e0;
break;
case 2:
pList =(U32*)0xc010e00;
clrnum = 0x780;
break;
default:
pList =(U32*)0xc002300;
clrnum = 0x3b60;
break;
}
//LCDDisplayOpen(FALSE);
for (i=0;i<clrnum;i++)
{
*pList = 0xDBDBDBDB;
pList +=1;
}
//LCDDisplayOpen(TRUE);
}
/*
**********************************************************************************************************************
* LCD_INIT_FRAME
*
* 作者:朱成果
*
* 时间:2005年9月23日
*
* 描述:初始化所有显示缓冲区
*
* 参数:无
*
* 返回值:无
*
***********************************************************************************************************************
*/
void LCD_loard_tig(int tignum)
{
//LCDDisplayOpen(FALSE);
LCD_DDB(tignum);
//LCDDisplayOpen(TRUE);
}
/*
**********************************************************************************************************************
* LCD_PUTCF
*
* 作者:朱成果
*
* 时间:2005年10月2日
*
* 描述:把ASCII字符按指定颜色,直接打印到屏幕指定位置。
*
* 参数:ch:所要打印的字符ASCII值;color:所要打印的颜色,256色;pput:字符要打印屏幕位置左上角地址。
*
* 返回值:TRUE:打印成功;FALSE:打印失败。
*
***********************************************************************************************************************
*/
U8 LCD_Putcf(char ch, U32 fcolour, U32 *pdis, U32 bcolour)
{
U8 i;
i = LCD_PUTC(ch, fcolour, pdis, bcolour);
return(i);
}
/*
**********************************************************************************************************************
* LCD_PRINTS
*
* 作者:朱成果
*
* 时间:2005年10月2日
*
* 描述:把ASCII字符串按指定颜色,直接打印到屏幕指定位置。
*
* 参数:plist:所要打印的ASCII字符串首地址;color:所要打印的颜色,256色;pput:字符要打印屏幕位置左上角地址。
*
* 返回值:TRUE:打印成功;FALSE:打印失败。
*
***********************************************************************************************************************
*/
U8 LCD_Prints(char *plist, U32 fcolour, U32 *pdiss, U32 bcolour)
{
U8 i;
while ( *plist != 0x0d & *plist != 0x0 )
{
i = LCD_Putcf(*plist,fcolour,pdiss,bcolour);
if(i == FALSE)
break;
plist += 1;
pdiss += 2;
}
return(i);
}
//end of lcd module
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -