📄 lcd.c
字号:
//
// File name =DISPLAY.CPP LCD显示器操作文件
// 设计 何风涛
//#include"class.h"
#include"classext.h"
unsigned char LcdAready(void) /* lcds2 */
{
register unsigned char value,image;
register unsigned long eadr;
eadr=PSD_DIRECTION_B;
image=0x00; /* inport */
asm estb image, [eadr];
value=LCD_CMD_RD;//run;
eadr=PSD_DATAOUT_E;
asm estb value, [eadr];
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
andb value, #0xEA;/* ready busw lcdon lcde lcds1 lcds2 tdq lcd */
orb value, #0x08;
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
if(pVar->Lcd_BG_Flag==0)
{
value=value | 0x20;
}else
{
value=value & 0xdf;
}
asm estb value, [eadr];
asm orb value, #0x10;
asm estb value, [eadr];
asm andb value, #0xEF;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
; asm incb image;
; asm incb image;
; asm incb image;
; asm incb image;
asm estb value, [eadr];
asm orb value, #0x0D;
asm estb value, [eadr];
eadr=PSD_DATAIN_B;
asm eldb value, [eadr];
eadr=PSD_DIRECTION_B;
image=0xff;
asm estb image, [eadr];
return value;
}
unsigned char LcdBready(void)/* lcds1 */
{
register unsigned char value,image;
register unsigned long eadr;
eadr=PSD_DIRECTION_B;
image=0x00; /* inport */
asm estb image, [eadr];
value=LCD_CMD_RD;// run;
eadr=PSD_DATAOUT_E;
asm estb value, [eadr];
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
andb value, #0xE6;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
orb value, #0x04;
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
if(pVar->Lcd_BG_Flag==0)
{
value=value | 0x20;
}else
{
value=value & 0xdf;
}
asm estb value, [eadr];
asm orb value, #0x10;
asm estb value, [eadr];
asm andb value, #0xEF;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
; asm incb image;
; asm incb image;
; asm incb image;
; asm incb image;
asm estb value, [eadr];
asm orb value, #0x0D;
asm estb value, [eadr];
eadr=PSD_DATAIN_B;
asm eldb value, [eadr];
eadr=PSD_DIRECTION_B;
image=0xff;
asm estb image, [eadr];
return value;
}
void LcdBcmd(register unsigned char value)
{
register unsigned char image;
register unsigned long eadr;
eadr=PSD_DATAOUT_B;
asm estb value, [eadr];
value=LCD_CMD_WR;//run;
eadr=PSD_DATAOUT_E;
asm estb value, [eadr];
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
andb value, #0xE6;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
orb value, #0x04;
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
if(pVar->Lcd_BG_Flag==0)
{
value=value | 0x20;
}else
{
value=value & 0xdf;
}
asm estb value, [eadr];
asm orb value, #0x10;
asm estb value, [eadr];
asm andb value, #0xEF;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
; asm incb image;
; asm incb image;
; asm incb image;
; asm incb image;
asm estb value, [eadr];
asm orb value, #0x0D;
asm estb value, [eadr];
}
void Lcdoff(void)
{
register unsigned char value,image;
register unsigned long eadr;
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
andb value, #0xef;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
orb value, #0x0d;
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
asm estb value, [eadr];
}
void LcdAcmd(register unsigned char value)
{
register unsigned char image;
register unsigned long eadr;
eadr=PSD_DATAOUT_B;
asm estb value, [eadr];
value=LCD_CMD_WR;//run;
eadr=PSD_DATAOUT_E;
asm estb value, [eadr];
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
andb value, #0xEA;/* ready busw lcdon lcde lcds1 lcds2 tdq lcd */
orb value, #0x08;
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
if(pVar->Lcd_BG_Flag==0)
{
value=value | 0x20;
}else
{
value=value & 0xdf;
}
asm estb value, [eadr];
asm orb value, #0x10;
asm estb value, [eadr];
asm andb value, #0xEF;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
asm orb value, #0x0D;
asm estb value, [eadr];
}
void LcdBdat(register unsigned char value)
{
register unsigned char image;
register unsigned long eadr;
eadr=PSD_DATAOUT_B;
asm estb value, [eadr];
value=LCD_DAT_WR;// run;
eadr=PSD_DATAOUT_E;
asm estb value, [eadr];
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
andb value, #0xE6;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
orb value, #0x04;
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
if(pVar->Lcd_BG_Flag==0)
{
value=value | 0x20;
}else
{
value=value & 0xdf;
}
asm estb value, [eadr];
asm orb value, #0x10;
asm estb value, [eadr];
asm andb value, #0xEF;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
asm orb value, #0x0D;
asm estb value, [eadr];
}
void LcdAdat(register unsigned char value)
{
register unsigned char image;
register unsigned long eadr;
eadr=PSD_DATAOUT_B;
asm estb value, [eadr];
value=LCD_DAT_WR;//run;
eadr=PSD_DATAOUT_E;
asm estb value, [eadr];
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
andb value, #0xEA;/* ready busw lcdon lcde lcds1 lcds2 tdq lcd */
orb value, #0x08;
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
if(pVar->Lcd_BG_Flag==0)
{
value=value | 0x20;
}else
{
value=value & 0xdf;
}
asm estb value, [eadr];
asm orb value, #0x10;
asm estb value, [eadr];
asm andb value, #0xEF;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
asm orb value, #0x0D;
asm estb value, [eadr];
}
void Lcdeon(void)
{
register unsigned char value,image;
register unsigned long eadr;
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
orb value, #0x10;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
asm estb value, [eadr];
}
void Lcdeoff(void)
{
register unsigned char value,image;
register unsigned long eadr;
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
andb value, #0xef;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
asm estb value, [eadr];
}
void Lcd_off(void)
{
register unsigned char value,image;
register unsigned long eadr;
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
orb value, #0x20;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
asm estb value, [eadr];
pVar->Lcd_BG_Flag=0x00;
}
void Lcd_on(void)
{
register unsigned char value,image;
register unsigned long eadr;
eadr=PSD_DIRECTION_A;
image=0x00; /* inport */
asm estb image, [eadr];
eadr=PSD_DATAIN_A;
asm
{
eldb value, [eadr];
andb value, #0xdf;/* ready busw lcdon lcde lcds1 lcs2 tdq lcd */
}
eadr=PSD_DIRECTION_A;
image=0xff; /* outport */
asm estb image, [eadr];
eadr=PSD_DATAOUT_A;
asm estb value, [eadr];
pVar->Lcd_BG_Flag=0xff;
pVar->Lcd_BG_Count=0;
}
void delay(int t)
{
int i,j;
for(i=0;i<t;i++)
{
j++;
}
}
void LcdClr(void)
{
unsigned int i;
for(i=0;i<1024;i++)
{
LcdBuf[i]=0;
}
}
void LcdPutc(unsigned char X, unsigned char Y, unsigned int CHAR, unsigned int TYPE)
{
unsigned int ADR,i,k,t,Z,T,ZL,TL,NF=0;
unsigned char ch;
X=X%128;
switch(TYPE)
{
case 0x00: Y=Y%8; //6点阵
Z=Y*128+X;
T=CHAR*6;
for(i=0;i<6;i++)
{
LcdBuf[Z]=ASC_6[T];
Z++;
T++;
}
break;
case 0x01: Y=Y%8; //8点阵
Z=Y*128+X;
T=CHAR*8;
for(i=0;i<8;i++)
{
LcdBuf[Z]=ASC_8[T];
Z++;
T++;
}
break;
case 0x02: Y=Y%8; //12点阵
Z=Y*128+X;
ZL=Z+128;
T=CHAR*24;
TL=T+12;
for(i=0;i<12;i++)
{
LcdBuf[Z] =HZ_12[T];
LcdBuf[ZL]=HZ_12[TL];
Z++;
T++;
ZL++;
TL++;
}
break;
case 0x03: Y=Y%8; //16点阵
Z=Y*128+X;
ZL=Z+128;
T=CHAR*32;
TL=T+16;
for(i=0;i<16;i++)
{
LcdBuf[Z] =HZ_16[T];
LcdBuf[ZL]=HZ_16[TL];
Z++;
T++;
ZL++;
TL++;
}
break;
case 0x04: Y=Y%8; //816点阵
Z=Y*128+X;
ZL=Z+128;
T=CHAR*16;
TL=T+8;
for(i=0;i<8;i++)
{
LcdBuf[Z] =HZ_816[T];
LcdBuf[ZL]=HZ_816[TL];
Z++;
T++;
ZL++;
TL++;
}
break;
case 0x05: Y=Y%8; //8点阵
Z=Y*128+X;
T=CHAR*12;
for(i=0;i<12;i++)
{
LcdBuf[Z]=ASC_811[T];
Z++;
T++;
}
break;
case 0x81: Y=Y%8; //8点阵
Z=Y*128+X;
T=CHAR*8;
for(i=0;i<8;i++)
{
if(i<6) LcdBuf[Z]=~ ASC_8[T];
else LcdBuf[Z]=0;
Z++;
T++;
}
break;
case 0x82: Y=Y%8; //12点阵
Z=Y*128+X;
ZL=Z+128;
T=CHAR*24;
TL=T+12;
for(i=0;i<12;i++)
{
LcdBuf[Z] =~ HZ_12[T];
LcdBuf[ZL]=~ HZ_12[TL];
Z++;
T++;
ZL++;
TL++;
}
break;
case 0x83: Y=Y%8; //16点阵
Z=Y*128+X;
ZL=Z+128;
T=CHAR*32;
TL=T+16;
for(i=0;i<16;i++)
{
LcdBuf[Z] =~ HZ_16[T];
LcdBuf[ZL]=~ HZ_16[TL];
Z++;
T++;
ZL++;
TL++;
}
break;
case 0x84: Y=Y%8; //816点阵
Z=Y*128+X;
ZL=Z+128;
T=CHAR*16;
TL=T+8;
for(i=0;i<8;i++)
{
LcdBuf[Z] =~ HZ_816[T];
LcdBuf[ZL]=~ HZ_816[TL];
Z++;
T++;
ZL++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -