PT6312原理与应用分析
硬件结构:
VFD即真空荧光显示屏,其结构和原理可参考单片机音响技术网 -VFD应用指南资料,里面详细介绍了VFD的原理结构,应用等等。
VFD显示高贵华丽,常应用在DVD,高档的功率放大器,电磁炉,电冰箱等电器产品中用于用户操作显示。而与各种VFD显示配套的驱动常用PT6312,PT6311芯片,驱动芯片的硬件结构主要由扫描信号发生器、串行通信接口、控制模块、显示存储器、按键扫描值寄存器、通用输入寄存器、LED驱动器、VFD段/位驱动器等构成。本文着重讲述PT6312即VFD驱动的单片机编程应用。首先认识下PT6312连接VFD的电路原理框图如图1所示。
图(1) PT6311电路图
由图1及电路原理可知,SW输入端可做为开关输入口也可以作为四个键盘的输入,即在按键数目不多于4个或者可以利用组合按键的情况下,这部分资源也可作为按键接口来利用。因此,PT6312实际提供两个键盘扫描的接口,一个是通常的矩阵式键盘接口,另一个就是开关信号输入端SW1~SW4。另外,PT6312还集成了外挂四个LED驱动功能。见内部功能图2所示。
图(2) PT6312功能框图
键盘接口
普通的键盘接法主要有两种:独立式和矩阵式。
四个SW口可直接连接4个独立键盘。键盘矩阵则可组成6×4接法,键的输入状态KEY1-KEY4由读取信号SEG1/KS1-SEG6/KS6采样并锁存到PT6312的内部寄存器中,单片机控制读键只需读取其键盘寄存器内的锁存值并判断按键状态即可,使用简单方便。由图1所示矩阵式按键多达24个,PT6311的用法相同,但矩阵式按键更多,它有比PT6312更多的内部寄存器。 PT6312的显存空间配置情况如图3所示。实际应用中,显存空间往往只是使用一部分,因为所使用的显存空间大小与设置的显示模式有关,图中的每一行对应一字,每一列对应八段即一个字节,相当于一段对应于一个字节的一位。另外,PT6312还有键扫描值寄存器、开关量输入寄存器和LED输出寄存器,这些寄存器的数据格式如图4图5所示。
图(3) PT6312显存空间配置
图(4) PT6312开关SW和LED
图(5) PT6312键盘矩阵输入与读键格式
片内的控制字
PT6312具有显示模式设置、数据设置、地址设置(针对显存)和显示控制等四种控制字。其中最高两位为指令特征位,由指令解码器来识别。
外部通信接口及信号时序
根据该芯片的电路结构,PT6312提供四线制串行接口与外部控制器通信,接口信号线分别为时钟CLK、输入数据DIN、输出数据DOUT和选通STB,通信的控制时序见后。接口电路连接如图6图7图8所示。
图(6) PT6312时序图
图(7) PT6312扫描和显示时间
根据PT6311与外部微控制器的接口协议,外部控制操作分为写入控制字、写入数据(包括显存及LED口)、读取数据(包括键值及通用输入SW口)。写入控制字/数据的时序如图9所示,以地址自动增一方式连续写入显存数据的时序,读取数据的时序如图10所示。
当然,键盘可根据需要选择挂接部分按键,但是,由前述内部键扫描存储器的对应关系,最好选择可以连续读取键值的区间,便于程序处理和减少读取时间和处理时间。
图(9) PT6312读取数据
图(10) PT6312应用时序
单片机编程实现
PS:主程序调用显示更新程序即可更新显示,顺序为先根据显示屏电路连接的段位,对应设置PT6312段位,写入PT6312内部RAM,再设置PT6312写完一个字节后其内部RAM地址是否自动跳转+1,然后再设置VFD亮度,最后把单片机处理的显示数据对应写入PT6312的显存中。
同样键盘程序也需要循环调用,键盘程序就是给PT6312发一个读键命令(先写入一个读键命令字给PT6312),再读出其内部按键缓存的值判断按键,按键按下就执行对应的功能或者更新单片机内的显示存储数据。
PT6312的键值内部缓存有3个,读三次缓存到3个寄存器。读键程序可参考单片机音响技术网TOPAV-2008开发板配套之相关程序。
下面给出显示与更新的子程序:
WR_VFD:
MOV A,#MODE_VFD;扫描模式,段位设置6X16
CALL WR_PT6312_COMD
MOV A,#WR_DIS_MEM_I;地址+1
CALL WR_PT6312_COMD
MOV A,S_DB_DIMMER;显示亮度设置
CALL WR_PT6312_COMD
MOV A,#0C0H ;FIRST ADDRESS=00H开始,6311:00H-2FH,6312:00H-15H
CALL WR_PT6312_COMD
MOV R1,#ADD_START;显示值缓存RAM开始地址
WR_VFD2:
MOV A,@R1
CALL WR_A_BYTE_TO_VFD0
INC R1;显示缓存RAM地址+1
MOV A,@R1
CALL WR_A_BYTE_TO_VFD0;
INC R1
CJNE R1,#ADD_END,WR_VFD2;循环写完全部缓存
SETB P_STB_VFD
END_WR_VFD:
RET
WR_PT6312_COMD:
SETB P_STB_VFD
CLR P_STB_VFD
WR_A_BYTE_TO_VFD0:;写入一个字节
MOV R0,#8
WR_A_BYTE_TO_VFD1:
RRC A
CLR P_CLK_VFD
MOV P_DATA_VFD,C
SETB P_CLK_VFD
DJNZ R0,WR_A_BYTE_TO_VFD1
RET
RD_A_BYTE_F_VFD0:;读一个字节
SETB P_DATA_VFD;读取先置位
MOV R0,#8
RD_A_BYTE_F_VFD1:
CLR P_CLK_VFD
MOV C,P_DATA_VFD;CLK上升沿读出数据
SETB P_CLK_VFD
RRC A
DJNZ R0,RD_A_BYTE_F_VFD1
RET
又:PT6311只是矩阵键扫缓存多3个,LED口多一个,其段位设置方式比PT6312多,适应更复杂的显示屏,所以其内部显示缓存要多些,编程方式几乎一样,在此不多说明,可参考PT6311的DATASHEET。