vfd-800a.c

来自「VFD GU128X32-800A驱动程序」· C语言 代码 · 共 725 行 · 第 1/2 页

C
725
字号
   	   write_data(ar[k]);
   	 }
   set_position(x,y+1); 
   for(k=15;k<30;k++)
   	 {
   	   write_data(ar[k]);
     }
 }
/********************************************************** **/ 
/*         10×16英文、数字显示,显示一个字                     */
/* 在显示屏上的坐标为(x,y),x的范围0~127列,y的范围0~3(字节) */
/*************************************************************/
void disp_eng(BYTE x,BYTE y,BYTE ar[])
 { 
   BYTE k;
   
   set_position(x,y);
   for(k=0;k<10;k++)
   	 {
   	   write_data(ar[k]);
   	 }
   set_position(x,y+1); 
   for(k=10;k<20;k++)
   	 {
   	   write_data(ar[k]);
     }
 }
/********************************************************** **/ 
/*         10×16英文A~F、数字0~9显示,显示一个字                     
/* 在显示屏上的坐标为(x,y),x的范围0~127列,y的范围0~3(字节) */
/*************************************************************/
void VFD_Char(BYTE x,BYTE y,BYTE value)
{
 	 BYTE i;
	 
 	 if(value>=0 && value<=15)
	 {
	  	 disp_eng(x,y,h16[value]);
	 }
	 
	 else if(value=='|')
	 {
	  	 disp_eng(x,y,h16[16]);
	 }
	 else if(value=='.')
	 {
	  	 disp_eng(x,y,h16[17]);
	 
	 }
	 else if(value==' ')
	 {
	  	 disp_eng(x,y,h16[18]);
	 }
	 else if(value=='-')
	 {
	  	 disp_eng(x,y,h16[19]);
	 }
	 else if(value=='u')
	 {
	  	 disp_eng(x,y,h16[20]);
	 }
	 else if(value=='m')
	 {
	  	 disp_eng(x,y,h16[21]);
	 }
	 else if(value=='/')
	 {
	  	 disp_eng(x,y,h16[22]);
	 }
	 else if(value=='H')
	 {
	  	 disp_eng(x,y,h16[26]);
	 }
}

/*10进制显示一个整数*/

void VFD_Number(U16 number,BYTE decPos)
{
 	 BYTE buf[7];
	 S8 i;
	 BOOL bSign=FALSE;
	 
	 if(number>0x7FFF)
	 {
	  	bSign=TRUE;
		number=~number+1;
	 }
	 
	 i=0;
	 while(number!=0 && i<7)
	 {
	  	if(i==decPos && i>0) {buf[i]='.';i++;}
	  	buf[i]=number % 10;
		number = (U16)(number / 10);
		i++;	 	  
	 }
	 if(bSign) buf[i]='-';
	 else i--;
	 
     //select_current_window(1);
	 //CLR(); 
	 decPos=0;
	 for(;i>=0;i--)
	 {
	    //select_current_window(1);
		//set_cursor_pos(decPos*16,0);
	  	//VFD_Char(buf[i]);
		VFD_Char(decPos*16,0,buf[i]);
		decPos++;
	 }
	 
}

/*以16进制显示一个整数*/

void VFD_Hex(BYTE x,BYTE y,U16 number)
{
 	 BYTE buf[7];
	 S8	  i;
	
	  
	 for(i=0;i<4;i++)
	 {
	  	buf[i] = number % 16;
		number = (U16)(number / 16);
	 }
	 
    
	 
	 //display_clear(); 
	 
	 for(i=0;i<4;i++)
	 {
	    
		VFD_Char(x+i*10,y,buf[3-i]);
		
	 }

}
/********显示"测量"*********/
void disp_measure()
{

disp_ch(0,0,chn[0]);
disp_ch(0,2,chn[1]);
}
/********显示"水平"*********/
void disp_horizontal()
{
U8 i;

display_clr(16,0);
display_clr(17,0);
disp_ch(18,0,chn[7]);//
display_clr(33,0);
disp_ch(34,0,chn[8]);
for(i=0;i<6;i++)
{
display_clr(49+i,0);
}
}
/********显示"垂直"*********/
void disp_vertical()
{
U8 i;
display_clr(16,2);
display_clr(17,2);
disp_ch(18,2,chn[9]);
display_clr(33,2);
disp_ch(34,2,chn[10]);
for(i=0;i<6;i++)
{
display_clr(49+i,2);
}
}
/********显示"阴线"*********/
void disp_lunar()
{

disp_ch(16,0,chn[11]);
disp_ch(32,0,chn[13]);
}
/********显示"阳线"*********/
void disp_solar()
{

disp_ch(16,2,chn[12]);
disp_ch(32,2,chn[13]);
}

/********显示"零点"*********/
void disp_zero()
{

disp_ch(16,0,chn[2]);
disp_ch(32,0,chn[3]);
}
/********显示"满度"*********/
void disp_full()
{

disp_ch(16,2,chn[4]);
disp_ch(32,2,chn[5]);
}
/********显示"校零"*********/
void disp_adjust_zero()
{

disp_ch(0,0,chn[6]);
disp_ch(0,2,chn[2]);
}
/********显示"校满"*********/
void disp_adjust_full()
{

disp_ch(0,0,chn[6]);
disp_ch(0,2,chn[4]);
}
/********显示"校准"*********/
void disp_adjust()
{

disp_ch(0,0,chn[14]);
disp_ch(0,2,chn[15]);
}
/********显示"VALn"*********/
void disp_valn(BYTE x,BYTE y,BYTE value)
{

disp_eng(x,y,h16[23]);
disp_eng(x+10,y,h16[24]);
disp_eng(x+20,y,h16[25]);
VFD_Char(x+30,y,value);
}
/********显示"VAL2"*********/
/*
void disp_adjust()
{

disp_ch(0,0,chn[14]);
disp_ch(0,2,chn[15]);
}
*/
/********显示"A/Dn"*********/
void disp_adn(BYTE x,BYTE y,BYTE value)
{

disp_eng(x,y,h16[10]);
disp_eng(x+10,y,h16[22]);
disp_eng(x+20,y,h16[13]);
VFD_Char(x+30,y,value);
}
/********显示"A/D2"*********/
/*
void disp_adjust()
{

disp_ch(0,0,chn[14]);
disp_ch(0,2,chn[15]);
}
*/
/**///////////////////////////////////////////////////////////////////////////////

/*以下是扫描VFD屏幕的程序*////////////////////////////////////////////////////
/*--  文字:  智  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
unsigned char hz[16][30]={{0x00,0x20,0x30,0xAE,0x64,0x3C,0x64,0xA4,0x20,0xFC,0x44,0x44,0x44,0xFC,0x00,0x00,
0x02,0x01,0x00,0x7E,0x2A,0x2A,0x2A,0x2B,0x2A,0x2A,0x7E,0x00,0x00,0x00},

/*--  文字:  能  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x10,0xD8,0x56,0x50,0x50,0xD8,0x00,0x7E,0x90,0x90,0x88,0x88,0xE0,0x00,0x00,
0x00,0x7F,0x05,0x25,0x45,0x3F,0x00,0x3F,0x48,0x44,0x44,0x42,0x70,0x00},

/*--  文字:  深  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x20,0xC4,0x08,0xC0,0x10,0x4C,0x24,0x14,0xC4,0x04,0x14,0x24,0x54,0x0C,0x00,0x04,
0x7C,0x03,0x00,0x21,0x11,0x09,0x05,0x7F,0x03,0x05,0x09,0x31,0x11,0x00},

/*--  文字:  孔  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x04,0x04,0x04,0x04,0xF4,0x8C,0x44,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
0x02,0x21,0x41,0x3F,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x78,0x00},

/*--  文字:  测  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x20,0xC2,0x0C,0x80,0xFC,0x04,0xF4,0x04,0xFC,0x00,0xF8,0x00,0xFE,0x00,0x00,
0x04,0x7C,0x03,0x40,0x27,0x10,0x0F,0x10,0x67,0x00,0x27,0x40,0x3F,0x00},

/*--  文字:  径  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x20,0x10,0x88,0xC6,0x30,0x84,0x44,0x44,0x24,0x14,0x2E,0x24,0x40,0x80,0x00,0x02,
0x01,0x00,0x7F,0x00,0x20,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x20,0x00},

/*--  文字:  仪  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x80,0x40,0xF0,0x0E,0x00,0x30,0xC0,0x02,0x1C,0x00,0x80,0x78,0x00,0x00,0x00,0x00,
0x00,0x7F,0x00,0x40,0x20,0x10,0x0B,0x04,0x0A,0x11,0x20,0x60,0x20,0x00},



/*--  文字:  内  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0xF0,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x10,0xF8,0x10,0x00,0x00,0x00,
0x00,0x7F,0x04,0x02,0x01,0x00,0x01,0x02,0x26,0x40,0x3F,0x00,0x00,0x00},

/*--  文字:  蒙  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x40,0x34,0x14,0x54,0x54,0x5E,0x54,0x54,0x54,0x5E,0x54,0x14,0x34,0x00,0x00,0x00,
0x40,0x55,0x55,0x2B,0x55,0x4B,0x3D,0x05,0x0D,0x13,0x21,0x60,0x20,0x00},

/*--  文字:  古  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x10,0x10,0x10,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x90,0x10,0x18,0x10,0x00,0x00,
0x00,0x7F,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7F,0x01,0x00,0x00,0x00},

/*--  文字:  科  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x28,0x28,0x28,0xFC,0x26,0x24,0x00,0x40,0x88,0x30,0x00,0xFE,0x00,0x00,0x00,0x08,
0x06,0x01,0x7F,0x01,0x02,0x04,0x04,0x05,0x04,0x04,0x7F,0x02,0x02,0x00},

/*--  文字:  技  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x10,0x10,0x10,0xFE,0x90,0x00,0x90,0x90,0x90,0xFE,0x90,0x90,0x98,0x10,0x00,0x02,
0x22,0x41,0x3F,0x00,0x40,0x40,0x23,0x14,0x08,0x14,0x22,0x41,0x40,0x00},

/*--  文字:  大  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x20,0x20,0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x40,
0x40,0x20,0x10,0x08,0x06,0x01,0x02,0x04,0x08,0x10,0x20,0x60,0x20,0x00},

/*--  文字:  学  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x40,0x30,0x10,0x52,0x5C,0x50,0x52,0x5C,0x50,0xD8,0x56,0x10,0x50,0x30,0x00,0x04,
0x04,0x04,0x04,0x04,0x24,0x44,0x3F,0x05,0x04,0x04,0x04,0x06,0x04,0x00},

/*--  文字:  研  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x04,0xC4,0x7C,0x44,0xC4,0x80,0x84,0x84,0xFC,0x84,0x84,0xFC,0x86,0x84,0x00,0x01,
0x3F,0x08,0x08,0x0F,0x40,0x20,0x18,0x07,0x00,0x00,0x7F,0x00,0x00,0x00},

/*--  文字:  制  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x60,0x5C,0x50,0x50,0xFE,0x50,0x50,0x50,0x00,0xF8,0x00,0x00,0xFE,0x00,0x00,
0x00,0x3E,0x02,0x02,0x7F,0x02,0x22,0x3E,0x00,0x07,0x20,0x40,0x3F,0x00}};
/***************开始时调用****************/
void disp_main()
{
U8 i;
for(i=0;i<7;i++)
{
 	disp_ch(i*15+11,0,hz[i]);
    
}
for(i=0;i<9;i++)
{
 	disp_ch(i*14,2,hz[7+i]);
    
}
}

⌨️ 快捷键说明

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