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

📄 vfd.c

📁 真空显示器
💻 C
📖 第 1 页 / 共 2 页
字号:
void VFD_Char(BYTE value)
{
 	 BYTE i;
	 
 	 if(value>=0 && value<=15)
	 {
	  	 Disp_Dot_Matrix(h16[value]);
	 }
	 else if(value=='|')
	 {
	  	 for(i=0;i<32;i++) matrix[i]=0;
		 matrix[6]=0x55;matrix[7]=0x55;
		 matrix[22]=0x55;matrix[23]=0x55;	  	 	  	  
	  	 Disp_Matrix(matrix);
	 }
	 else if(value=='.')
	 {
	  	 for(i=0;i<32;i++) matrix[i]=0;
		 matrix[22]=0x0c;
		 matrix[23]=0x0c;	  	 	  	  
	  	 Disp_Matrix(matrix);
	 
	 }
	 else if(value==' ')
	 {
	  	 for(i=0;i<32;i++) matrix[i]=0;
	  	 Disp_Matrix(matrix);
	 }
	 else if(value=='-')
	 {
	  	 for(i=0;i<32;i++) matrix[i]=0;
		 for(i=2;i<11;i++)
		 {
		  	matrix[i]=0x01;
			matrix[i+CHAR_WIDTH]=0x80;
		 }
	  	 Disp_Matrix(matrix);
	 }
	 
}

/*显示一个整数*/
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]);
		decPos++;
	 }
	 
}

/*以16进制显示一个整数*/
void VFD_Hex(U16 number)
{
 	 BYTE buf[7];
	 S8	  i;
	 BYTE decPos;
	 
	 i=0;
 	 while(number!=0)
	 {
	  	buf[i] = number % 16;
		number = (U16)(number / 16);
		i++;
	 }
	 
     select_current_window(1);
	 CLR(); 
	 decPos=0;
	 for(i--;i>=0;i--)
	 {
	    select_current_window(1);
		set_cursor_pos(decPos*16,0);
	  	VFD_Char(buf[i]);
		decPos++;
	 }

}

/**///////////////////////////////////////////////////////////////////////////////
void Disp_Dot_Matrix8(const BYTE ar[])  /*显示8*8的点阵*/
{
 	 BYTE i;
	 
 	 write_data(0x1f);
	 write_data(0x28);
 	 write_data(0x66);
 	 write_data(0x11);
 
 	 write_data(8);
 	 write_data(0x0);
 
 	 write_data(1);
 	 write_data(0x0);
 
 	 write_data(0x01);
 
 	 for(i=0;i<8;i++)
	 {
	  	write_data(ar[i]);
	 }
	 
}

/*显示8*8的字符*/
void VFD_Char8(BYTE value)
{
 	 BYTE i;
	 
 	 if(value>=0 && value<=9)
	 {
	  	 //Disp_Dot_Matrix8(array8[value]);
		 put_char(value+0x30);
	 }
	 else if(value>=10 && value<=15)
	 {
	  	 put_char(value-10+'A');
	 }
	 else if(value=='|')
	 {
	  	 for(i=0;i<8;i++) matrix8[i]=0;
		 matrix8[3]=0x92;
	  	 Disp_Dot_Matrix8(matrix8);
	 }
	 else if(value=='.')
	 {
	  	 /*
	  	 for(i=0;i<8;i++) matrix8[i]=0;
		 matrix8[3]=0x06;
		 matrix8[4]=0x06;	  	 	  	  
	  	 Disp_Dot_Matrix8(matrix8);
		 */
		 put_char('.');
	 
	 }
	 else if(value==' ')
	 {
	  	 for(i=0;i<8;i++) matrix8[i]=0;
	  	 Disp_Dot_Matrix8(matrix8);
	 }
	 else if(value=='-')
	 {
	  	 /*
	  	 for(i=0;i<8;i++) matrix8[i]=0;
		 for(i=2;i<7;i++)
		 {
		  	matrix8[i]=0x08;
		 }
	  	 Disp_Dot_Matrix8(matrix8);
		 */
		 put_char('-');
	 }
}

/*以下是扫描VFD屏幕的程序*////////////////////////////////////////////////////
/*--  文字:  高  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
const unsigned char hz[19][32]={{0x20,0x20,0x20,0x20,0x2E,0x2A,0xAA,0x6A,0x2A,0x2A,0x2E,0x20,0x20,0x20,0x20,0x00,
0x00,0xFF,0x80,0x80,0xBC,0xA4,0xA4,0xA4,0xA4,0xA4,0xBC,0x82,0x81,0xFE,0x00,0x00},

/*--  文字:  炉  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x01,0x06,0x00,0xFF,0x04,0x18,0x00,0x1F,0x11,0x91,0x71,0x11,0x11,0x3F,0x10,0x00,
0x02,0x04,0x18,0xE0,0x21,0x12,0x0C,0xF0,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00},

/*--  文字:  卷  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x02,0x02,0x12,0x52,0x32,0x13,0x16,0xFA,0x12,0x12,0x33,0xD2,0x52,0x12,0x02,0x00,
0x10,0x00,0x20,0x40,0x80,0xFC,0x82,0x92,0x8A,0xF2,0x02,0x8E,0xC0,0x60,0x40,0x00},

/*--  文字:  扬  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x10,0x10,0x10,0xFF,0x11,0x12,0x40,0x42,0x46,0x4B,0x52,0x63,0x42,0x02,0x03,0x00,
0x40,0x42,0x81,0xFE,0x00,0x10,0x12,0x22,0xC4,0x08,0x30,0xC2,0x01,0x02,0xFC,0x00},

/*--  文字:  上  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,
0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x06,0x02,0x00},

/*--  文字:  料  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x04,0x24,0x15,0x0E,0xFF,0x16,0x25,0x04,0x42,0x31,0x00,0x00,0xFF,0x00,0x00,0x00,
0x10,0x60,0x80,0x00,0xFF,0x00,0x80,0x40,0x40,0xC0,0x40,0x40,0xFF,0x80,0x80,0x00},

/*--  文字:  系  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x40,0x44,0x4D,0x55,0x66,0x46,0x44,0x88,0xB2,0x81,0x80,0x80,0x00,0x00,
0x00,0x02,0x84,0xC8,0x90,0xA0,0x82,0x81,0xFE,0x80,0xA0,0x90,0xC8,0x46,0x00,0x00},

/*--  文字:  统  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x04,0x0C,0x34,0xC5,0x06,0x08,0x21,0x23,0x25,0xB9,0x61,0x21,0x25,0x23,0x21,0x00,
0x04,0x44,0xC4,0x48,0x48,0x49,0x02,0x0C,0xF0,0x00,0x00,0xFC,0x02,0x82,0x0E,0x00},

/*--  文字:  ,  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1A,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*--  文字:  内  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x1F,0x10,0x10,0x10,0x11,0xFE,0x12,0x11,0x10,0x10,0x10,0x1F,0x00,0x00,
0x00,0x00,0xFF,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x80,0x62,0x01,0xFE,0x00,0x00},

/*--  文字:  蒙  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x40,0x59,0x51,0x51,0x55,0xF5,0x55,0x55,0x55,0x55,0xF5,0x55,0x51,0x59,0x50,0x00,
0x00,0x2A,0x2A,0x4A,0x54,0x94,0xAA,0x49,0x3E,0x10,0x28,0xE4,0x46,0x03,0x02,0x00},

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

/*--  文字:  科  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x08,0x48,0x49,0x4E,0x7F,0x8A,0x89,0x00,0x44,0x33,0x00,0x00,0xFF,0x00,0x00,0x00,
0x20,0x40,0x80,0x00,0xFF,0x00,0x20,0x20,0x20,0x40,0x40,0x40,0xFF,0x80,0x80,0x00},

/*--  文字:  技  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x10,0x10,0x11,0xFF,0x12,0x14,0x00,0x13,0x12,0x12,0xFE,0x12,0x13,0x12,0x10,0x00,
0x80,0x82,0x01,0xFE,0x00,0x02,0x02,0x04,0xC8,0x30,0x30,0x48,0x84,0x06,0x04,0x00},

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

/*--  文字:  学  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x02,0x0C,0x08,0x48,0x3A,0x2A,0x0A,0x8A,0x7A,0x2B,0x0A,0x18,0xEA,0x4C,0x08,0x00,
0x00,0x40,0x40,0x40,0x40,0x40,0x42,0x41,0xFE,0x40,0x40,0x40,0x40,0x40,0x40,0x00},

/*--  文字:  研  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x40,0x43,0x4F,0x72,0x43,0x40,0x02,0x42,0x7F,0x42,0x42,0x42,0x7F,0x42,0x42,0x00,
0x80,0x00,0xFC,0x08,0xF9,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00},

/*--  文字:  制  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x0A,0xF2,0x52,0x12,0xFF,0x12,0x12,0x12,0x00,0x3F,0x00,0x00,0xFF,0x00,0x00,
0x00,0x00,0xFC,0x80,0x80,0xFF,0x84,0x86,0xFC,0x00,0xF0,0x02,0x01,0xFE,0x00,0x00},

/*--  文字:  。  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};

void VFD_Scroll(void)  //VFD的滚屏功能
{
 	write_data(0x1f);
	write_data(0x28);
	write_data(0x61);
	write_data(0x10);
	
	write_data(0x4);
	write_data(0x0);
	write_data(0xD0);
	write_data(0x01);
	write_data(0x2);
	
}

void VFD_Scan_Screen(void)  //滚动屏幕显示字幕,该方法使用VFD的滚屏功能
{
 	U8 i;
	
	for(i=0;i<19;i++)
	{
 	 	select_current_window(1);
		set_cursor_pos((i+7)*16,0);
 		Disp_Dot_Matrix(hz[i]);
	}
	
	VFD_Scroll();
}

void VFD_Scan_Screen1(void)  //该方法没有使用VFD的滚屏功能
{
 	BYTE i,j,s,e;
	I16	 x;
	
 	x=111;

	for(s=0;s<=19;s++)
	{
	 	select_current_window(1);
		set_cursor_pos(0,0);
		VFD_Char(' ');
repL00:	
		for(j=0;j<16;j+=2)
		{
		 	for(i=s;i<s+7;i++)
			{
	 	 	 	select_current_window(1);
				set_cursor_pos(x-j+i*16,0);
				if(i>=19) VFD_Char(' ');
				else Disp_Dot_Matrix(hz[i]);
			}
		}
		x-=16;
		if(x>0) goto repL00;
		
	}
}

⌨️ 快捷键说明

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