⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 电力变电站RTU监控软件(80C196NT单片机) 遥控
💻 C
📖 第 1 页 / 共 2 页
字号:
//
// 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 + -