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 FLP: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                         ;显缓区地址加16 _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" QDISP: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,  A2 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          RET4 K& d8 m8 p9 y
DEL:  MOV R7, #02H     ;延时1ms  (fosc=12MHz)
0 |8 w, Z$ D4 t3 _4 VDL:   MOV     R6?,#0F8H2 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          RET2 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