📄 lcdprint.c
字号:
//#include <LPC213x.h>
#include <stdio.h>
#include "LCD.h"
#include "LCDprint.h"
#include "Flash.h"
#include "DataDeclare.h"
//====================================================================================
unsigned int GX=0,GY=0,BACKCOL=WHITE,FRONTCOL=BLACK,MOD=NORMAL,SIZE=12;
//====================================================================================
void SetPrintf(unsigned int x, unsigned int y,unsigned int BackColor,unsigned int FrontColor,
unsigned int FillMod,unsigned int Fontsize)
{
if (x != REMAIN)
GX = x % 240;
if (y != REMAIN)
GY = y % 320;
if (BackColor != REMAIN)
BACKCOL=BackColor & 0x0000FFFF;
if (FrontColor != REMAIN)
FRONTCOL=FrontColor & 0x0000FFFF;
if (FillMod != REMAIN)
MOD = FillMod;
if (Fontsize != REMAIN)
if (Fontsize == 16)
SIZE = 16;
else
SIZE = 12;
}
//====================================================================================
void PrintAscF(unsigned char *pAscii) //Fixedsys
{
unsigned char i, j;
unsigned char str;
unsigned int OffSet;
OffSet = *pAscii - 32;
for (i=0;i<16;i++)
{
SetRamAddr(GX,GY+i);
SendCom(0x22);
str = *(AsciiLibF + OffSet + i*96);
for (j=0;j<8;j++)
if ( str & (0x80 >> j) )
SendDat(FRONTCOL);
else
if (NORMAL == MOD)
SendDat(BACKCOL);
else
{
SetRamAddr(GX+j+1,GY+i);
SendCom(0x22);
}
}
}
//====================================================================================
void PrintAsc12(unsigned char *pAscii) //Fixedsys
{
unsigned char i, j;
unsigned char str;
unsigned int OffSet;
OffSet = (*pAscii - 32) * 12;
for (i=0;i<12;i++)
{
SetRamAddr(GX,GY+i);
SendCom(0x22);
str = *(AscSmall + OffSet + i);
for (j=0;j<6;j++)
if ( str & (0x80 >> j) )
SendDat(FRONTCOL);
else
if (NORMAL == MOD)
SendDat(BACKCOL);
else
{
SetRamAddr(GX+j+1,GY+i);
SendCom(0x22);
}
}
}
//====================================================================================
void PrintChsF(unsigned char *pChs) //Flash
{
unsigned int i=0,k=0;
unsigned char buf[32]={0};
unsigned int str;
i = ((pChs[0] - 161) * 94 + (pChs[1] - 161)) * 32;
FlashRead(i,32,buf);
for (i=0; i < 16; i++)
{
SetRamAddr(GX,GY+i);
SendCom(0x22);
str = (buf[i*2] << 8) | buf[i*2+1];
for (k=0; k < 16; k++)
if (str & (0x8000 >> k))
SendDat(FRONTCOL);
else
if (NORMAL == MOD)
SendDat(BACKCOL);
else
{
SetRamAddr(GX+k+1,GY+i);
SendCom(0x22);
}
}
}
//====================================================================================
void PrintChsF12(unsigned char *pChs) //Flash
{
unsigned int i=0,k=0;
unsigned char buf[24]={0};
unsigned int str;
i = ((pChs[0] - 161) * 94 + (pChs[1] - 161)) * 24 + 0x00080000;
FlashRead(i,24,buf);
for (i=0; i < 12; i++)
{
SetRamAddr(GX,GY+i);
SendCom(0x22);
str = (buf[i*2] << 8) | buf[i*2+1];
for (k=0; k < 12; k++)
if (str & (0x8000 >> k))
SendDat(FRONTCOL);
else
if (NORMAL == MOD)
SendDat(BACKCOL);
else
{
SetRamAddr(GX+k+1,GY+i);
SendCom(0x22);
}
}
}
//====================================================================================
void Locate(unsigned int x,unsigned int y)
{
GX = (x * SIZE) >> 1;
GY = y * SIZE;
OUT_OF_RANGE(ScreenW)
}
//====================================================================================
int fputc(int ch, FILE *f)
{
static int last=0;
HOUT_OF_RANGE;
if (ch < 128) //ASC
if (ch == '\n')
{
GX=0;
GY+=SIZE;
HOUT_OF_RANGE;
}
else
{
OUT_OF_RANGE(ScreenW - (SIZE >> 1) + 1)
if (SIZE == 16)
PrintAscF((unsigned char *)&ch);
else
PrintAsc12((unsigned char *)&ch);
last=0;
GX+=(SIZE >> 1); //ASC is half width
OUT_OF_RANGE(ScreenW)
}
else //Chs
if(last == 0) //Wait for next byte
last = ch;
else
{
OUT_OF_RANGE(ScreenW - SIZE + 1)
last = (ch << 8) | last;
if (SIZE == 16)
PrintChsF((unsigned char *)&last);
else
PrintChsF12((unsigned char *)&last);
last = 0;
GX+=SIZE;
OUT_OF_RANGE(ScreenW)
}
return ch;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -