本文为版权内容,文章内容(包括但不限于文字、图片、声音、录像、图表、软件、程序)未经版权人书面许可,任何人不得引用、复制、转载、摘编或以其他任何方式非法使用。
Copyright material!
All material on this page is copyright of ZhangFeng(zjjszhangf@gmail.com) unless otherwise acknowledged. Duplication or sale of all or any part of it is not permitted.
作者:张锋 (zjjszhangf@gmail.com)
本制作的特点
1、 使用优质的全新三星DVD屏显用荧光显示屏,同时支持小图标、字符点阵显示。
2、 进一步改进了VFD驱动电路,单5V供电,实现无变压器生成VFD所需的交流灯丝与负高压,符合VFD屏驱动规范,显示效果好;
3、 采用全贴片零件制作,整机超薄、小巧;
4、 电路分成屏幕驱动、电源驱动与单片机三个独立的部分,构成可组合又可分离的结构,利于业余制作中复用其中的资源,驱动其他类型的VFD屏;
5、 尽量利用单片机内部资源,减少外围硬件,制作容易,成本低;
6、 完全由单片机软件独立完成整屏的扫描工作,软件功能中实现了多种刷新与转场效果,动态效果佳;
荧光屏简介
本制作采用的VFD屏幕的型号为:SAMSUNG SSVD HUV-13SS16T,显示色为绿色。此屏的主要优点有:全新亮度高屏、优良的制造工艺(无突出的气管)、包含多个显示区域、显示资源丰富。此屏原为DVD类设备用显示屏,但是从其内部显示区的构成来看,此屏无任何特殊的显示标记,属通用VFD显示屏,可应用到很多不同的领域中。
先来看一下显示资源的构成,屏幕显示区包含一个10*9全点阵区以及8个5*7字符点阵区,同时在双字符中间包含点号及冒号资源。点阵区可显示小尺寸动画、图标等资源,字符点阵区可用来显示英文字母、数字及标点以及一些简单的汉字点阵,点号及冒号可用于时钟及小数电的显示,通用性强;从屏幕的引脚结构来看,为上下两排对称引脚,屏内点阵也是上下居中对称,所以屏的安装方向可根据实际需要自行确定。
全屏实际总引脚数为60脚,其中37脚为阳极脚位P1~P37,还有13个栅极脚位1G~13G,灯丝脚位总共8脚,分别位于屏幕两侧,每边各4脚灯丝,以上下各两脚且互相连通的方式引出,剩余2脚为内部连通的空脚位。所有引脚分成上下对称的两排方式引出,每边各30脚,引脚间距为2.54mm,引脚外形为一体化扁平引脚。在以上规格中,尤其需要注意扁平引脚这一点,如果想使用普通的2.54mm排座作为插座安装此VFD屏,通过实际测试表明,引脚与排插之间无法确保稳定接触,通常都会产生出现接触不良现象,影响显示效果,所以此VFD屏建议直接焊接到PCB上,以确保稳定的电气连接。在设计PCB时也应该考虑到此屏的引脚是上下两排方式排列,尽量不要在屏幕下方设置零件,否则日后维修或更换零件会比较困难。
屏管脚连接如下表所示:
序号 |
60 |
59 |
58 |
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 |
49 |
48 |
47 |
46 |
连接 |
F1 |
F1 |
NC/IC |
P13 |
P14 |
P15 |
P16 |
P17 |
P18 |
P19 |
P20 |
P21 |
P22 |
P23 |
P24 |
序号 |
45 |
44 |
43 |
42 |
41 |
40 |
39 |
38 |
37 |
36 |
35 |
34 |
33 |
32 |
31 |
连接 |
P25 |
P26 |
P27 |
P28 |
P29 |
P30 |
P31 |
P32 |
P33 |
P34 |
P35 |
P36 |
P37 |
F2 |
F2 |
序号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
连接 |
F1 |
F1 |
NC/IC |
P12 |
P11 |
P10 |
P9 |
P8 |
P7 |
P6 |
P5 |
P4 |
P3 |
P2 |
P1 |
序号 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
连接 |
13G |
12G |
11G |
10G |
9G |
8G |
7G |
6G |
5G |
4G |
3G |
2G |
1G |
F2 |
F2 |
SAMSUNG SSVD HUV-13SS16T管脚连接表
备注:表中F为灯丝引脚;G为栅极引脚;P为阳极引脚;NC/IC为内部连通引脚,应确保与PCB无电气连接;
电气参数及及驱动要点
HUV-13SS16T VFD屏的电气参数为:灯丝交流驱动,电压范围为2.4Vac~3.6Vac,推荐驱动电压范围为2.4Vac ~3.3Vac,典型值选3.0Vac,灯丝电流范围为90mA~110mA,典型值为100mA;阳极与栅极电压相同,推荐电压值为+27.0V,最大值为+32.0V;阳极电流在小点阵区内典型值为2.0mA,最大值为4.0mA,在点阵字符区内的典型值为3.0mA,最大值为6.0mA; 栅极电流在不同栅区内的值各不相同,典型范围为2.0mA~4.0mA,最大值范围为4.0mA~8.0mA;阳极与栅极截止电压也相同,最小值为5.1V,最大值为7.7V;扫描占空系数Du为1/17;脉冲宽度Tp为100μS。
从屏幕的物理结构上看,此屏属于动态扫描屏,整屏总共分成13个栅格,前5个栅格覆盖了小点阵区域,剩余的8个栅格分别覆盖了8个5*7字符点阵区及间插在其中的点号与冒号字段。
与普通的动态扫描屏不同,其中存在着独立的纯点阵区域及分离的单独字符区域以及嵌在字符区域中间的点号及冒号,由于混合了多种不同的显示区域,整屏显示扫描过程与传统的动态扫描字符屏相比要复杂很多,所以开发之前需要仔细研读一下其建议的扫描周期图。
由扫描周期图可知,整屏扫描总共分成16个扫描段T0~T15,分别对应驱动屏幕中的三类不同的显示区域,分别是点阵部分(T0~T5)、字符部分(T6~T13)及点号与冒号部分(T14~T15)。应该特别指出的一点是,虽然纯点阵区在物理上是被分成5个不同的栅格,扫描周期中并不是将5个栅格单独分配5个平均的扫描时间片进行扫描显示,这是由屏幕结构所决定的。点阵区域物理设置上的密集性使得栅区仅仅是在面积上刚刚遮盖住了对应的点阵,但是如果仅仅使用简单的平均扫描法,会导致在一个栅区的边缘点阵出现显示不均匀的问题,同时栅区两边未显示的阳极点阵字段也会出现不应有的发光现象。
解决这一问题的方法就是改进扫描方式,将普通的平均扫描法换成双栅区扫描法,即在显示一个栅区的扫描过程中,将左右两个栅区同时接电,同时对应的阳极数据也以左右两个栅区下方居中的阳极笔段决定,使用这样的扫描方式才能够产生均匀的显示,避免出现左右栅区互相影响的问题。所以在周期图中可以看到,小点阵区的5个栅格的扫描过程总共经历了6个扫描时间段(T0~T5),在这6个扫描时间段内,5个栅区具体的加电扫过程为1G→1G+2G→2G+3G→3G+4G→4G+5G→5G,其中中间4个扫描时间段(T1~T4)跨了两个栅极,对应输出的阳极数据也要相应调整,这一点要注意不要搞错。
点阵字符部分的扫描比较简单,与普通扫描屏的扫描类似,使用的是平均扫描法进行扫描,8个字符分成8个平均的扫描时间段T6~T13来完成。特别注意的是在扫描显示字符区域时,对应亮点号与冒号字段的阳极数据不要点亮,应该将这几个特殊字段放在最后两个扫描周期内独立显示。
最后两个扫描周期用于显示点号与冒号字段时,由于点号与冒号字段位于两个字符栅极之间,所以其显示时对应的栅格应为其左右两侧的两个栅格同时加电,只有这样才能够确保获得正确的显示亮度。具体见扫描周期图中的T14~T15时间段。
VFD屏驱动硬件选择
上面已经谈到,HUV-13SS16T荧光屏的扫描周期比较复杂,属于非标准的动态扫描屏,所以无法选用常见的通用VFD动态扫描驱动芯片完成扫描工作,必须使用专用电路或使用通用高压驱动电路配合单片机完成扫描工作。本制作选择使用后一种方案实现,即使用高压驱动电路与单片机配合,以软件方式完成扫描驱动。
在高压驱动电路的选型中有两种选择,一种是使用正高压进行驱动,另外一种是使用负高压进行驱动,使用正高压进行驱动的优点是正高压生成比较容易,可以使用Boost通用升压电路生成,硬件价格低廉,缺点是需要选择对应的正高压驱动芯片进行驱动。本制作使用的VFD屏总共包含37个笔段与13栅极,总计需要40个驱动脚,通常可以选择PT6306芯片配套进行驱动。PT6306是“台湾普城科技”生产的高压串入并出移位寄存器,它的特点是具备64个输出引脚,最高支持+80V、50mA的高压驱动,非常适合作为VFD驱动芯片。通过市场采购的实际情况来看,PT6306不仅不容易买到,而且零售价格很高,如果使用这一方案,会大大增加制作成本。同时市场上其他同类正压高压驱动芯片也基本都是价高且不易购买,所以本制作最后决定使用负压型驱动方案,以降低成本。
负压型驱动VFD的专用电路目前最优选择依旧是STF16360,其最高支持-30V电压,符合此屏幕所需的驱动要求。但是一片STF16360仅提供了36段驱动输出,而驱动此屏需要40段驱动输出,单片无法满足驱动需求,最后决定采用的驱动方案是使用两片STF16360进行级联。
STF16360应用结构比较简单,可直接视为支持负高压输出的串并转换电路,所以这样的电路很容易进行级联使用,除了并联供电引脚外(包括VDD、GND、VEE),在数据传输层上还需要将两片电路的复位Reset、时钟Clk、控制Ctl这三跟引脚并联起来,同时将第一片电路的数据输出引脚Dout连接到下一片电路的数据输入引脚Din端即可完成数据的传递工作,当然如需级联更多的芯片,也是同样操作即可。具体连接方式如下图所示。
本制作所使用的单片机依旧选择了型号为AT Mega8的8位处理器芯片,Mega8具有内部资源丰富、价格低、使用人数多、开发资料丰富的优点。在本制作中,为节约成本,降低外围元件,灯丝驱动信号、高压PWM信号、动态扫描、时钟计时等大部分工作都通过单片机内的软件完成。实际上,随着技术的发展,更多更优秀的8位单片机不断涌现,只要资源满足本制作的需要,读者也可以选择自己熟悉的不同类型的单片机进行开发。
电路分析
在设计基本驱动电路的过程中,采用原先已有的驱动方案,此电路方案详见《无线电》2012第7期 ——《自制米字荧光屏时钟》。本文只做一个简单的说明:典型驱动电路中的灯丝驱动部分采用L9110S电机驱动作为H-Bridge,生成交流方波,交流方波通过两个电容耦合后连接到灯丝上,完成灯丝交流驱动以及实现与高压部分的隔离。这个驱动电路的缺点在于L9110S芯片效率低、压降过高,会出现一定程度的发热现象,同时电路中的H-Bridge驱动方波由单片机以软件方式生成3KHz~10KHz左右的低频驱动信号,频率落在音频范围内,容易使灯丝产生可听见的高频音,影响实际使用效果。在使用此类型电路试驱动此三星VFD屏时就出现了这样的问题,经过反复调整驱动频率,灯丝一直产生明显的震荡音,无法完全消除,所以驱动此屏需要考虑升级旧有的驱动电路。
消除灯丝震荡音的关键点在于如何提高或降低灯丝的驱动频率,将其设置到人类可感知的音频范围以外,降低驱动频率是一个选择,也更容易做到,但是降低驱动频率会产生的二个主要问题是:一来可能产生闪烁现象;二来需要使用大容量的耦合电容,体积大,且增加制作成本。另外一个选项是提高驱动频率,提高驱动频率的优点是当频率达到合适的程度时,可以使用小尺寸的小容量层叠电容进行耦合隔离,大大减小元件尺寸。
考察Meag8单片机内的资源,其定时器Timer1可以很容易地使用“相位频率可调PWM模式”,生成两路相同/互补的桥驱动信号,且驱动信号的相位和占空比都可调整,只要两路信号的占空比小于50%,那么中间间隔的时间区域就可以作为死区时间,以防止桥臂发生短路。
使用以上方法在实际测试中遇到的问题是,使用Timer1定时器可以生成高频的桥驱动信号,但是由于这里使用的是L9110S固定芯片进行驱动,无法对其内部的三极管的开关速度进行控制,且对于普通三极管应用,实际应用中应至少设置2μs的死区时间,这一时间区域对于低频信号宽度而言所占的比例很小,不会产生多大的影响,但是对于高频信号,如100kHz的信号来说,其在信号周期中所占的比例就很大了,会直接影响到了能量传递的效率。同时考虑到原电路中还需要使用定时器Timer1的快速PWM生成高频驱动信号驱动Buck-Boost电路生产负高压,灯丝驱动不能完全占用Timer1的引脚资源,虽然还可以考虑使用Timer2的PWM资源,但是在8M主频的情况下,Timer2只能产生最高31.25kHz的驱动信号,频率过低,不一定能够满足需要。而使用定时中断程序软件完成方波信号则不仅影响程序执行效率,且也无法生成过高频率的信号,所以如何解决这一驱动问题成为本制作的需要解决的一个问题。
最简单的解决办法就是更换单片机,使用具备更多资源的单片机来取代Mega8。很多新型的单片机的内部资源丰富,如使用带有死区可调的互补驱动器的单片机,可以直接直接解决上面的问题。但是更换单片机会产生其他的一系列问题,一来可能会增加成本,二来需要重新熟悉新的单片机,要花费很更多的时间,三来如果更换其他厂家的单片机,可能需要重新购买开发板、编程器等设备,投资过高。所以本制作未选择这一方法。
另外一个方法是考虑如何使用单脚输出的PWM高频信号驱动电路取代原需要双脚互补信号驱动的灯丝电路,以节约PWM资源。本制作实际是选择这一方法来解决灯丝高频驱动问题的。
生成灯丝电压
单脚PWM信号产生灯丝驱动交流电压的一个方法是使用VFD灯丝专用驱动芯片LM9022来构成灯丝驱动电路。LM9022是美国国家半导体生产的,专用于VFD灯丝驱动的芯片,SO8封装,典型工作电压为5V,可提供最高2W的驱动功率,内部使用桥式输出结构,输出电压范围为0.15V~4.85V,驱动电路压降典型值为0.4V~0.6V,电路工作效率高。LM9022的典型应用电路如下图所示,从电路中可见除了10μF的退耦电容外,LM9022外部仅需添加一个1μF的电容即可工作,典型应用电路仅需从外部提供一路高频驱动方波,即可生成灯丝驱动电压,无需考虑死区时间等参数,驱动简单。
同时LM9022也支持自震荡模式,在外部电路中添加4个电阻与1个0μ1F的电容,即可完成,无需外部提供专门的高频驱动信号。
考虑到Mega8可提供高频率驱动信号,实际采用的方案依旧使用Mega8的Timer1其中的一脚生成100kHz~200kHz的驱动信号直接驱动LM9022。耦合电容采用4μ7/50V的层叠电容进行耦合。实际制作的试验电路板如下图片所示,电路板上耦合电容部分设置了插座,可以插入不同容量的电容进行耦合测试,电路板的下半部分为负压Buck-Boost部分。
试验结果表明,使用LM9022构成灯丝驱动电路,具有工作稳定、驱动效率高、可使用单一信号驱动、节约单片机资源的优点,但经过实际采购又出现了问题。在试验板上使用的LM9022芯片是去年购买的几片样片,当时价格较低,按照当时的采购价格,使用LM9022替换原电路中的驱动部分,整体成本仅增加几元而已,但是随着德州仪器收购美国国家半导体,LM9022芯片已停止生产,且市场上也未见可兼容型芯片,随着LM9022数量的逐日减少,价格也一路飙升,目前的零售市场不仅不容易采购到这一芯片,而且即使是拆机芯片,价格也很高,所以使用LM9022驱动的方案暂时搁浅,需要考虑更换另一类型的驱动电路进行取代。
通过多次试验,最后确定并被实际采用的灯丝驱动电路采用的方案是“单端驱动的DC/AC转换电路”,它是利用Boost Converter升压变换电路的前半部分,通过可调整的PWM信号先将电压升到所需要输出的交流电压的2倍的方波信号,然后通过电容的耦合,以获得符合条件的交流方波电压。
使用这一电路存在的一个问题是,驱动灯丝所需要的是标准的方波信号,要求方波的正端宽度与负端宽度相同,这就使得输入的PWM信号的占空比必须是50%,但是固定PWM的占空比为50%,会导致电路中输出的电压值也被固定下来(理想状态下的输出电压Vout=2*Vin),无法通过调节PWM占空比的方法进行灵活调节。考虑到电路的供电电压是5V,如果专门为DC/AC转换电路增加一个降压电路,会使电路复杂化、降低工作效率,且导致成本增加;所以最后考虑采取的方案是按照1/2占空比进行驱动,通过调整电路中的PWM频率、电阻R以及C的值,使最后生成的平均电压V(rms)符合灯丝驱动需要的电压范围。在实际应用电路中,PWM驱动频率为200kHz,电阻R值可选择为5~10欧姆,隔离电容C选择使用的是表贴的4μ7/50V层叠电容,体积小。
电路中的电感应选择大于100μH的电感,考虑到电路频率可能会有所偏移,在满足电路工作电流的情况下,尽可能选择电感量稍高的电感,实际测试中使用与负压电路同规格的1mH/7730封装的电感,发现因其工作电流仅为0.12A,长时间使用后会出现轻微的发热现象,最后更换成容量为150μH的SAGAMI贴片绕线功率电感(尺寸6mm×6mm×3mm,电流0.33A),实测电路长时间稳定工作无发热。如还需降低所需的电感量(同尺寸规格电感,电感量低的过电流能力更强),则对应的PWM驱动频率应该随之增加。受到所使用单片机速度的限制,实际PWM工作频率一般都在300kHz以下,更高的工作频率会导致PWM可调节性变差,不建议使用。
驱动灯丝的方波生成的PWM信号中,还必须考虑到虽然输出的是1/2占空比的方波,但不代表通过驱动三极管后的实际电路输出也一定是1/2占空比的波形,应考虑三极管的开关延迟以及耦合电容的充放电特性,在软件中做少量的补偿调整,以确保正确的对称输出波形。大部分情况下,在确保灯丝两端的驱动方波正负周期相等后,方波浪的正负最高值会有±10%左右的差异,这一差异不会影响VFD灯丝的驱动。
负压供电部分保留原有的Buck-Boost驱动电路,且其中的1mH电感无需更换,因为虽然将驱动频率增加到200kHz,为保持输出的负压保有同样的电流波动率,电感容量可降到400μH ~500μH左右,但是这一容量规格的电感不易购买。如将电感减低到220μH,由于负压输出是小电流应用,使用过小容量的电感易使电路出现工作不稳、电流波动率过大、电感发热等现象,所以此处保留原负压电路中的原电感规格。
实际测试结果表明,当输出的负压达到-20V左右时,屏幕显示效果已经很明亮了,且随着显示的变化,负压的漂移范围在±1V左右,不影响显示效果。当然,此屏最高eb、ec电压为32V,此电压已经很接近STF16360的极限驱动电压-30V,且负压生成电路中采用无反馈方法生成,无过压保护电路,当设置过大的负压时,为防止出现电压过高导致损坏STF16360,应在负压的输出端串联一个限流电阻,并且并联一个30V稳压管,以起到简单的过压保护作用。
“截止偏压”等部分的电路与原驱动电路一致,即使用稳压二极管串联限流电阻连接到灯丝两端由两个3kΩ的电阻串联后的中间位置处的简单电路来实现,有必要的话,可在稳压管上并联一个小容量的电解电容来增加稳定性。
完成了驱动电压生成后,VFD驱动电路最困难的部分就已经解决了。而显示驱动部分的电路则直接使用两片串联的STF16360负责所有笔段与栅极的驱动,单片机通过串行数据通路与串联的STF16360连接,在每个显示周期将合适的显示数据逐位输送给STF16360串,最后进行锁存显示。由于此屏的驱动信号比较复杂,所以最后软件层上转换工作会比较复杂一些。
元件表:
数量 |
元件值 |
元件名称 |
元件标号 |
电源板元件 |
|||
2 |
4u7/35V |
CAP_POLPTH4 |
C1, C6备选封装 |
1 |
SS14 |
DIODESMA |
D2 |
2 |
1k5 |
R-EU_R0603 |
R3, R11 |
1 |
1mH/7730 |
INDUCTANCE_US7*7 |
L2 电感 |
2 |
3k0 |
R-EU_R0603 |
R2, R6 |
2 |
4u7/50V |
CAP0805 |
C4 |
2 |
4u7/35V |
CPOL-EUSANYO_SMD_C6 |
C2, C5 备选封装 |
2 |
5R~10R |
RESISTOR0805-RES |
R1, R7 |
1 |
6V |
ZENER-DIODESOD80C |
D1 稳压管 |
3 |
10k |
R-EU_R0603 |
R5, R8, R12 |
1 |
22uf/50V |
CPOL-EUSANYO_SMD_C6 |
C7 |
1 |
56k |
R-EU_R0603 |
R9 |
2 |
100k |
R-EU_R0603 |
R4, R10 |
1 |
220uH |
INDUCTANCE_US7*7 |
L1 |
1 |
8050 |
NPN |
Q1 |
1 |
8550 |
PNP |
Q2 |
1 |
JP5 |
M01PTH_LONGPAD |
HV-IN |
显示板元件 |
|||
1 |
MA05-2 |
5*2双排针 |
SV2 |
2 |
0u1 |
C-EUC0805 |
C2, C3 |
1 |
22p |
C-EUC0805 |
C1 |
1 |
HUV13SS16T |
HUV13SS16T 显示屏 |
VFD1 |
2 |
STF16360 |
STF16360 负压驱动芯片 |
IC1, IC2 |
安装调试
由于本制作使用的是3片独立的分立PCB,所以安装调试工作比较简单,其中的单片机部分直接使用现成购买的Mega8最小开发板,这部分无需焊接与调试,只需要使用杜邦线连接板上插针后,与其他线路板进行连接即可。
显示屏部分为双面PCB,板的正面安装VFD显示屏,板的背面安装两片STF16360及配套的退耦与复位电容,相关连接通过PCB边缘的排针与外部电路连接,整板元件相当简洁,焊接也很容易。就是VFD屏引脚比较多,插入PCB焊孔时要耐心一些,建议先先插入一排引脚,另一排引脚插入时使用尖头镊子协助插人。
显示屏PCB焊接时可自行动决定焊接顺序,由于是屏与零件分两面单独放置,屏幕下无任何零件,所以即使芯片焊接出现问题,也很方便进行修复。STF16360芯片的焊接技巧等这里就不再重复叙述。
电压供应板为单面PCB,可在业余条件下自制,板上提供了灯丝以及负数压部分的电路,驱动输入部分与单片机板连接,输出部分与显示屏板连接,电路板的设计中考虑到将其作为通用测试板,板上设置了一些便于调试与更换测试零件的测试插孔位,可用于其他类型VFD屏的驱动。
软件设计
本制作使用默认的左点阵右字符设置,设计中将位于屏幕左方的小点阵区域用来显示星期等小图标信息,位于屏右侧的字符点阵区域则设计成文字几数字显示区域,配合其中的冒号等资源构成时钟信息显示区及用于设置信息的显示。软件设计方面的主要工作集中在显示部分,时钟部分与传统的时钟代码没有什么本质的区别,这里就不再详细说明,这里重点谈一下显示部分的软件结构。
软件设计中使用中断服务程序与主程序配合完成VFD显示的扫描工作。中断服务程序的主要任务是:将多个中断周期视为一个扫描段的周期,在一个扫描段的中期中的不同时间点上,中断服务程序完成相应的代码功能,例如在当前段的显示开始阶段将段显示数据的送出到STF16360并锁存,同时为了防止在扫描过程中各段之间产生相互的干扰现象,在扫描段中设置了一定长度的消隐时间,在这一时间内,中断服务程序将清空STF16360数据并锁存。
主程序使用一个大循环完成如键盘状态读取,当前显示状态表示等一系列工作,在主程序中设置了三个全局的内存区作为内部显示VRAM区域,其中的小点阵区使用标准的从左到右,从上到下的顺序排列内存规划,字符点阵区域则考虑到是5*8点阵的区域结构,使用的是从下到上且从左到右,逆时钟转90度的内存排列方案,目的是节约显示内存并且方便字符数据拷贝入字符显示区内存,点号及冒号区域使用单一的全局变量来表示。
内部显示VRAM区中的全局点阵数据并不能够直接表现在VFD屏幕上,这之间需要一个翻译的过程,即将内部VRAM内的点阵数据转换成可以输送到STF16360串中的显示数据,典型情况下,这个翻译过程是由中断扫描程序来完成的,但是在本应用中,由于受到单片机速度的限制以及转换代码的复杂性,导致在中断扫描过程中无法实时完成转换,导致显示出现闪烁,所以最后采用的是双缓冲方案进行处理。
所谓双缓冲方案即在内存区域中开辟出两个相同尺寸的包含将VRAM解析为STF16360数据的缓冲区域,其中一个称为主数据区,另外一个为显示数据区,显示数据区由中断扫描程序使用,中断扫描程序每次读取显示数据区内的数据直接发送给STF16360,而将VRAM内容进行转换的工作则由主程序调用,当主程序判断当前显示内容需要更新时,其将调用解析函数,将VRAM内容先转换到主数据区内,转换完成后设置一个全局的更新标志,当中断扫描程序发现全局更新标志被置位时,其利用扫描周期中的空余时间将主数据区内的数据拷贝到显示数据区内,并清除全局更新标志。由于所需拷贝的数据很少,可以在极短的时间内完成,不影响扫描中断服务程序的进行,也就不会影响实际显示效果。通过实际应用,此方法大大提高了显示效率,屏幕刷新显示稳定无闪烁。
制作总结
本制作对旧有的VFD驱动电路做了进一步的改进,支持只使用单片机的一个引脚输出的高频方波信号生成灯丝驱动电压,解决了旧有电路频率范围受限的问题,同时由于可输出100kHz以上的频率,使得可使用小容量的隔离电容,进一步减小了所使用的电容元件的尺寸,且整体元件成本基本保持原样。由于本制作使用的VFD屏为非通用屏,所以最后未将所有电路全部集成到单一PCB上,但是基本的驱动原理是一致的,在这里希望有兴趣的读者根据此电路制作出适合自己应用的驱动电路,通过亲自动手实践,获得电子制作带来的无限乐趣。
Write a comment
system-d (Saturday, 08 December 2012 07:06)
Hello! I bought the same display, I want to use it in the DAC. It would be very nice if you could write your article in English - the Google Translate translates from Chinese not very good, and my friends do not know the Chinese language :) But, in any case, thanks for the great article!
owner (Saturday, 08 December 2012 08:15)
Ok, if I got time ,I'll try to rewrite the article in english.
But now I think you should read the sch first,it contains almost all of the key part of how to drive such vfd screen.