QS30-1 Nixie Module | 辉光管显示模块 介绍【软件篇】

在上一篇文章QS30-1 Nixie Module【硬件篇】中,重点介绍了辉光管显示模块的硬件部分及设计、制作过程。

或许我们对她独特的显示效果始终难以忘怀,但要让她焕发夺目色彩,重点还在于应用。该模块在其硬件方面已经具备了完备的功能,应用软件方面则需要结合实际应用要求来设计。先来回忆一下那种火红的朦胧:

http://i1237.photobucket.com/albums/ff474/yanzeyuan/Nixie%20Module%20QS30-1/2012_07_07_IMG_5928.jpg

无论何种应用方案,基于硬件设计原理,该模块的底层控制实为对74HC595的通讯控制,在这里,我以51单片机控制板为核心来介绍一下底层驱动软件的设计方法。

每个显示模块的辉光管数字0-9和RGB LED以及两颗Neon Lamps均由两片74HC595来控制,共需要16bit(2Byte)数据。根据原理图,两片74HC595共有16个输出端对应16bit数据,对应关系表如下:
http://i1237.photobucket.com/albums/ff474/yanzeyuan/Nixie%20Module%20QS30-1/table1.jpg

根据对应关系表,可以得出辉光管各种显示状态、RGB LED和Neon Lamps的对应数据表:

http://i1237.photobucket.com/albums/ff474/yanzeyuan/Nixie%20Module%20QS30-1/table2.jpg
(1:高电平,0:低电平,x:无关)

为了方便对RGB LED、Neon Lamps和辉光管进行控制,在这里我采用了结构体来对整个模块的各种显示模式进行了配置。
代码如下:

1
2
3
4
5
6
struct t_Module
{
	uint	LED;		//LED颜色
 	uint 	CLO;		//冒号状态
 	uint 	NUM;		//显示数字
};

同时,根据各种显示状态,按照对应关系表进行了预定义,每个状态被定义成一个16位的uint类型常量。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#define	LED_OFF			0x7000 		//LED关
#define	LED_WHITE		0x0000		//LED白色
#define	LED_PURPLE		0x4000		//LED紫色
#define	LED_CYAN		0x2000		//LED青色
#define	LED_YELLOW		0x1000		//LED黄色
#define	LED_BLUE		0x6000		//LED蓝色
#define	LED_GREEN		0x3000		//LED绿色
#define	LED_RED			0x5000		//LED红色
 
#define	CLO_OFF			0x0000	 	//氖灯关
#define	CLO_UP			0x0400		//氖灯上点亮
#define	CLO_DOWN		0x0800		//氖灯下点亮
#define	CLO_BOTH		0x0C00		//氖灯全亮
 
#define	NUM_OFF			0x0000		//无数字显示
#define	NUM_0			0x0200		//显示数字0
#define	NUM_1			0x0001		//显示数字1
#define	NUM_2			0x0002		//显示数字2
#define	NUM_3			0x0004		//显示数字3
#define	NUM_4			0x0008		//显示数字4
#define	NUM_5			0x0010		//显示数字5
#define	NUM_6			0x0020		//显示数字6
#define	NUM_7			0x0040		//显示数字7
#define	NUM_8			0x0080		//显示数字8
#define	NUM_9			0x0100		//显示数字9

接下来,只需要将各个模块的显示模式配置好就OK了,例如:

1、将模块1的LED配置为白色,两个氖灯只亮起上面的那颗,辉光管显示数字0;
2、将模块2的LED配置为紫色,两个氖灯只亮起下面的那颗,辉光管显示数字1;
代码如下:

1
2
3
4
5
6
MOD[0].LED	=	 LED_WHITE;	//初始化模组1的LED状态
MOD[0].CLO	=	 CLO_UP;	//初始化模组1的冒号状态
MOD[0].NUM	=	 NUM_0;		//初始化模组1的数字状态
MOD[1].LED	=	 LED_PURPLE;	//初始化模组2的LED状态
MOD[1].CLO	=	 CLO_DOWN;	//初始化模组2的冒号状态
MOD[1].NUM	=	 NUM_1;		//初始化模组2的数字状态

配置完显示模块的显示模式,接下来就需要将显示模式配置为N个模块需要的2byte数据,通过74HC595通讯函数发送给显示模块。

在这里设计了两个函数,一个是Send595()函数,用于发送两个字节数据到串行总线上,一个是Update()函数,用于根据显示模块的显示模式计算要发送的两个字节数据。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*********************************************************************
** 	函数名称:			void 	Send595(uchar count,uchar dat)
**	功能描述:			向74HC595发送数据
**	入口参数:			count:	发送数据的位数
**					dat:		发送的数据(MAX 16Bit)
*********************************************************************/
void 	Send595(uint count,uint dat)
{
	for(;count>0;count--)
	{
		DATA = dat&0x8000;
		SHCP  = 1;
		SHCP  = 0;
		dat<

有了以上函数,只需要在主函数里配置好相应的结构体,然后调用Update()函数即可更新所有显示内容。

照片中,我采用的是C8051F340的最小系统版,在此贴出主函数,以供大家参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*********************************************************************
* 函 数 名: main()
* 功能描述: 主程序
* 设 计 者:严泽远 日期:2012-06-29 17:11
* 修 改 者:严泽远 日期:2012-06-30 15:22
* 版    本:v1.0.0
*********************************************************************/
main()
{
	uint	i=0x0001;
	uchar	j=0;
	Port_IO_Init();				//IO资源配置
	Oscillator_Init();			//晶体振荡器初始化	
 
	OE	=	0;			//输出使能 或采用PWM控制来调节整体亮度
 
	MOD[0].LED	=	 LED_WHITE;	//初始化模组1的LED状态
	MOD[0].CLO	=	 CLO_UP;	//初始化模组1的冒号状态
	MOD[0].NUM	=	 NUM_0;		//初始化模组1的数字状态
	MOD[1].LED	=	 LED_PURPLE;	//初始化模组2的LED状态
	MOD[1].CLO	=	 CLO_DOWN;	//初始化模组2的冒号状态
	MOD[1].NUM	=	 NUM_1;		//初始化模组2的数字状态
 
	Update();				//刷新显示
 
	while(1)
	{
	;
	}
}

需要下载完整代码的朋友请移步:

https://github.com/aguegu/nixie-tube/downloads

该模块的Datasheet下载地址请移步:

QS30-1NixieModuleUserManual_CH
Qs30-1NixieModuleUserManual_EN

同时,该模块已经完美应用于Arduino系统,由aGuegu制作了完美的Nixie Module驱动类库,并且完全开源。

特别感谢:aGuegu

详情及下载请见阿古作坊: QS30-1 辉光管通用模块 Arduino 类库开发记

QS30-1 Nixie Module list on eBay

 

http://i1237.photobucket.com/albums/ff474/yanzeyuan/Nixie%20Module%20QS30-1/2012_07_07_IMG_5903.jpg
DIY是一种享受,享受的是过程,更是结果……

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

软硬件设计:严泽远
QQ:6626209
Mobile:18602007878
WebSite:http://www.nixieclock.org
E-mail:yanzeyuan@163.com

17 comments to QS30-1 Nixie Module | 辉光管显示模块 介绍【软件篇】

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>