QS30-1 Nixie Module | 辉光管显示模块 介绍【软件篇】
在上一篇文章QS30-1 Nixie Module【硬件篇】中,重点介绍了辉光管显示模块的硬件部分及设计、制作过程。
或许我们对她独特的显示效果始终难以忘怀,但要让她焕发夺目色彩,重点还在于应用。该模块在其硬件方面已经具备了完备的功能,应用软件方面则需要结合实际应用要求来设计。先来回忆一下那种火红的朦胧:
无论何种应用方案,基于硬件设计原理,该模块的底层控制实为对74HC595的通讯控制,在这里,我以51单片机控制板为核心来介绍一下底层驱动软件的设计方法。
每个显示模块的辉光管数字0-9和RGB LED以及两颗Neon Lamps均由两片74HC595来控制,共需要16bit(2Byte)数据。根据原理图,两片74HC595共有16个输出端对应16bit数据,对应关系表如下:
根据对应关系表,可以得出辉光管各种显示状态、RGB LED和Neon Lamps的对应数据表:
(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
DIY是一种享受,享受的是过程,更是结果……
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
软硬件设计:严泽远
QQ:6626209
Mobile:18602007878
WebSite:https://nixieclock.org
E-mail:yanzeyuan@163.com
18 条评论
XANA · 2012 年 7 月 20 日 上午 12:17
貌似我又是1楼
Chris · 2012 年 10 月 31 日 下午 2:41
严老师您好
自己也想DIY一个8位数的数字钟,我想这个电路应该对我有帮助,
请问可以分享您的电路图让我参考吗?感谢您!
♂唯有→奋斗 · 2012 年 11 月 1 日 上午 9:37
你好,感谢关注!
这个辉光管显示模块的全部电路图资料已经刊登在2012年第10期的《无线电》杂志上,需要的话可以前去查看一下!
ukonline2000 · 2012 年 11 月 3 日 下午 2:59
见到严老师的辉光灯非常喜欢,最近中毒很深,自己也想diy一个,希望严老师能分享些资料,呵呵
♂唯有→奋斗 · 2012 年 11 月 3 日 下午 3:07
QS30-1的封装库已经发到你的邮箱,请查收!
王勇 · 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?
♂唯有→奋斗 · 2013 年 3 月 2 日 下午 12:24
Hi, I have about 200pcs semi-finished modules in stock, thanks.
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的的数码模块 (英语翻译,但不要寄予太大的希望),但它是存在的。 […]