EDA365电子工程师网
标题:
移位寄存器的串行扩展技术CD4094在单片机系统显示中的应用
[打印本页]
作者:
wzs6668
时间:
2016-8-15 14:54
标题:
移位寄存器的串行扩展技术CD4094在单片机系统显示中的应用
编者按:移位寄存器的串行扩展技术是单片机串行口扩展的一种常用方法。对于MCS-51系列单片机而言,将串口置为工作方式0,串口便工作在移位寄存器方式下了。此时,单片机的RXD口作串行数据的发送/接收口,TXD口作移位脉冲输出口。利用单片机串口的这一特性,可以十分方便地扩展I/O口线,本文便是一例。通过本例,读者除了可以加深对串口工作方式0的理解外,还可以举一反三,将之用于其他需要进行I/O口扩展的场合,比如用串口扩展键盘等。
; C! K, e2 M) J" L
遥控数码报时闹钟
5 ^9 {; z5 r* i' c+ L+ f" @7 f
CD4094是带输出锁存和三态控制的串入/并出高速转换器,具有使用简单、功耗低、驱动能力强和控制灵活等优点。
3 R' ^" u; P$ g( U: E
CD4094的引脚定义如图1。其中{1}脚为锁存端,{2}脚为串行数据输入端,{3}脚为串行时钟端。{1}脚为高电平时,8位并行输出口Q1~Q8在时钟的上升沿随串行输入而变化;{1}脚为低电平时,输出锁定。利用锁存端可方便地进行片选和级联输出控制。{15}脚为并行输出状态控制端,{15}脚为低电平时,并行输出端处在高阻状态,在用CD4094作显示输出时,可使显示数码闪烁。{9}脚QS、{10}脚Q′S是串行数据输出端,用于级联。QS端在第9个串行时钟的上升沿开始输出,Q′S端在第9个串行时钟的下降沿开始输出。
& I, k, i. b. g0 N! W
当CD4094电源为5 V时,输出电流大于3.2mA,灌电流为1 mA。串行时钟频率可达2.5MHz。
- M2 T1 y* q @' F
1. CD4094作静态LED显示驱动器
: w5 }' E% ]! _; ]( y
图2为用CD4094作驱动器的三位数码管静态显示电路略图。单片机串口工作在方式0,即移位寄存器方式。输出数据首先送到IC1,第二次输出的数据移至IC1时,先前输出数据则移到IC2,依此类推。输出三次后,在IC1、IC2、IC3的Q1~Q8口分别得到数据3、数据2、数据1。
5 H4 k* ^ N: {9 J! e- ~! ?
程序如下:(DISP为显示子程序)
# B) c8 [& h0 k2 w
..................
2 c: `" q3 E* ~/ M, }# h
MOV SCON,#00H ;置串口为方式0
/ t. W% t7 v. V; \$ O& N
..................
0 C6 L: F9 ]7 U5 e
DISP: CLR P3.7 ;输出锁存
6 L1 f$ P. r; N+ y) m+ J
MOV R0,#33H ;显示值送33H、34H、35H
% F+ P# u/ A$ p6 J, C: A
MOV R7,#03H ;置数码管个数3
6 [% ~& ?, v s8 [3 F
LP:MOV A,@R0
1 x8 B$ ~; q4 d3 C; H) {% `
MOV DPTR,#TAB ;置字段码表首址
% ?. o5 ]7 V; y; o
MOVC A,@A+DPTR ;查字段码表
, D7 N( c$ m0 m( A N
MOV SBUF,A ;送字段码
2 c6 g$ |/ _9 o3 U' [- ~! u; h3 U
JNB TI,$ ;等待传送结束
& V& N/ E% z- E s4 M
CLR TI ;清串行中断标志
' Q$ w! c+ c0 n) r a
INC R0 ;显缓区地址加1
6 _7 Y6 C1 s( a
DJNZ R7,LP ;显示数码是否取完?
( C2 i" C8 M/ V: G
SETB P3.7 ;允许输出显示
4 j1 j4 W2 G2 s# u$ K
NOP
( q2 ~9 x" ^% B
CLR P3.7 ;输出锁存
9 C/ w8 ]: M1 c0 B& R
RET
9 }+ D/ |7 a* V% J
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
4 e, S' x; ^. s: |/ T
DB 6FH,00H
: l, J1 U a4 @# O
说明:在串行口不作为其他使用,且显示的更新速度很低时,STROBE端可以始终接高;也可将P3.7口接到CD4094的{15}脚,从P3.7口输出一定频率的脉冲,使显示闪烁。
3 g+ U2 g0 u3 N6 l6 _) g
2. CD4094作LED动态显示驱动器
% O5 ?; u) {) x' ^
用一片CD4094作段驱动,一片CD4094作位驱动,驱动8位带小数点的数码管(见图3)。
6 a. a/ }/ N; _7 {8 l0 H4 `& ~
程序如下:(DISP为显示子程序)
8 m* Z( H9 Y) B/ Y( }% g
MOV SCON?#00H ;置串口为方式0
4 S2 X4 |; p3 c# d
……
3 h2 Q, g. e" ]4 s6 K0 Y" Q
DISP:CLR P3.7 ;输出锁存
( F/ L _( g5 |9 n' J
MOV R0, #30H ;显缓区首址送R0
F, H3 ]1 n; s `3 \
MOV R4, #08H ;置数码管个数为8
/ U' O: a3 o- ?5 E% B5 ?& q3 a
MOV R5, #0FEH ;送位码初值
; Y6 f1 [0 O# n8 d* b7 z+ D- p/ j
LP: MOV A, R5 ;取位码
1 h% Y/ }2 }# J. z# Y
MOV SBUF, A ;送位码
4 D3 ~' _8 _2 l8 U" j- ~) s# l
JNB T1 ;等待传送结束
' L. i7 B6 @2 e/ d/ b" U
CLR T1 ;清串行中断标志
. _( e G( {) Z! x7 a' f
MOV A?, @R0 ;取段码
" ?, U4 }8 C! Q; V* k( c
MOV DPTR, #TAB ;置段码表首址
( }& H3 Q: ?. k4 _$ x% U
MOVC A, @A+DPTR ;查段码表
8 E6 M. R9 ?' z4 g
MOV SBUF?,A ;送段码
( |6 ?3 s7 l( f: l' a' d( ~
JNB T1 ;等待传送结束
3 @) @0 o$ P5 A. o- Y
CLR T1 ;清串行中断标志
$ N1 j* D6 W% j( x
STB P3.7 ;允许输出显示
9 d0 A, O4 I' x
LCALL DEL ;延时1ms
: ~) F3 c+ X) e6 E
MOV A, R5 ;取位码
: V- @ X; M) ~3 j. w A
RL A ;位码左移一位
e' K4 F# [: q) e( E+ ]7 @
MOV R5, A
2 Y& L# j" ^) M
INC R0 ;显缓区地址加1
: @& A1 S7 S7 \2 Y' X
CLR P3.7 ;输出锁存
, x6 O% H: k* }) `
DJNZ R4, LP ;8位显示完否?
; u r, w4 `7 p4 S; G5 h
RET
4 K& d8 m8 p9 y
DEL: MOV R7, #02H ;延时1ms (fosc=12MHz)
0 |8 w, Z$ D4 t3 _4 V
DL: MOV R6?,#0F8H
2 N# x( ? T7 @8 l2 b
DJNZ R6, $
( ` n$ E1 _# c* s/ E6 l! s3 _# c2 \
DJNZ R7, DL
" e/ d4 j c4 C' J, S
RET
2 N- _4 D7 Q, @
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
, T2 s7 s3 U C& X. H( l. b4 h
DB 7FH,6FH
作者:
helendcany
时间:
2016-8-16 09:31
路过捧场,谢谢分享!
" V9 [# A: j+ @+ `
欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/)
Powered by Discuz! X3.2