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和辉光管进行控制,在这里我采用了结构体来对整个模块的各种显示模式进行了配置。
代码如下:

struct t_Module
{
	uint	LED;		//LED颜色
 	uint 	CLO;		//冒号状态
 	uint 	NUM;		//显示数字
};

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

#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;
代码如下:

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()函数,用于根据显示模块的显示模式计算要发送的两个字节数据。
代码如下:

/*********************************************************************
** 	函数名称:			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的最小系统版,在此贴出主函数,以供大家参考:

/*********************************************************************
* 函 数 名: 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:https://nixieclock.org
E-mail:yanzeyuan@163.com


严 泽远

☑男性☑80后☑已婚☑没大房☑没好车☑没钱☑没工作☑没......

18 条评论

XANA · 2012 年 7 月 20 日 上午 12:17

貌似我又是1楼 :mrgreen:

Chris · 2012 年 10 月 31 日 下午 2:41

严老师您好
自己也想DIY一个8位数的数字钟,我想这个电路应该对我有帮助,
请问可以分享您的电路图让我参考吗?感谢您!

    ♂唯有→奋斗 · 2012 年 11 月 1 日 上午 9:37

    你好,感谢关注!
    这个辉光管显示模块的全部电路图资料已经刊登在2012年第10期的《无线电》杂志上,需要的话可以前去查看一下!

ukonline2000 · 2012 年 11 月 3 日 下午 2:59

见到严老师的辉光灯非常喜欢,最近中毒很深,自己也想diy一个,希望严老师能分享些资料,呵呵

王勇 · 2012 年 12 月 1 日 下午 7:10

经过朋友介绍看到了这个作品,中毒啊,希望能够分享一下相关资料,我也折腾折腾,谢谢您!

    ♂唯有→奋斗 · 2012 年 12 月 3 日 上午 1:02

    呵呵,欢迎加入辉光管发烧行列…也欢迎加入我的DIY群145751810

nixie fan · 2013 年 3 月 2 日 上午 5:37

How many of these modules do you have? How many could you ship in the next 3 months for a large order?

arampee · 2014 年 7 月 3 日 下午 9:33

so beautiful

hongshunli · 2015 年 1 月 29 日 下午 2:27

我也在做这个,不过显示部件是水晶灯上的灯珠,能提供下c8051f310下的源程序到我的信箱吗,我用的是f310的板子,谢谢。

♂唯有→奋斗 · 2012 年 9 月 10 日 上午 8:47

Hi, thanks for visit. I’m not a factory, I’m only a DIYer, a Nixie fan, I like nixie tubes.
May I know where did you find my bolg?
Thanks.
Yan.

It was only a matter of time before we saw Nixie modules for the Arduino - Hack a Day · 2012 年 9 月 10 日 上午 1:11

[…] or steampunk aesthetic. We shouldn’t be surprised a factory in China is now turning out Arduino-compatable Nixie modules (English translation, but don’t get your hopes up), but there it […]

It was only a matter of time before we saw Nixie modules for the Arduino | Orange Claymore Red Slime · 2012 年 9 月 10 日 上午 1:35

[…] vintage, or steampunk aesthetic. We shouldn’t be surprised a factory in China is now turning out Arduino-compatable Nixie modules (English translation, but don’t get your hopes up), but there it […]

Belgaum news | About Belgaum | Belgaum information | Belgaum district | Belgaum city | Belgaum Hotels | Belgaum People | Belgaum tourism | Belgaum entertainment | Belgaum students | Inside facebook | Hack | make use of | technical news | | It was only a m · 2012 年 9 月 10 日 上午 1:46

[…] or steampunk aesthetic. We shouldn’t be surprised a factory in China is now turning out Arduino-compatable Nixie modules (English translation, but don’t get your hopes up), but there it […]

It was only a matter of time before we saw Nixie modules for the Arduino | vis a vis | visual mind · 2012 年 9 月 10 日 上午 4:05

[…] vintage, or steampunk aesthetic. We shouldn’t be surprised a factory in China is now turning out Arduino-compatable Nixie modules (English translation, but don’t get your hopes up), but there it […]

Indagadores |Seguridad informatica |Seguridad en internet » Era sólo cuestión de tiempo antes de que viéramos módulos Nixie para el Arduino · 2012 年 9 月 10 日 上午 11:26

[…] vendimia, o steampunk estético. No debería sorprendernos una fábrica en China está resultando Arduino-compatable módulos Nixie […]

It was only a matter of time before we saw Nixie modules for the Arduino « 电子迷 · 2012 年 9 月 10 日 下午 5:49

[…] 数码管,霓虹灯填充了一系列的形状像数字10阴极管,是一个典型的想要一个独特的葡萄酒,或朋克审美显示任何建立。我们不应该感到惊讶,现在在中国的工厂是兼容的Arduino的的数码模块  (英语翻译,但不要寄予太大的希望),但它是存在的。 […]

发表评论

邮箱地址不会被公开。 必填项已用*标注

error: Content is protected !!