|
发表于 2008-8-21 15:59:55
|
显示全部楼层
ht16512及VFD驱动
' ^$ ~) O) x9 J, h1 ?4 cVFD驱动要点:
% W+ p: a) ]0 p4 |% z0 c
' F3 L' a9 u/ T$ d1, 以灯丝电压为参考点,当阳极和栅极电压都为正时,相应点亮,当其中一极相对灯丝电压为0或负时,相应点暗,为消除侧漏光和保证可靠截止,推荐为相对副压。
# K2 @; N$ D. L& q1 l% E2 w
. E' S/ b) ~9 b% W! w( q2, 静态显示,栅极固定接正(一般只有一个栅极),通过控制阳极电压来显示,动态显示时,分时扫描各个栅极,同时在栅极为高时来控制其相应的阳极来显示。通过调节栅极脉宽来调节亮度,为了防止由于余辉效应使相邻的栅极间交替时的虚亮,栅极扫描脉冲的位与之间要留有10~20μs的消隐时间。/ ^' j; m. m9 H0 C$ S+ E2 e7 j
7 t9 w4 H8 N7 w1 `% r- b2 U
: D: R" \) ~# A3 y' ^) A. g3, 标准驱动电路;上图为静态,下图为动态。
% ?1 g7 k7 n2 H/ ?7 q" c& z# \- w5 ~8 g+ X4 X% Y. w' \6 g( f/ e
8 W5 W1 Z1 t' j# `; R
6 J: w: K: N( N( K. d
* c" x8 V; I0 e! w# u3 |3 \3 U' v, e6 @. C# k% I; S1 S0 s2 X9 W+ C( b* n
* B1 o5 e* B- l) A2 y% d( B6 ^* ]! s/ b/ Y& N
4, HT16512介绍' B6 T) h+ E' ^, C' T9 @ U
8 `, Y. x: U. f" e# F9 j: S$ R1 Y
" ~- a# s4 ?; T: d. a HT16512芯片是用来驱动4位(控制真空管的栅极)到11位的VFD(或FIP)显示的驱动控制芯片。它功能齐全,易于与微控制器接口,通过三线串行方式接收串行输入数据,它的初始化设定,需要驱动的位,段数,和显示的占空比后,向显示RAM区写数据就可以显示了。同时有键盘扫描和4led驱动,4IO输入的功能。
) X2 n* T9 O0 C' `( n8 Y1 ^" R" E! R2 j8 g% w; R- M
$ i* ^) K& u9 l' L$ K
1 L9 n2 _& `0 J6 d8 y' g& u4 U8 q0 B$ K, S3 g6 e
;*********************************************3 B, Q( ^6 e( h( V
- j9 ^8 `% F; _4 X5 L: L% L( p* ^+ s+ D: S ]- z$ T' y7 ? [' g8 ^1 @ ^
;引脚定义
4 |$ T; e3 f3 T: C/ s2 y: R0 m; J; a1 h
: h1 Q3 A2 E/ P, L) ];*********************************************4 v- [2 z& W+ g) |
+ V. X N' ~( M4 z% @9 }
! g2 {6 c5 ]1 I/ f/ _3 qvfd_cs equ pa.6 ' k0 H9 D o' q2 F0 _* t& M5 @! Y+ l! H0 g p
1 B/ ]$ C4 n4 l7 z w# @* [" y/ V
# i) p. Q( W" C: f0 h$ wvfd_cs_control equ pac.6 4 l$ U; d; N4 K' J4 l1 J' |$ {
6 I4 C/ [3 m* C) ^, M" i/ {- [& Z
9 X; K* _; H5 q# tvfd_clk equ pa.5 4 O# A( o% V% n. s
2 R( n( Y, L4 v3 U P3 w7 V1 H1 C6 X9 x0 i6 E
: l* F! j6 K2 {, j Y+ lvfd_clk_control equ pac.5 5 \' a% P0 V) Y5 Z9 X" C( p
% b; q9 S3 r: o+ x) G9 x
! f% J9 L( R; J. z8 N1 `3 ~) I9 C- D3 Wvfd_din equ pa.4
2 P8 @2 j7 S3 M' C% W. M# O5 E
9 s9 A1 ], e+ Y" R6 vvfd_din_control equ pac.4 / d: Q6 M+ C2 N
: b' K" w- `5 P3 ~ e) k$ m: Y2 t/ n0 ]0 _2 m- T6 d, T
vfd_dout equ pa.4 ( h+ x: x8 D( X- P
4 b% O0 Q+ W. E9 W5 ?# W3 P5 e* Q5 y% M6 o7 ^
vfd_dout_control equ pac.4
, M7 e8 o, ~/ ^+ E# v5 N$ j9 |/ y1 d. v& P* y6 ^& M* I
3 i! U; N" ~5 k, L3 _- r3 F9 ?;*********************************************% C% ~/ o+ B d* T- F2 |: w1 X0 i; N& e
& O# a* V8 w/ o: I8 E# y7 i$ B; k
0 t1 @$ _" j( M5 m;初始化HT165124 _9 ?/ J+ {9 w5 U+ j- Y
( R8 i2 L) d% c8 J/ M* v) @3 d. J# n3 v& C9 {: I
;*********************************************2 Y/ r" N" M$ j. b7 H
! D9 ]' J6 z1 ?3 c9 K) Lini_vfd:* b+ Q, \9 a" w( J0 M9 x, ^
9 ^/ A# J5 m' J; E/ y- d: L! |: x: t' ~6 h. F& Z4 o8 B+ p: H
clr vfd_cs_control5 G7 m! U; [! g$ o0 t/ v5 U
1 l& ^8 p) j: D- _/ Q9 }; ?set vfd_cs
8 ^% E! w0 C, ^! h' {7 u9 U5 S+ i" p+ h7 q$ k
- g: e h6 p8 L8 w3 rnop
* ^* b* k. a% o5 B, j8 E
" N! e+ c) O( b# [0 R, Q# nclr vfd_cs
! S: z1 i) W, L5 {0 X
- s7 W% C4 i7 @0 V9 `1 D. imov a,00000111b ;显示模式设置命令字:11位/11段% ]2 H X1 r2 c+ U$ Z' K. [0 N! U8 |8 h# ]. {
[$ H* l% |' k+ L- T# Cmov data_buffer1,a) D$ }) X! ^0 \! ^* @6 o
$ s) x: e8 q( A H' f' s
0 F3 U0 t3 {2 D2 u9 B6 i! T% O# d1 ]call data_out7 O8 p2 O' `8 E ^4 ]3 e
$ S, J: u2 k1 v. k) I. w( r F% v7 g
+ F7 o7 l* A# w9 l# P2 b- Q- Hset vfd_cs1 X# h, ?* l( Y$ Z T, A3 r. ~# C8 W, w- Y: i1 o
. r( ]; J: v( Q1 V, E; y
nop! ?: q5 j& s* q8 B( f1 l
5 b9 K9 l+ n% q; }3 |$ x4 r: x% a( _( o' q: F/ |+ |$ [( O3 Q y" A, Q+ a. j5 D7 Q3 k1 A
ret3 p2 J- Q" g% v8 E
3 g+ S8 x) }( H' ~0 n; J$ q. E, C0 R$ k
;*********************************************2 h% w* R6 P8 d7 b5 q- Z
7 n3 a' i) @! _8 n7 R$ {( j# V0 D ^0 A% B$ h: t& C8 t8 w
. J) \& y) l6 G1 j! o;写显示数据到HT16512( N9 v4 H: G# v& m8 J, ?4 O& }% a8 f* t% o
, X8 _5 x; C; ?6 A! `
7 Q6 _! t y0 S ?3 o5 m2 e;*********************************************; e) P" v. c. `) w8 t% g1 u/ p1 B( w( C( b
* C) y& }7 L! _) G* _wr_vfd:6 h3 p- `& a1 T. V+ D0 H8 r* `8 g/ v. f1 ?3 [9 Y4 V- b# w- S
$ d: i; F6 j, j: p" y3 Z, Z5 y
clr vfd_cs_control; M9 `# E5 h; R
6 c/ l( H; M3 L" h$ F: ?
clr vfd_cs
( ~8 I& y, u( T; f; q6 l/ x4 w: K) r$ z
mov a,01000000b ;数据设置命令字:正常工作/地址加1方式/写显示数据# O# {, w- D$ G& R c0 N
. W' A. D: Y/ O% f* V' ^
/ T0 \# {8 q' Z' o; Vmov data_buffer1,a. m) _. Z- t- C. V9 ^
# z0 m& A" _( x) I& M+ s. s& f
i2 n6 [; ]. f& [0 ?6 Xcall data_out6 i6 i2 L* [0 Q2 ?
% u, a) K- l( B* ^+ i/ {9 W5 D3 | F( \" t2 J6 Q: r8 s' C& A% E6 ?# x# A' j/ m7 B
set vfd_cs( l( Y# K1 \; I& n$ m% H' F+ }4 C9 V v
* R* C) y* t, Y0 r- j
6 h- t( M! o0 G1 j P9 r/ u% G: \! Onop, B) V5 l- }7 s
( @- Z/ y" D0 L6 T+ J2 a7 u
clr vfd_cs" Z& I) w5 [4 n$ O7 I3 M
" u6 C( b- g" F1 j' G! d! V* c
mov a,11000000b ;地址设置命令字:从地址0开始* T, _; P" ]3 _5 w+ t, Z! V! f3 s
, t0 k# G( b5 e
0 q, d8 M( X' K! M+ cmov data_buffer1,a, z+ Y: Q6 @2 t' W3 }7 S t& n# m& C+ g
* q. N1 b& O: {) B2 }- ?/ z0 C1 C0 e, pcall data_out; [9 l' L5 L% c! P' s3 K4 v, O7 O; T- I. Q4 H2 J
. L9 N5 R% h% c; h' g5 N
: k1 ^2 K5 h( Amov a,22
' ?* B/ P* K8 O, \' j$ E0 Z& F5 i( u' f1 y7 F4 T9 c2 j+ K
mov temp1,a! A- l( m- Y5 Y$ L
- t W( F2 d: G: h
8 ]& W" M8 P/ ^0 Jmov a,50h ;显示数据放在控制单片机RAM50H~65H2 A6 X: Z8 Q! J. j& f7 V w3 u: }
( [- L+ ^3 M' X3 u$ `7 T5 L) g. d8 _. s
mov mp,a R# ~: E6 x( V2 k' U
; q: {, l! L X( x% p. g$ J7 M, m0 A, q) _: d9 k& _
5 w1 [" u, g1 B i6 @+ `' O- C# hwr_vfd_loop:5 T. n1 S4 L9 Q
2 M4 a9 }! Z# Z7 E' u5 u4 p
+ h0 u0 {1 O2 Fmov a,iar9 f8 x- {; n6 G6 R5 L
6 M5 ^8 ]4 l, q% {8 e/ j6 i* W% Z0 T/ p- s- F
, E& m+ i% k" Gmov data_buffer1,a
4 L, o0 Q% O$ I) d; }/ \4 j
) `- B9 c% D! B& R' b3 e0 o6 w* wcall data_out* _ b" V9 m, @( E. H
# c! }. Y: {0 S* j# C) z& g# z. r: C3 Q; s* f$ E
inc mp3 c9 ]+ S0 s! B- o) M- u6 O7 e
3 \9 K% `" G+ n9 K" |sdz temp1& k# h7 U- `$ ]4 E {' ?
" C% z+ [9 k1 c5 t e' y& M9 V3 R9 ]# I* o; [4 [/ E9 F/ X2 D
jmp wr_vfd_loop
2 e+ I# d1 Z' _: f& l% [6 o. j7 j+ B, g5 w
set vfd_cs$ T* I; x4 @( V6 `, O$ h" _+ x! W2 n& w1 [, t
6 r) ]- p4 C: N' v# h; G6 d9 N) e, _: Q7 f ]$ ^6 L, u! |; C
nop6 C$ e% `4 @7 }8 J) P
: t4 |" o: i5 W6 R, B3 G/ ?' @4 m) X* a- y+ s+ {
7 w: M. z0 w+ L+ R2 T1 Dclr vfd_cs
( e4 H, x: d: p# ^. X, ]9 Z$ ]9 F# Q) t$ [3 G# V& h# H2 o6 I/ M+ V% p
mov a,10001111b ;显示控制命令字:显示开/脉冲宽度14/16! J' H, q) b& A5 Q) H7 S
4 g" v2 v% R+ z4 |! X" B
- }. ^, R+ h) N! `6 A4 ?0 ?mov data_buffer1,a/ Y' M; S& z- B C7 u- r" x+ Q& |; {! B# b
0 }+ G+ ]# A! j7 dcall data_out/ Q8 S2 w3 L7 C7 D+ _6 g- a
6 n3 x6 k7 n3 @' X- ~1 j. O' g1 R9 t; m6 B* a$ s
set vfd_cs8 V# g3 C( R# Q; W$ s& W, C5 |. t- n! D$ Y$ }, x; b" `" C
' a3 q" ^5 i8 v7 H- z
nop' s5 H2 s% Q* a- n6 H4 G; K3 A
; l& L1 M# q8 k* P& n$ n' _* E" e0 d2 q5 ?$ Y; }# }# y k6 w
ret* Z8 x, ~2 t0 h; I# ^' ?$ Y1 W1 W
0 ^+ L- t; r- X' q1 S( u/ h4 v9 j1 U3 A4 J. |, u' D0 `; ]- A8 N Q1 n. ]
;*********************************************4 Q' a1 t: @! V1 T( y0 M- N
3 d% _+ Y1 n* N- Q4 M/ W" N; T8 v/ N+ J4 W9 R0 [1 J
;读HT16512键盘数据9 ~* W z. K9 k5 F& w8 m. d! Y7 d. C5 L" V% f6 g/ _2 v
% I. L5 t' A1 N+ g) ~# N! E) m0 ~/ L+ B4 A' X
;********************************************* 8 X; c8 t; w& |# w1 [9 A+ d* p ~% L, p5 i
% S3 r- [0 @* E$ y0 [) o H9 E; y3 `4 Z4 X4 K2 b, J' ^
rd_key:/ r- H: S4 F. o% `" A$ T
9 v, i; Y" `: H! C7 }+ N5 t& O/ i; n. I8 p9 z, Z& P
clr vfd_cs_control+ t0 j* V( d2 w
8 T& u, A! n( Q5 I) r4 q5 Q! \/ y; m
- P) X: b* o' n7 }! x- Rclr vfd_cs2 Y* q. ]# ]: k- P1 X* r) y- T$ N/ I
: ^+ Q& M% _9 M' L# b! F5 f w% Q: g' b8 t/ K: x- }% s
mov a,01000000b ;数据设置命令字:正常工作/固定地址/读键盘6 y5 L1 D5 C. O- w# ~4 c* e7 v
1 l8 ~6 [ s4 h8 W, d9 [) D$ ?1 _, B6 U+ ], ]/ t- c8 k3 W$ l# O5 S( `4 f7 u/ E) [ P* U- o' x. k" \
mov data_buffer1,a5 G$ q) w# ]: E, E
4 ^* ?' x' O$ d+ P1 C M9 \+ ]: d/ y3 B) e- v" I f2 f3 k* \8 x* y
call data_out / [7 K5 O* a. x7 b( y) T
3 h3 T" k. h- S. P; q* n; ^4 v0 \
call data_in
& u( F6 C7 b( F9 u1 X6 g* F: |8 |" u2 }. H) A* E3 W
3 [* v/ O/ `& X9 l$ m3 I8 Xmov key_buffer1,a ;键值数据存储器的第一个字节给key_buffer1" \8 n. ^. w4 X# e6 H0 a/ Y
3 j2 v) h" g( J" Ncall data_in# e' y. \3 z; M! e
Z" ?# `+ Y3 I' N6 Y5 [
0 r4 R0 `& {" s mov key_buffer2,a ;键值数据存储器的第二个字节给key_buffer2% @& i, ?4 x) O* m
! d5 q! D- n; }$ U! g) c
: j8 \5 r. v- m call data_in( J7 [, @ e) f8 ]6 h
! ^) x$ ?& l7 M, U3 x4 q4 h! @6 y/ L! H9 G9 p: Z( c2 N
mov key_buffer3,a ;键值数据存储器的第三个字节给key_buffer3
$ h3 c$ ?0 ]8 K- C7 Q0 D" F% j8 e4 I8 j G6 A7 n3 |: i) O# G
set vfd_cs9 h [3 e7 u/ ~! I% n
, K1 `/ o, K7 {% I ret1 I4 ~6 r+ y$ F8 D: V3 A7 H
; v# h: Q$ Q1 \, h' K8 p9 t, F) K) p
;*********************************************
; }9 Q$ p# [. Y( H$ {" d
5 a) J2 U) N: J;数据输出4 o- {4 G# K2 j+ K" h; d
! j! K4 b2 U! E f( @5 D;*********************************************
6 I/ c3 L; U0 q8 Q2 ]3 h$ _6 p' I4 v% V0 D! R
$ o0 w) O T; Y) j' f/ Vdata_out:2 V- [$ i: s. e8 K& Z" y0 K
; l% C1 @9 N5 ?8 `" k) {
. \' E# [# c7 ]! F clr vfd_clk_control8 l3 o* {3 M0 Z8 ]- `+ W: B+ I0 [
' L8 ^$ I% r7 D4 h a) y9 U D
( A% j+ Y0 D: S( Q9 B+ E clr vfd_dout_control0 n/ {' _" @/ S- |8 g3 L& j
; |( r; ?6 V# H( i" i
0 n7 z! C4 _" B& X( U/ ` set vfd_dout# D7 w' l, g- ~6 F
4 b0 H5 W% ^/ P) `( y5 r- \
9 c% x+ u+ Y# e6 i3 D mov a,8 ;传送一个字节9 p0 [2 L3 {2 o8 C- X8 J7 q; E8 ?$ i! d$ ?
( |9 u9 H0 T2 i, r T* J
# @+ @ F: l+ W" A6 |data_out_loop:5 i! I' c6 w4 @' @' D. |( s( z* j3 G/ f+ H! T
0 c9 V# w, J5 O
clr vfd_clk/ |" w; W6 n' J# `: |0 S2 I$ a& A" _& z, P- ]
f% \! O. w. y$ {( T8 y rrc data_buffer1& ~8 P9 _- _6 l. b: c I, G! L/ k) c0 g
! D4 T/ X) y% I! t) L0 ~
$ Q" l. P5 k5 p snz c/ c: s) Q R4 D4 L
4 D4 N( W! O$ g |
|