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

📄 vfd.c

📁 真空显示器
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <iom128v.h>
#include "vfd.h"

/*等待VFD空闲就返回,这个调用都是在SRE置位的情况下*/
void wait_free(void)
{
 	 while((PVFD & 0x80));
}

/*向VFD写入一个字节*/
void write_data(BYTE data)
{
 	 SSRE();
	 
	 wait_free();
	 PVFD=data;
	 wait_free();
	 
	 CSRE();

}

/*清VFD屏幕,current window*/
void display_clear(void)
{
 	 write_data(0x0c);
}

/*初始化VFD模块*/
void init_vfd(void)
{
	 write_data(0x1b);
	 write_data(0x40);
}

/*设置亮度级别*/
void brightness_control(BYTE level)
{
 	 write_data(0x1f);
	 write_data(0x58);
	 write_data(level);
}

/*显示字符*/
void put_char(BYTE ch)
{
 	 write_data(ch);
}

 /*选择当前窗口
 winNO=0表示base window
 winNO=1~4表示user window
 */
void select_current_window(BYTE winNO)
{
 	 write_data(0x1f);
  	 write_data(0x28);
 	 write_data(0x77);
 	 write_data(0x01);
 	 write_data(winNO);
}

/*设置光标为置
0<=x<=512
0<=y<=1
*/
void set_cursor_pos(U16 x,U16 y)
{
 write_data(0x1f);
 write_data(0x24);
 write_data(x & 0xFF);
 write_data((x >> 8) & 0xFF);
 write_data(y & 0xFF);
 write_data((y >> 8) & 0xFF);
}

/*用户自定义窗口*/
void set_user_window(BYTE winNO,BOOL bDefine,U16 x,U16 y,U16 width,U16 height)
{
 	 write_data(0x1f);
 	 write_data(0x28);
 	 write_data(0x77);
 	 write_data(0x02);
 
 	 write_data(winNO);
 	 write_data(bDefine);
 
 	 write_data(x & 0xFF);
 	 write_data((x >> 8) & 0xFF);
 	 write_data(y & 0xFF);
 	 write_data((y >> 8) & 0xFF);
 
 	 write_data(width & 0xFF);
 	 write_data((width >> 8) & 0xFF);
 	 write_data(height & 0xFF);
 	 write_data((height >> 8) & 0xFF);
}

/*设置字符方式下的x,y方向上的放大倍数*/
void set_magnify_scale(BYTE xScale,BYTE yScale)
{
 	 write_data(0x1f);
 	 write_data(0x28);
 	 write_data(0x67);
 	 write_data(0x40);
 	 write_data(xScale);
 	 write_data(yScale);
}

/*16*16字符的定义*///////////////////////////////////////////////////////////////////
/*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
const unsigned char h16[16][32]={{0x00,0x00,0x00,0x1F,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x1F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xF8,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0xF8,0x00,0x00,0x00,0x00},

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

/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x18,0x20,0x40,0x40,0x40,0x41,0x41,0x21,0x1E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1E,0x22,0x42,0x82,0x82,0x02,0x02,0x02,0x0E,0x00,0x00,0x00,0x00},

/*--  文字:  3  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x30,0x40,0x40,0x40,0x41,0x41,0x42,0x44,0x38,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x02,0x02,0x02,0x02,0x02,0x82,0x44,0x38,0x00,0x00,0x00,0x00},

/*--  文字:  4  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x01,0x06,0x38,0x40,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x30,0x50,0x90,0x10,0x12,0x12,0xFE,0x12,0x12,0x10,0x00,0x00,0x00,0x00},

/*--  文字:  5  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x7F,0x41,0x42,0x42,0x42,0x42,0x42,0x41,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x8C,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0xF8,0x00,0x00,0x00,0x00},

/*--  文字:  6  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x1F,0x20,0x41,0x41,0x41,0x41,0x41,0x20,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xF8,0x84,0x02,0x02,0x02,0x02,0x02,0x84,0x78,0x00,0x00,0x00,0x00},

/*--  文字:  7  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x70,0x40,0x40,0x40,0x40,0x41,0x42,0x4C,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x70,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

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

/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x1E,0x21,0x40,0x40,0x40,0x40,0x40,0x21,0x1F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x04,0x82,0x82,0x82,0x82,0x82,0x04,0xF8,0x00,0x00,0x00,0x00},

/*--  文字:  A  --*/
/*--  隶书12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x1F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0x1C,0x70,0xA0,0x20,0x20,0xE0,0xF0,0x3C,0x0C,0x00,0x00,0x00},

/*--  文字:  B  --*/
/*--  隶书12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x08,0x08,0x08,0x0F,0x0F,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x44,0x44,0xC4,0xC4,0xFC,0x38,0x00,0x00,0x00},

/*--  文字:  C  --*/
/*--  隶书12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x01,0x07,0x0E,0x08,0x08,0x10,0x10,0x08,0x08,0x0E,0x00,0x00,0x00,
0x00,0x00,0x00,0xF0,0xF8,0x1C,0x04,0x06,0x02,0x02,0x02,0x04,0x04,0x00,0x00,0x00},

/*--  文字:  D  --*/
/*--  隶书12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x08,0x08,0x08,0x08,0x0E,0x07,0x03,0x00,0x00,
0x00,0x00,0x00,0x04,0xFC,0xFC,0x04,0x04,0x04,0x04,0x04,0x0C,0xF8,0xF0,0x00,0x00},

/*--  文字:  E  --*/
/*--  隶书12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x0F,0x0F,0x08,0x08,0x08,0x08,0x09,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFC,0xFC,0x84,0x84,0x84,0x84,0xE4,0x0C,0x00,0x00,0x00,0x00},

/*--  文字:  F  --*/
/*--  隶书12;  此字体下对应的点阵为:宽x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x08,0x08,0x08,0x08,0x09,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x84,0x80,0x80,0x80,0xC0,0x00,0x00,0x00,0x00}};

//unsigned char const *array[16]={h0,h1,h2,h3,h4,h5,h6,h7,h8,h9,ha,hb,hc,hd,he,hf};

unsigned char matrix[32];  /*用于存储自定义的字符*/
/*16*16字符的定义结束*///////////////////////////////////////////////////////////////////


/*8*8字符的定义*///////////////////////////////////////////////////////////////////
/*--  文字:  0  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h80[]={0x00,0x00,0x7C,0x44,0x38,0x00,0x00,0x00};

/*--  文字:  1  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h81[]={0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00};

/*--  文字:  2  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h82[]={0x00,0x00,0x6C,0x54,0x64,0x00,0x00,0x00};

/*--  文字:  3  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
const unsigned char h83[]={0x00,0x00,0x44,0x54,0x28,0x00,0x00,0x00};

/*--  文字:  4  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
const unsigned char h84[]={0x00,0x00,0x38,0x3C,0x08,0x00,0x00,0x00};

/*--  文字:  5  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
const unsigned char h85[]={0x00,0x00,0x70,0x54,0x58,0x00,0x00,0x00};

/*--  文字:  6  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
const unsigned char h86[]={0x00,0x00,0x3C,0x54,0x58,0x00,0x00,0x00};

/*--  文字:  7  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h87[]={0x00,0x00,0x40,0x78,0x40,0x00,0x00,0x00};

/*--  文字:  8  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h88[]={0x00,0x00,0x68,0x54,0x28,0x00,0x00,0x00};

/*--  文字:  9  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h89[]={0x00,0x00,0x70,0x4C,0x38,0x00,0x00,0x00};

/*--  文字:  A  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h8a[]={0x00,0x0C,0x30,0x68,0x1C,0x04,0x00,0x00};

/*--  文字:  B  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h8b[]={0x00,0x00,0x7C,0x54,0x7C,0x00,0x00,0x00};

/*--  文字:  C  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h8c[]={0x00,0x38,0x44,0x44,0x44,0x00,0x00,0x00};

/*--  文字:  D  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h8d[]={0x00,0x00,0x7C,0x44,0x78,0x00,0x00,0x00};

/*--  文字:  E  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h8e[]={0x00,0x00,0x7C,0x54,0x7C,0x00,0x00,0x00};

/*--  文字:  F  --*/
/*--  新宋体5;  此字体下对应的点阵为:宽x高=8x7   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=8x8  --*/
//const unsigned char h8f[]={0x00,0x00,0x7C,0x50,0x70,0x00,0x00,0x00};

//const unsigned char *array8[16]={h80,h81,h82,h83,h84,h85,h86,h87,h88,h89,h8a,h8b,h8c,h8d,h8e,h8f};

unsigned char matrix8[8];  /*用于存储自定义的字符*/
/*8*8字符的定义结束*///////////////////////////////////////////////////////////////////


/*应用编程接口(API)*/
void Disp_Dot_Matrix(const BYTE ar[])  /*显示16*16的点阵*/
{
 	 BYTE i;
	 
 	 write_data(0x1f);
	 write_data(0x28);
 	 write_data(0x66);
 	 write_data(0x11);
 
 	 write_data(CHAR_WIDTH);
 	 write_data(0x0);
 
 	 write_data(CHAR_HEIGHT/8);
 	 write_data(0x0);
 
 	 write_data(0x01);
 
 	 for(i=0;i<CHAR_WIDTH;i++)
	 {
	  	write_data(ar[i]);
	  	write_data(ar[i+CHAR_WIDTH]);
		
	 }
	 
}
void Disp_Matrix(BYTE ar[])  /*显示自定义16*16的点阵*/
{
 	 BYTE i;
	 
 	 write_data(0x1f);
	 write_data(0x28);
 	 write_data(0x66);
 	 write_data(0x11);
 
 	 write_data(CHAR_WIDTH);
 	 write_data(0x0);
 
 	 write_data(CHAR_HEIGHT/8);
 	 write_data(0x0);
 
 	 write_data(0x01);
 
 	 for(i=0;i<CHAR_WIDTH;i++)
	 {
	  	write_data(ar[i]);
	  	write_data(ar[i+CHAR_WIDTH]);
		
	 }
	 
}

/*显示一个字符*/

⌨️ 快捷键说明

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