www.pudn.com > rtu.rar > 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 X
delay(40);
LcdClr();
}
*/
void OutString(unsigned int *STRING, unsigned int tt,const unsigned char *Adr,unsigned int TYPE)/*字符串输出*/
{
unsigned char XX,YY,Len,i;
Len=*Adr; Adr=Adr+1;
STRING=STRING+tt;
for(i=0;ib[0]=Q%16;Q=Q/16;
Temptr->b[1]=Q%16;Q=Q/16;
Temptr->b[2]=Q%16;Q=Q/16;
Temptr->b[3]=Q%16;Q=Q/16;
}
void atochex(unsigned char Q,struct Asc_st FARDATA *Temptr)
{
Temptr->b[0]=Q%16;Q=Q/16;
Temptr->b[1]=Q%16;Q=Q/16;
}
*/
struct SYSTIME LoadTime(void)
{
struct SYSTIME Systime;
register unsigned long portid;
register unsigned char value;
unsigned int ii[10],i;
unsigned int ch[2];
ii[0]=Sys_Second;
ii[1]=Sys_Minute;
ii[2]=Sys_Hour;
ii[3]=Sys_Day;
ii[4]=Sys_Month;
ii[5]=Sys_Year;
ii[6]=Sys_Century;
for(i=0;i<7;i++)
{
ch[0]=ii[i]%10; ii[i]=ii[i]/10;
ch[1]=ii[i]%10;
switch(i)
{
case 0x00:Systime.second=Sys_Second;
Systime.TBUF[13]=ch[0];
Systime.TBUF[12]=ch[1];
break;
case 0x01:Systime.minute=Sys_Minute;
Systime.TBUF[11]=ch[0];
Systime.TBUF[10]=ch[1];
break;
case 0x02:Systime.hour=Sys_Hour;
Systime.TBUF[9]=ch[0];
Systime.TBUF[8]=ch[1];
break;
case 0x03:Systime.date=Sys_Day;
Systime.TBUF[7]=ch[0];
Systime.TBUF[6]=ch[1];
break;
case 0x04:Systime.month=Sys_Month;
Systime.TBUF[5]=ch[0];
Systime.TBUF[4]=ch[1];
break;
case 0x05:Systime.year=Sys_Year;
Systime.TBUF[3]=ch[0];
Systime.TBUF[2]=ch[1];
break;
case 0x06:Systime.century=20;
Systime.TBUF[1]=0;
Systime.TBUF[0]=2;
break;
default: break;
}
}
return (Systime);
}
void CursorGotoXy(UINT *STRING, const unsigned char *Adr,UINT TYPE)
{
unsigned char XX,YY,Len,i;
unsigned char *addr;
unsigned int *CharPtr;
CharPtr=(unsigned int *)STRING;
Len=*Adr; Adr=Adr+1;addr=(unsigned char *)Adr;
if(pVar->OldCursorOffset>=Len) pVar->OldCursorOffset=0;
if(pVar->NewCursorOffset>=Len) pVar->NewCursorOffset=0;
addr=addr+(pVar->OldCursorOffset)*2;
XX=*(addr);
YY=*(addr+1);
CharPtr=CharPtr+pVar->OldCursorOffset;
LcdPutc(XX,YY,*CharPtr,TYPE);
addr=(unsigned char *)Adr; CharPtr=(unsigned int *)STRING;
addr=addr+pVar->NewCursorOffset*2;
XX=*(addr);
YY=*(addr+1);
CharPtr=CharPtr+pVar->NewCursorOffset;
TYPE=TYPE+128;
LcdPutc(XX,YY,*CharPtr,TYPE);
pVar->OldCursorOffset=pVar->NewCursorOffset;
}
void SetSysTimer(struct SYSTIME * SysTimePtr)
{
disable();
outportb(DS_REGA, 0x26); /*Clock initialize*/
outportb(DS_REGB, 0x8E); /*Clock initialize*/
outportb(DS_SECOND, SysTimePtr->second);
outportb(DS_MINUTE, SysTimePtr->minute);
outportb(DS_HOUR, SysTimePtr->hour);
outportb(DS_DATE, SysTimePtr->date);
outportb(DS_MONTH, SysTimePtr->month);
outportb(DS_YEAR, SysTimePtr->year);
outportb(DS_CENTURY, SysTimePtr->century);
outportb(DS_REGB, 0x1E); /*Clock initialize*/
inportb(DS_REGC);
inportb(DS_REGD);
enable();
}
void Line(UINT x1,UINT y1,UINT x2,UINT y2,UINT color)
{
unsigned int m,n,j,i,x,dx,dy,y,k;
unsigned char ch;
if(x1>127) x1=127;
if(x2>127) x2=127;
if(y1>63) y1=63;
if(y2>63) y2=63;
if(color==1)
{//color==1
if(x2