LCD驱动-linux2.6系统
2012-12-08 21:49
127 查看
转自:/article/1885414.html
我的LCD驱动,列出原码,供探讨改进!
[c-sharp] view
plaincopy
#include "Config.h"
#include "IO.h"
#include "Glob.h"
#include "MyClib.h"
#include "LCD_Define.h"
#include "Logo.h"
#include <string.h>
void LCD_CmdWrite(Uchar cmdReg, Uchar cmdData);
Uchar LCD_CmdRead(Uchar cmdReg);
void LCD_DataWrite(Uchar WrData);
void LCD_ChkBusy(void);
void LCD_Reset(void);
void LCD_Initial(void);
void LcdScreenFill(Uchar SetX);
void GotoXY(Uchar x1,Uchar y1);
void CharOrGrapMode(Uchar CharSet)
{
vWholChipConVal=(CharSet) ? 0xcd : 0xc5;
LCD_CmdWrite(cWholChipConReg,vWholChipConVal);
}
void ReverAndBold(Uchar RevBold)
{//RevBold:bit5bit4:01-R_N_B_Y;10-R_Y_B_N;
LCD_CmdWrite(cWholChipCurConReg,0x48|RevBold);
}
void FontSize(Uchar XSize, Uchar YSize)
{//XSize,YSize:00,*1; 01,*2; 02,*3; 03,*4;
LCD_CmdWrite(cFonSizConReg,(((XSize&0x03)<<6)|((YSize&0x03)<<4))|0x0f);
}
void ASC_ChiAutoSele(Uchar AscSet)
{
vFonConVal=(AscSet) ? 0xa4 : 0xa0;
LCD_CmdWrite(cFonConReg,vFonConVal);
}
void SetActiveWindow(Uchar Left, Uchar Right, Uchar Top, Uchar Bottom)
{
LCD_CmdWrite(cActiWinLeReg, Left);
LCD_CmdWrite(cActiWinRiReg, Right);
LCD_CmdWrite(cActiWinToReg, Top);
LCD_CmdWrite(cActiWinBoReg, Bottom);
}
void PageOperate(Uchar PaMo, Uchar PaOp, Uchar DisPa)
{
//PaMo:01,p1; 02,p2; 03,p1+p2; 07,exp(p1+p2); PaOp:0,|; 1,^; 2,~; 3,&;
//DisPa:0,p0; 1,p1; 2,p2; 3,p1+p2;
vMemAccModVal=0x80+((PaMo&0x07)<<4)+((PaOp&0x03)<<2)+(DisPa&0x03);
LCD_CmdWrite(cMemAccModReg, vMemAccModVal);
}
void LCD_OFF(void)
{
LCD_CmdWrite(cWholChipConReg, vWholChipConVal&0b11111011);
}
void LCD_ON(void)
{
LCD_CmdWrite(cWholChipConReg, vWholChipConVal |0b00000100);
}
#define _dt 1
void LCD_CmdWrite(Uchar cmdReg, Uchar cmdData)
{
LCD_ChkBusy();
LCD_WR = 1;
LCD_RD = 1;
LCD_RS = 0;
LCD_DATA = cmdReg;
LCD_CS1 = 0;
LCD_WR = 0;
Delay4Xus(_dt);
LCD_WR = 1;
LCD_CS1 =1;
LCD_RS = 0;
LCD_DATA = cmdData;
LCD_CS1 =0;
LCD_WR = 0;
Delay4Xus(_dt);
LCD_WR = 1;
LCD_RS = 1;
LCD_CS1 =1;
LCD_DATA=0xff;
}
Uchar LCD_CmdRead(Uchar cmdReg)
{
Uchar REG_Read;
LCD_ChkBusy();
LCD_DATA = cmdReg;
LCD_CS1 =0;
LCD_RD = 1;
LCD_RS = 0;
LCD_WR = 0;
Delay4Xus(_dt);
LCD_WR = 1;
LCD_RS = 1;
LCD_CS1 =1;
LCD_DATA = 0xff;
LcdDataDir = 0XFF;
Delay4Xus(_dt);
LCD_CS1 = 0;
LCD_WR = 1;
LCD_RS = 0;
LCD_RD = 0;
Delay4Xus(_dt);
REG_Read = LCD_DATA;
LCD_RD = 1;
LCD_RS = 1;
LCD_CS1 =1;
LcdDataDir = 0X00;
LcdDataDir = 0XFF;
return REG_Read;
}
void LCD_DataWrite(Uchar WrData)
{
LCD_ChkBusy();
LCD_WR = 1;
LCD_RD = 1;
LCD_RS = 1;
LCD_DATA = WrData;
LCD_CS1 =0;
LCD_WR = 0;
Delay4Xus(_dt);
LCD_WR = 1;
LCD_CS1 =1;
LCD_RS = 1;
LCD_DATA=0xff;
}
void LCD_ChkBusy(void)
{
#if 0
do
{
TrisBusy=1;
Delay4Xus(20);
}
while(LCD_BUSY==1);
#else
Delay4Xus(5);
#endif
}
void LCD_Reset(void)
{
LCD_DATA = 0XFF;
LCD_RST = 1;
LCD_CS1 =1;
LCD_RD = 1;
LCD_RS = 1;
LCD_WR = 1;
Delay4Xus(_dt);
LCD_RST = 0;
DelayMs(20);
LCD_RST = 1;
DelayMs(100);
}
void LcdScreenFill(Uchar SetX)
{
Uchar READ_REG;
Uchar i,j;
LCD_CmdWrite(cPattDatReg,SetX);
// READ_REG = LCD_CmdRead(0xF0);
// READ_REG &= 0xF7;
// READ_REG |= 0x08;
READ_REG=0xA8;
LCD_CmdWrite(cFonConReg,READ_REG);
DelayMs(1);
LCD_DataWrite(SetX);
}
void GotoXY(Uchar x1,Uchar y1)
{
LCD_CmdWrite(cCursorPosXReg,x1); // 设定水平坐标地址
LCD_CmdWrite(cCursorPosYReg,y1); // 设定垂直坐标地址
}
void LCD_Initial(void)
{
LCD_CmdWrite(cWholChipConReg,0x20); // LCD 基本显示功能设定-1
DelayMs(5);
LCD_CmdWrite(cWholChipConReg,0xcd);
LCD_CmdWrite(cWholChipCurConReg,0x6b); // LCD 基本显示功能设定-2
LCD_CmdWrite(cDistOfWordOrLineReg,0x10); // 设定光标高度与行距
LCD_CmdWrite(cShifClkConReg,0x04);
LCD_CmdWrite(cFonConReg,0xa0); // 设定中文字型为”BIG5”
LCD_CmdWrite(cClkBusyFreqReg,0xf2); // 系统工作频率与中断准位设定
SetActiveWindow(0, 39, 0, 239);
LCD_CmdWrite(cDisWinBoReg,0xEF); // 设定LCD 模块水平起始地址(Y1)
LCD_CmdWrite(cDisWinLeReg,0x00); // 设定LCD 模块垂直结束地址(X2)
LCD_CmdWrite(cDisWinToReg,0x00); // 设定LCD 模块水平结束地址(Y2)
LCD_CmdWrite(cFraRatComAReg,0x40); // 变换FRM 极性的起始地址(Common)
LCD_CmdWrite(cContraConReg,0x20); // 设定DAC 电流输出,可调整LCD 亮度
LCD_CmdWrite(cAdvPowSetReg,0x30); // LCD 内存读写速度与功能设定
LCD_CmdWrite(cAdvDisSetReg,0x80); // LCD 特殊显示功能
LCD_CmdWrite(cMemAccModReg,0x91); // LCD 显示图层设定
vMemAccModVal=0x91;
GotoXY(0, 0);
LCD_CmdWrite(cBegSegmPosReg,0x00); // 设定垂直开始显示地址(Segment)
LCD_CmdWrite(cBegCommReg,0x00); // 设定于水平区块移动模式下,起始地址
LCD_CmdWrite(cEndCommReg,0xEF); // 设定于水平区块移动模式下,结束地址
LCD_CmdWrite(cBlinkTimReg,0x33); // 光标闪烁时间设定
LCD_CmdWrite(cFraRatComBReg,0x00); // 变换FRM 极性的结束地址(Common)
LCD_BLK = 1;
}
void PrintGraphicLogo(stWinAndCur *WinCur, const rom Uchar *Logo, Uint LogoLen)
{
Uint Li;
CharOrGrapMode(0);
SetActiveWindow(WinCur->WinLef, WinCur->WinRig, WinCur->WinTop, WinCur->WinBot);
GotoXY(WinCur->CurX, WinCur->CurY);
for(Li=0; Li<LogoLen; Li++)
{
LCD_DataWrite(*Logo++);
}
}
void PrintLargeLogo(const rom Uchar *Logo,Uint LogoLen)
{
Uint Li;
Uchar TempDl=40;
CharOrGrapMode(0);
SetActiveWindow(5, 34, 0, 239);
GotoXY(5, 53);
for(Li=0; Li<LogoLen; Li++)
{
LCD_DataWrite(*Logo++);
if(--TempDl==0x00)
{
DelayMs(8);
TempDl = 40;
}
}
}
void PrintTextOrGraph( far rom DispMenu * PtMenu,Uchar MenuNum)
{
Uchar TempBit1,TempBit2;
Uchar TB1,TB2=0;
far rom Uchar * TemPr=NULL;
Uint TB3;
for(TB1=0; TB1<MenuNum; TB1++,PtMenu++)
{
TempBit1=PtMenu->VisionOrNo;
TempBit2=PtMenu->DispCondition;
if(!(TempBit1&0x01))
break;
if(TempBit2&0x20)
{
if(PtMenu->StrLen==0x00)
{
PageOperate(2, 0, 2);
break;
}
else if(PtMenu->StrLen==0xff)
{
PageOperate(3, 1, 1);
break;
}
}
CharOrGrapMode((TempBit1&0x02) ? 0xff : 0x00);
ReverAndBold((TempBit1&0x0c)<<2);
FontSize((TempBit1&0xc0)>>6, (TempBit1&0x30)>>4);
ASC_ChiAutoSele((TempBit2&0x02) ? 0xff : 0x00);
SetActiveWindow(PtMenu->AcWinLef,
PtMenu->AcWinRig, PtMenu->AcWinTop, PtMenu->AcWinBot);
// GotoXY(PtMenu->StCurX, PtMenu->StCurY);
if(TempBit1&0x02)
{
GotoXY(PtMenu->StCurX, PtMenu->StCurY);
for (TB2=0,TB3=PtMenu->StrLen,
TemPr=(far rom Uchar *)((*PtMenu).StrPt); TB2<=PtMenu->StrRow; TB2++)
{
for (; ((*TemPr != '/0')&&(TB3>0)); TemPr++,TB3--)
{
LCD_DataWrite(*TemPr);
}
TB3=PtMenu->StrLen;
/* if(TempBit2&0x04)
GotoXY(PtMenu->StCurX, PtMenu->StCurY+TB2*26);
else */
GotoXY(PtMenu->StCurX, PtMenu->StCurY+TB2*29);
TemPr=(far rom Uchar *)((*PtMenu).StrPt+TB3*TB2);
}
}else if (!(TempBit2&0x08)&& (TempBit2&0x10))
{
GotoXY(PtMenu->StCurX, PtMenu->StCurY);
TB2=PtMenu->StrRow;
LcdScreenFill(TB2);
}else if (TempBit2&0x08)
{
GotoXY(PtMenu->StCurX, PtMenu->StCurY+TB2*29);
TB2++;
for (TB3=PtMenu->StrLen, TemPr=(far rom Uchar *)((*PtMenu).StrPt);
TB3>0; TemPr++,TB3--)
{
LCD_DataWrite(*TemPr);
}
}
}
}
[c-sharp] view
plaincopy
/*--------------------------------------------------------------------------
Dplay.H
C Display functions.
Copyright (c) 2008.03.20 for ?? Ltd.
Author : ZMF 2008.03.20
VOL : V0.1
--------------------------------------------------------------------------*/
#ifndef _LM2068R_DRIVER_H
#define _LM2068R_DRIVER_H
#include "LCD_Define.h"
extern void LCD_CmdWrite(Uchar cmdReg, Uchar cmdData);
extern Uchar LCD_CmdRead(Uchar cmdReg);
extern void LCD_DataWrite(Uchar WrData);
extern void LCD_ChkBusy(void);
extern void LCD_Reset(void);
extern void LCD_Initial(void);
extern void LcdScreenFill(Uchar SetX);
extern void GotoXY(Uchar x1,Uchar y1);
extern void CharOrGrapMode(Uchar CharSet);
extern void ReverAndBold(Uchar RevBold);//RevBold:bit5bit4:01-R_N_B_Y;10-R_Y_B_N;
extern void FontSize(Uchar XSize, Uchar YSize);
extern void ASC_ChiAutoSele(Uchar AscSet);
extern void SetActiveWindow(Uchar Left, Uchar Right, Uchar Top, Uchar Bottom);
extern void PageOperate(Uchar PaMo, Uchar PaOp, Uchar DisPa);
extern void PrintGraphicLogo(stWinAndCur *WinCur, const rom Uchar *Logo, Uint LogoLen);
extern void PrintLargeLogo( const rom Uchar *Logo,Uint LogoLen);
extern void PrintTextOrGraph( far rom DispMenu * PtMenu,Uchar MenuNum);
#endif
我的LCD驱动,列出原码,供探讨改进!
[c-sharp] view
plaincopy
#include "Config.h"
#include "IO.h"
#include "Glob.h"
#include "MyClib.h"
#include "LCD_Define.h"
#include "Logo.h"
#include <string.h>
void LCD_CmdWrite(Uchar cmdReg, Uchar cmdData);
Uchar LCD_CmdRead(Uchar cmdReg);
void LCD_DataWrite(Uchar WrData);
void LCD_ChkBusy(void);
void LCD_Reset(void);
void LCD_Initial(void);
void LcdScreenFill(Uchar SetX);
void GotoXY(Uchar x1,Uchar y1);
void CharOrGrapMode(Uchar CharSet)
{
vWholChipConVal=(CharSet) ? 0xcd : 0xc5;
LCD_CmdWrite(cWholChipConReg,vWholChipConVal);
}
void ReverAndBold(Uchar RevBold)
{//RevBold:bit5bit4:01-R_N_B_Y;10-R_Y_B_N;
LCD_CmdWrite(cWholChipCurConReg,0x48|RevBold);
}
void FontSize(Uchar XSize, Uchar YSize)
{//XSize,YSize:00,*1; 01,*2; 02,*3; 03,*4;
LCD_CmdWrite(cFonSizConReg,(((XSize&0x03)<<6)|((YSize&0x03)<<4))|0x0f);
}
void ASC_ChiAutoSele(Uchar AscSet)
{
vFonConVal=(AscSet) ? 0xa4 : 0xa0;
LCD_CmdWrite(cFonConReg,vFonConVal);
}
void SetActiveWindow(Uchar Left, Uchar Right, Uchar Top, Uchar Bottom)
{
LCD_CmdWrite(cActiWinLeReg, Left);
LCD_CmdWrite(cActiWinRiReg, Right);
LCD_CmdWrite(cActiWinToReg, Top);
LCD_CmdWrite(cActiWinBoReg, Bottom);
}
void PageOperate(Uchar PaMo, Uchar PaOp, Uchar DisPa)
{
//PaMo:01,p1; 02,p2; 03,p1+p2; 07,exp(p1+p2); PaOp:0,|; 1,^; 2,~; 3,&;
//DisPa:0,p0; 1,p1; 2,p2; 3,p1+p2;
vMemAccModVal=0x80+((PaMo&0x07)<<4)+((PaOp&0x03)<<2)+(DisPa&0x03);
LCD_CmdWrite(cMemAccModReg, vMemAccModVal);
}
void LCD_OFF(void)
{
LCD_CmdWrite(cWholChipConReg, vWholChipConVal&0b11111011);
}
void LCD_ON(void)
{
LCD_CmdWrite(cWholChipConReg, vWholChipConVal |0b00000100);
}
#define _dt 1
void LCD_CmdWrite(Uchar cmdReg, Uchar cmdData)
{
LCD_ChkBusy();
LCD_WR = 1;
LCD_RD = 1;
LCD_RS = 0;
LCD_DATA = cmdReg;
LCD_CS1 = 0;
LCD_WR = 0;
Delay4Xus(_dt);
LCD_WR = 1;
LCD_CS1 =1;
LCD_RS = 0;
LCD_DATA = cmdData;
LCD_CS1 =0;
LCD_WR = 0;
Delay4Xus(_dt);
LCD_WR = 1;
LCD_RS = 1;
LCD_CS1 =1;
LCD_DATA=0xff;
}
Uchar LCD_CmdRead(Uchar cmdReg)
{
Uchar REG_Read;
LCD_ChkBusy();
LCD_DATA = cmdReg;
LCD_CS1 =0;
LCD_RD = 1;
LCD_RS = 0;
LCD_WR = 0;
Delay4Xus(_dt);
LCD_WR = 1;
LCD_RS = 1;
LCD_CS1 =1;
LCD_DATA = 0xff;
LcdDataDir = 0XFF;
Delay4Xus(_dt);
LCD_CS1 = 0;
LCD_WR = 1;
LCD_RS = 0;
LCD_RD = 0;
Delay4Xus(_dt);
REG_Read = LCD_DATA;
LCD_RD = 1;
LCD_RS = 1;
LCD_CS1 =1;
LcdDataDir = 0X00;
LcdDataDir = 0XFF;
return REG_Read;
}
void LCD_DataWrite(Uchar WrData)
{
LCD_ChkBusy();
LCD_WR = 1;
LCD_RD = 1;
LCD_RS = 1;
LCD_DATA = WrData;
LCD_CS1 =0;
LCD_WR = 0;
Delay4Xus(_dt);
LCD_WR = 1;
LCD_CS1 =1;
LCD_RS = 1;
LCD_DATA=0xff;
}
void LCD_ChkBusy(void)
{
#if 0
do
{
TrisBusy=1;
Delay4Xus(20);
}
while(LCD_BUSY==1);
#else
Delay4Xus(5);
#endif
}
void LCD_Reset(void)
{
LCD_DATA = 0XFF;
LCD_RST = 1;
LCD_CS1 =1;
LCD_RD = 1;
LCD_RS = 1;
LCD_WR = 1;
Delay4Xus(_dt);
LCD_RST = 0;
DelayMs(20);
LCD_RST = 1;
DelayMs(100);
}
void LcdScreenFill(Uchar SetX)
{
Uchar READ_REG;
Uchar i,j;
LCD_CmdWrite(cPattDatReg,SetX);
// READ_REG = LCD_CmdRead(0xF0);
// READ_REG &= 0xF7;
// READ_REG |= 0x08;
READ_REG=0xA8;
LCD_CmdWrite(cFonConReg,READ_REG);
DelayMs(1);
LCD_DataWrite(SetX);
}
void GotoXY(Uchar x1,Uchar y1)
{
LCD_CmdWrite(cCursorPosXReg,x1); // 设定水平坐标地址
LCD_CmdWrite(cCursorPosYReg,y1); // 设定垂直坐标地址
}
void LCD_Initial(void)
{
LCD_CmdWrite(cWholChipConReg,0x20); // LCD 基本显示功能设定-1
DelayMs(5);
LCD_CmdWrite(cWholChipConReg,0xcd);
LCD_CmdWrite(cWholChipCurConReg,0x6b); // LCD 基本显示功能设定-2
LCD_CmdWrite(cDistOfWordOrLineReg,0x10); // 设定光标高度与行距
LCD_CmdWrite(cShifClkConReg,0x04);
LCD_CmdWrite(cFonConReg,0xa0); // 设定中文字型为”BIG5”
LCD_CmdWrite(cClkBusyFreqReg,0xf2); // 系统工作频率与中断准位设定
SetActiveWindow(0, 39, 0, 239);
LCD_CmdWrite(cDisWinBoReg,0xEF); // 设定LCD 模块水平起始地址(Y1)
LCD_CmdWrite(cDisWinLeReg,0x00); // 设定LCD 模块垂直结束地址(X2)
LCD_CmdWrite(cDisWinToReg,0x00); // 设定LCD 模块水平结束地址(Y2)
LCD_CmdWrite(cFraRatComAReg,0x40); // 变换FRM 极性的起始地址(Common)
LCD_CmdWrite(cContraConReg,0x20); // 设定DAC 电流输出,可调整LCD 亮度
LCD_CmdWrite(cAdvPowSetReg,0x30); // LCD 内存读写速度与功能设定
LCD_CmdWrite(cAdvDisSetReg,0x80); // LCD 特殊显示功能
LCD_CmdWrite(cMemAccModReg,0x91); // LCD 显示图层设定
vMemAccModVal=0x91;
GotoXY(0, 0);
LCD_CmdWrite(cBegSegmPosReg,0x00); // 设定垂直开始显示地址(Segment)
LCD_CmdWrite(cBegCommReg,0x00); // 设定于水平区块移动模式下,起始地址
LCD_CmdWrite(cEndCommReg,0xEF); // 设定于水平区块移动模式下,结束地址
LCD_CmdWrite(cBlinkTimReg,0x33); // 光标闪烁时间设定
LCD_CmdWrite(cFraRatComBReg,0x00); // 变换FRM 极性的结束地址(Common)
LCD_BLK = 1;
}
void PrintGraphicLogo(stWinAndCur *WinCur, const rom Uchar *Logo, Uint LogoLen)
{
Uint Li;
CharOrGrapMode(0);
SetActiveWindow(WinCur->WinLef, WinCur->WinRig, WinCur->WinTop, WinCur->WinBot);
GotoXY(WinCur->CurX, WinCur->CurY);
for(Li=0; Li<LogoLen; Li++)
{
LCD_DataWrite(*Logo++);
}
}
void PrintLargeLogo(const rom Uchar *Logo,Uint LogoLen)
{
Uint Li;
Uchar TempDl=40;
CharOrGrapMode(0);
SetActiveWindow(5, 34, 0, 239);
GotoXY(5, 53);
for(Li=0; Li<LogoLen; Li++)
{
LCD_DataWrite(*Logo++);
if(--TempDl==0x00)
{
DelayMs(8);
TempDl = 40;
}
}
}
void PrintTextOrGraph( far rom DispMenu * PtMenu,Uchar MenuNum)
{
Uchar TempBit1,TempBit2;
Uchar TB1,TB2=0;
far rom Uchar * TemPr=NULL;
Uint TB3;
for(TB1=0; TB1<MenuNum; TB1++,PtMenu++)
{
TempBit1=PtMenu->VisionOrNo;
TempBit2=PtMenu->DispCondition;
if(!(TempBit1&0x01))
break;
if(TempBit2&0x20)
{
if(PtMenu->StrLen==0x00)
{
PageOperate(2, 0, 2);
break;
}
else if(PtMenu->StrLen==0xff)
{
PageOperate(3, 1, 1);
break;
}
}
CharOrGrapMode((TempBit1&0x02) ? 0xff : 0x00);
ReverAndBold((TempBit1&0x0c)<<2);
FontSize((TempBit1&0xc0)>>6, (TempBit1&0x30)>>4);
ASC_ChiAutoSele((TempBit2&0x02) ? 0xff : 0x00);
SetActiveWindow(PtMenu->AcWinLef,
PtMenu->AcWinRig, PtMenu->AcWinTop, PtMenu->AcWinBot);
// GotoXY(PtMenu->StCurX, PtMenu->StCurY);
if(TempBit1&0x02)
{
GotoXY(PtMenu->StCurX, PtMenu->StCurY);
for (TB2=0,TB3=PtMenu->StrLen,
TemPr=(far rom Uchar *)((*PtMenu).StrPt); TB2<=PtMenu->StrRow; TB2++)
{
for (; ((*TemPr != '/0')&&(TB3>0)); TemPr++,TB3--)
{
LCD_DataWrite(*TemPr);
}
TB3=PtMenu->StrLen;
/* if(TempBit2&0x04)
GotoXY(PtMenu->StCurX, PtMenu->StCurY+TB2*26);
else */
GotoXY(PtMenu->StCurX, PtMenu->StCurY+TB2*29);
TemPr=(far rom Uchar *)((*PtMenu).StrPt+TB3*TB2);
}
}else if (!(TempBit2&0x08)&& (TempBit2&0x10))
{
GotoXY(PtMenu->StCurX, PtMenu->StCurY);
TB2=PtMenu->StrRow;
LcdScreenFill(TB2);
}else if (TempBit2&0x08)
{
GotoXY(PtMenu->StCurX, PtMenu->StCurY+TB2*29);
TB2++;
for (TB3=PtMenu->StrLen, TemPr=(far rom Uchar *)((*PtMenu).StrPt);
TB3>0; TemPr++,TB3--)
{
LCD_DataWrite(*TemPr);
}
}
}
}
[c-sharp] view
plaincopy
/*--------------------------------------------------------------------------
Dplay.H
C Display functions.
Copyright (c) 2008.03.20 for ?? Ltd.
Author : ZMF 2008.03.20
VOL : V0.1
--------------------------------------------------------------------------*/
#ifndef _LM2068R_DRIVER_H
#define _LM2068R_DRIVER_H
#include "LCD_Define.h"
extern void LCD_CmdWrite(Uchar cmdReg, Uchar cmdData);
extern Uchar LCD_CmdRead(Uchar cmdReg);
extern void LCD_DataWrite(Uchar WrData);
extern void LCD_ChkBusy(void);
extern void LCD_Reset(void);
extern void LCD_Initial(void);
extern void LcdScreenFill(Uchar SetX);
extern void GotoXY(Uchar x1,Uchar y1);
extern void CharOrGrapMode(Uchar CharSet);
extern void ReverAndBold(Uchar RevBold);//RevBold:bit5bit4:01-R_N_B_Y;10-R_Y_B_N;
extern void FontSize(Uchar XSize, Uchar YSize);
extern void ASC_ChiAutoSele(Uchar AscSet);
extern void SetActiveWindow(Uchar Left, Uchar Right, Uchar Top, Uchar Bottom);
extern void PageOperate(Uchar PaMo, Uchar PaOp, Uchar DisPa);
extern void PrintGraphicLogo(stWinAndCur *WinCur, const rom Uchar *Logo, Uint LogoLen);
extern void PrintLargeLogo( const rom Uchar *Logo,Uint LogoLen);
extern void PrintTextOrGraph( far rom DispMenu * PtMenu,Uchar MenuNum);
#endif
相关文章推荐
- LCD驱动-linux2.6系统
- Linux-2.6.38的LCD驱动分析(二)
- 按键扫描驱动--linux2.6系统下
- 基于S3C2410平台的LCD for Linux 2.6 驱动移植
- Linux监控系统开发详解(三)--LCD驱动分析
- Linux系统LCD驱动架构分析
- linux2.6的LCD驱动分析
- 在S3C2410的6寸LCD驱动在linux2.6上的移植
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- 基于linux-2.6.33的液晶驱动之lcd
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- 【移植驱动到Linux3.4.2内核之二】LCD,触摸屏,按键,USB等驱动程序的移植心得总结
- [转]详解Linux 2.6内核新文件系统变化机制(inotify)
- Linux-2.6驱动开发 4 内存分配
- 详解Linux2.6内核中基于platform机制的驱动模型
- Linux下的LCD驱动(一)
- Linux2.6环境下USB设备的驱动实现
- Linux_2.6字符设备驱动实例
- 移植LINUX的外围设备驱动到QNX系统中