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

📄 lcd_base.cpp

📁 使用TRULY的液晶显示模块320*240
💻 CPP
字号:
#include "LCD\LCD_BASE.H"
extern int hz_handle;
extern char key_kbuf[18];
extern unsigned char key_kwrite;

int openhzk(char *s)
{
//   hz_handle=open("d:\\test\\hzk16",O_RDONLY|O_BINARY);
   hz_handle=open(s,O_RDONLY|O_BINARY);
   if(hz_handle==-1)
   {
     cputs("Error on open hzk16");
     getch();
     closegraph();
     exit(1);
   }
   return(hz_handle);
}

int getbit(unsigned char c,int n)
{
   return((c>>n)&1);
}


int readkey()
{
	int key;
	static keybuf_pr=0;

	//LCD keyboard
	if (keybuf_pr==key_kwrite)  key=-1;
	else{
		key=key_kbuf[keybuf_pr++];
		keybuf_pr%=16;
		key=translatekey(key);
	}
	return key;

/*	//PC keyboard
	if(bioskey(1))
		return bioskey(0)&0xff;
	else
		return -1;    */
}

char translatekey(char c)
{
	switch(c)
	{
		case 0x38: c=0x0d;	break; //Enter
		case 0x30: c=0x1b;	break; //Esc
		case 0x34: c='0';	break;
		case 0x33: c='1';	break;
		case 0x32: c='2';	break;
		case 0x31: c='3';	break;
		case 0x37: c='4';	break;
		case 0x36: c='5';	break;
		case 0x35: c='6';	break;
		case 0x3b: c='7';	break;
		case 0x3a: c='8';	break;
		case 0x39: c='9';	break;
	}
	return c;
}

int puthz16(int x,int y,int z,int color,char *p,char d,int angle)
{
   unsigned int i,c1,c2,f=0;
   int i1,i2,i3,rec;
   long l;
   char by[32];
   while((i=*p++)!=0)
   {
     if (i>0xa1)
     if(f==0)
     {
       c1=(i-0xa1)&0x07f;
       f=1;
     }
     else
     {
       c2=(i-0xa1)&0x07f;
       f=0;
       rec=c1*94+c2;
       l=rec*32L;
       lseek(hz_handle,l,SEEK_SET);
       read(hz_handle,by,32);
       if(angle==0)
	  for(i1=0;i1<16;i1++)
	  for(i2=0;i2<2;i2++)
	  for(i3=0;i3<8;i3++)
	  if(getbit(by[i1*2+i2],7-i3))
	    putpixel(x+i2*8+i3,y+i1,color);
       if(angle==90)
	  for(i1=0;i1<16;i1++)
	  for(i2=0;i2<2;i2++)
	  for(i3=0;i3<8;i3++)
	  if(getbit(by[i1*2+i2],7-i3))
	    putpixel(x+i1,y-i2*8-i3,color);
       if(d=='h')
	  x=x+16+z;
       if(d=='v')
       {
	  if(angle==0)
	    y=y+16+z;
	  if(angle==90)
	    y=y-16-z;
       }
	 }
   }
   return(x);
}

int puthz16_en(int x,int y,int z,int color,char *p,char d,int angle)
{
   unsigned int i,c1,c2,f=0;
   int i1,i2,i3,rec;
   long l;
   char by[32];
   char buf[10];

   settextjustify(LEFT_TEXT,BOTTOM_TEXT);
   if (angle==0)
	settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
   if (angle==90)
	settextstyle(DEFAULT_FONT,VERT_DIR,1);
   while((i=*p++)!=0)
   {
	 if (i>0xa1)
	 {
		if(f==0)
		{
			c1=(i-0xa1)&0x07f;
			f=1;
		}
		else
		{
			c2=(i-0xa1)&0x07f;
			f=0;
			rec=c1*94+c2;
			l=rec*32L;
			lseek(hz_handle,l,SEEK_SET);
			read(hz_handle,by,32);
			if(angle==0)
				for(i1=0;i1<16;i1++)
				for(i2=0;i2<2;i2++)
				for(i3=0;i3<8;i3++)
					if(getbit(by[i1*2+i2],7-i3))
						putpixel(x+i2*8+i3,y+i1,color);
			if(angle==90)
				for(i1=0;i1<16;i1++)
				for(i2=0;i2<2;i2++)
				for(i3=0;i3<8;i3++)
					if(getbit(by[i1*2+i2],7-i3))
						putpixel(x+i1,y-i2*8-i3,color);
			if(d=='h')
				x=x+16+z;
			if(d=='v')
			{
				if(angle==0)
					y=y+16+z;
				if(angle==90)
					y=y-16-z;
			}
		}
	 }
	 else
	 {
		if ( (i==0x0d) || (i==0x0a) )
			continue;
		sprintf(buf,"%c",i&0xff);
		outtextxy(x+12,y,buf);
		if(d=='h')
			x=x+8+z;
		if(d=='v')
		{
			if(angle==0)
				y=y+8+z;
			if(angle==90)
				y=y-8-z;
		}
	 }
   }
   return(x);
}

//Lrg modify 2003-03-10
int puthz24_en(int x,int y,int z,int color,char *p,char d,int angle)
{
   unsigned int i,c1,c2,f=0;
   int i1,i2,i3,rec;
   long l;
   char by[72];
   char buf[10];

   settextjustify(LEFT_TEXT,BOTTOM_TEXT);
   if (angle==0)
	settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
   if (angle==90)
	settextstyle(DEFAULT_FONT,VERT_DIR,1);
   while((i=*p++)!=0)
   {
	 if (i>0xa1)
	 {
		if(f==0)
		{
			c1=(i-0xa1-0x0f)&0x07f;
			f=1;
		}
		else
		{
			c2=(i-0xa1)&0x07f;
			f=0;
			rec=c1*94+c2;
			l=(long)rec*72L;
			lseek(hz_handle,l,SEEK_SET);
			read(hz_handle,by,72);

			if(angle==0)
				for(i1=0;i1<24;i1++)
				for(i2=0;i2<=2;i2++)
				for(i3=0;i3<8;i3++)
					if(getbit(by[i1*3+i2],7-i3))
						putpixel(x+i1,y+i2*8+i3,color);

			if(angle==90)
				for(i1=0;i1<24;i1++)
				for(i2=0;i2<=2;i2++)
				for(i3=0;i3<8;i3++)
					if(getbit(by[i1*3+i2],7-i3))
						putpixel(x+i2*8+i3,y-i1,color);
			if(d=='h')
				x=x+24+z;
			if(d=='v')
			{
				if(angle==0)
					y=y+24+z;
				if(angle==90)
					y=y-24-z;
			}
		}
	 }
	 else
	 {
		if ( (i==0x0d) || (i==0x0a) )
			continue;
		sprintf(buf,"%c",i&0xff);
		outtextxy(x+12,y,buf);
		if(d=='h')
			x=x+8+z;
		if(d=='v')
		{
			if(angle==0)
				y=y+8+z;
			if(angle==90)
				y=y-8-z;
		}
	 }
   }
   return(x);
}

void closehzk()
{
  close(hz_handle);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -