?? drvlcd_driver.cqm.c
字號:
Coladd_master(startx,startx);
Pagadd_master(starty,endy);
drvLcd_WriteInstruct(0x2c); //write lcd data ram command
for(i=0;i<(endy-starty);i++)
{
Dispcolor_master(R,G,B,1);
}
}
void drawrectangle(int sx,int sy,int ex,int ey,char r,char g,char b)
{
drawhline(sx,sy,ex,sy,r,g,b);
drawvline(sx,sy,sx,ey,r,g,b);
drawhline(sx,ey,ex,ey,r,g,b);
drawvline(ex,sy,ex,ey,r,g,b);
}
void Dispcolor_master(char a,char b,char c,int w)
{
int i;
#ifdef color12bit
for(i=0;i<w;i++)
{
drvLcd_WriteData(a);
drvLcd_WriteData(b);
drvLcd_WriteData(c);
}
#endif
#ifdef color16bit
for(i=0;i<w;i++)
{
drvLcd_WriteData(a);
drvLcd_WriteData(b);
}
#endif
}
void drvLcd_WriteChar(U8 kPage,U8 kColumn,U8 kReverseDispOnOff,U8 kCharABC)
{
U8 CharBmpBuf[24];
if((kCharABC>=0x30)&&(kCharABC< 0x3a))
{
drvLcd_WirteChar1(kPage,kColumn,kReverseDispOnOff,(U8 *)(number0to9+(kCharABC-0x30)*24));
}
else
{
LcdGetEGBMP(0x00,kCharABC, CharBmpBuf);
drvLcd_WirteChar1(kPage,kColumn,kReverseDispOnOff,CharBmpBuf);
}
}
void drvLcd_WirteChar1(U8 kPage,U8 kColumn,U8 kReverseDispOnOff,U8 *pkbuf)
{
int i;
U8 j=0; //控制行號.
#ifdef LightBlue
for(i=0;i<24;) /*每個字模取24bytes,Row-Scans 每次寫兩個字節(jié).*/
{
tempchar=*(pkbuf+i);
if(tempchar==0)
{
if(WordColor==1)
displaybyte(kColumn,kPage+j,0xdf,0x1b,0x00);
else if(WordColor==3)
displaybyte(kColumn,kPage+j,0xef,0x5d,0x00);
else if(WordColor==2)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn,kPage+j,0x29,0x9b,0x00);
}
else
{
displaybyte(kColumn,kPage+j,0xdf,0x7f,0x00); //puple
}
}
else
{
if(kReverseDispOnOff)
{
displaybyte(kColumn,kPage+j,0x29,0x9b,0x00);
}
else
{
displaybyte(kColumn,kPage+j,0x6d,0xbe,0x00); //puple
}
}
}
else
{ // if(!kReverseDispOnOff)
if(WordColor==1)
{
displaybit(kColumn,kPage+j,0x00,0x31,0x00,kReverseDispOnOff);
}
else
displaybit(kColumn,kPage+j,0x00,0x31,0x00,kReverseDispOnOff); //black
}
tempchar=pkbuf[i+1];
if(tempchar==0)
{
if(WordColor==1)
displaybyte(kColumn+8,kPage+j,0xdf,0x1b,0x00);
else if(WordColor==3)
displaybyte(kColumn+8,kPage+j,0xef,0x5d,0x00);
else if(WordColor==2)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn+8,kPage+j,0x29,0x9b,0x00);
}
else
{
displaybyte(kColumn+8,kPage+j,0xdf,0x7f,0x00); //puple
}
}
else
{
if(kReverseDispOnOff)
{
displaybyte(kColumn+8,kPage+j,0x29,0x9b,0x00);
}
else
{
displaybyte(kColumn+8,kPage+j,0x6d,0xbe,0x00); //puple
}
}
}
else
{ // if(!kReverseDispOnOff)
if(WordColor==1)
{
displaybit(kColumn+8,kPage+j,0x00,0x31,0x00,kReverseDispOnOff);
}
else
displaybit(kColumn+8,kPage+j,0x00,0x31,0x00,kReverseDispOnOff); //black
}
i=i+2;
j++;
}
#endif
#ifdef DeepBlue
for(i=0;i<24;) /*每個字模取24bytes,Row-Scans 每次寫兩個字節(jié).*/
{
tempchar=*(pkbuf+i);
if(tempchar==0)
{
if(WordColor==0)
{
displaybyte(kColumn,kPage+j,0x1a,0x10,0x00);
}
else if(WordColor==1)
displaybyte(kColumn,kPage+j,0x3b,0x94,0x00);
else if(WordColor==4)
displaybyte(kColumn,kPage+j,0x1a,0x10,0x00);
else if(WordColor==5)
displaybyte(kColumn,kPage+j,0xef,0x5d,0x00);
else if(WordColor==2)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn,kPage+j,0x1a,0x10,0x00);
}
else
{
displaybyte(kColumn,kPage+j,0xcf,0x3f,0x00); //puple
}
}
else if(WordColor==3)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn,kPage+j,0xcf,0x3f,0x00);
}
else
{
displaybyte(kColumn,kPage+j,0x1a,0x10,0x00); //puple
}
}
}
else
{ // if(!kReverseDispOnOff)
if(WordColor==0)
displaybit(kColumn,kPage+j,0xcf,0xd1,0x00,kReverseDispOnOff);
else if(WordColor==1)
displaybit(kColumn,kPage+j,0xff,0xff,0x00,kReverseDispOnOff);
else if(WordColor==2)
displaybit(kColumn,kPage+j,0x1a,0x10,0x00,kReverseDispOnOff);
else if(WordColor==3)
displaybit(kColumn,kPage+j,0xff,0xff,0x00,kReverseDispOnOff);
else if(WordColor==4)
displaybit(kColumn,kPage+j,0xbf,0x60,0x00,kReverseDispOnOff);
else if(WordColor==5)
displaybit(kColumn,kPage+j,0x1a,0x10,0x00,kReverseDispOnOff);
}
tempchar=pkbuf[i+1];
if(tempchar==0)
{
if(WordColor==0)
{
displaybyte(kColumn+8,kPage+j,0x1a,0x10,0x00);
}
else if(WordColor==1)
displaybyte(kColumn+8,kPage+j,0x3b,0x94,0x00);
else if(WordColor==4)
displaybyte(kColumn+8,kPage+j,0x1a,0x10,0x00);
else if(WordColor==5)
displaybyte(kColumn+8,kPage+j,0xef,0x5d,0x00);
else if(WordColor==2)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn+8,kPage+j,0x1a,0x10,0x00);
}
else
{
displaybyte(kColumn+8,kPage+j,0xcf,0x3f,0x00); //puple
}
}
else if(WordColor==3)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn+8,kPage+j,0xcf,0x3f,0x00);
}
else
{
displaybyte(kColumn+8,kPage+j,0x1a,0x10,0x00); //puple
}
}
}
else
{ // if(!kReverseDispOnOff)
if(WordColor==0)
displaybit(kColumn+8,kPage+j,0xcf,0xd1,0x00,kReverseDispOnOff);
else if(WordColor==1)
displaybit(kColumn+8,kPage+j,0xff,0xff,0x00,kReverseDispOnOff);
else if(WordColor==2)
displaybit(kColumn+8,kPage+j,0x1a,0x10,0x00,kReverseDispOnOff);
else if(WordColor==3)
displaybit(kColumn+8,kPage+j,0xff,0xff,0x00,kReverseDispOnOff);
else if(WordColor==4)
displaybit(kColumn+8,kPage+j,0xbf,0x60,0x00,kReverseDispOnOff);
else if(WordColor==5)
displaybit(kColumn+8,kPage+j,0x1a,0x10,0x00,kReverseDispOnOff);
}
i=i+2;
j++;
}
#endif
#ifdef Orange
for(i=0;i<24;) /*每個字模取24bytes,Row-Scans 每次寫兩個字節(jié).*/
{
tempchar=*(pkbuf+i);
if(tempchar==0)
{
if(WordColor==0)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn,kPage+j,0xf7,0x7a,0x00);
}
else
{
displaybyte(kColumn,kPage+j,0xe3,0xa4,0x00); //puple
}
}
else if(WordColor==1)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn,kPage+j,0xe3,0xa4,0x00);
}
else
{
displaybyte(kColumn,kPage+j,0xf7,0x7a,0x00); //puple
}
}
else if(WordColor==2)
displaybyte(kColumn,kPage+j,0xef,0x5d,0x00);
}
else
{ // if(!kReverseDispOnOff)
if(WordColor==0)
displaybit(kColumn,kPage+j,0xcf,0xd1,0x00,kReverseDispOnOff);
else if(WordColor==1)
displaybit(kColumn,kPage+j,0x69,0x40,0x00,kReverseDispOnOff);
else if(WordColor==2)
displaybit(kColumn,kPage+j,0x69,0x40,0x00,kReverseDispOnOff);
}
tempchar=pkbuf[i+1];
if(tempchar==0)
{
if(WordColor==0)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn+8,kPage+j,0xf7,0x7a,0x00);
}
else
{
displaybyte(kColumn+8,kPage+j,0xe3,0xa4,0x00); //puple
}
}
else if(WordColor==1)
{
if(kReverseDispOnOff)
{
displaybyte(kColumn+8,kPage+j,0xe3,0xa4,0x00);
}
else
{
displaybyte(kColumn+8,kPage+j,0xf7,0x7a,0x00); //puple
}
}
else if(WordColor==2)
displaybyte(kColumn+8,kPage+j,0xef,0x5d,0x00);
}
else
{ // if(!kReverseDispOnOff)
if(WordColor==0)
displaybit(kColumn+8,kPage+j,0xcf,0xd1,0x00,kReverseDispOnOff);
else if(WordColor==1)
displaybit(kColumn+8,kPage+j,0x69,0x40,0x00,kReverseDispOnOff);
else if(WordColor==2)
displaybit(kColumn+8,kPage+j,0x69,0x40,0x00,kReverseDispOnOff);
}
i=i+2;
j++;
}
#endif
}
/************************************************************************
* function LcdHEXToBCD(int kNum,pdrvLcd_DataStruct_t *pkBCDDataStruct)
* it will convert the kNum HEX to the decimal save at *pkBCDDataStruct
* input kNum : the value will be converted
* pkBCDDataStruct: the convered result will stores at it
****************************************************************************/
void LcdHEXToBCD(int kNum,pdrvLcd_DataStruct_t pkBCDDataStruct)
{
int tempnum;
pkBCDDataStruct->First=(U8)(kNum/100000);
tempnum=kNum%100000;
pkBCDDataStruct->Second=(U8)(tempnum/10000);
tempnum=tempnum%10000;
pkBCDDataStruct->Third=(U8)(tempnum/1000);
tempnum=tempnum%1000;
pkBCDDataStruct->Fourth=(U8)(tempnum/100);
tempnum=tempnum%100;
pkBCDDataStruct->Fifth=(U8)(tempnum/10);
tempnum=tempnum%10;
pkBCDDataStruct->Sixth=(U8)tempnum;
}
/************************************************************************
* function drvLcd_PrintfEnglishWord(U8 kPage,U8 kColumn,const U8 *pkPointer)
* it will show a english string at the kPage,kColumn
* input kPage : the value should be 0-7,select the LCD page
* kColumn: the value should be 0-128,select the LCD column
* kReverseDispOnOff: select normal show it or reverse show it
* *pkPointer: the string will be shown
****************************************************************************/
#if 1
void drvLcd_PrintfEnglishWord(U8 kPage,U8 kColumn,const U8 *pkPointer)
{
U8 reverse=0;
U8 i,mycount;
U8 temp;
i=0;
mycount=0;
while(*(pkPointer+i)!='\0')
{
temp=*(pkPointer+i);
if(temp=='~')
{
reverse=(U8)(~reverse);
}else{
drvLcd_WriteChar((U8)(kPage),(U8)(kColumn+mycount*8),reverse,temp);
mycount++;
}
i++;
if(i>=16) break;
}
}
#endif
void LcdGetEGBMP(U8 kQu, U8 kWei,U8 *buff) //取ISO8859-1259字模
{
int offset;
offset = (int)((U32)kQu*256+(kWei))*24+108932+4+19008;
PSA_AccessReservedArea((char *)buff, offset, 24);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -