| 
 | 
	
    
 
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
利用74HC595显示多个数码管1 w7 I. U9 P2 P( B& @) F8 f 
 
, d( g+ \% g7 M) k' A% } 
$ H8 X  Y- y, r$ E5 H#include <reg52.h> 
' B. {* I3 }2 B6 O% P6 m9 X, @& i& d#include <intrins.h>4 i& S! U  X. `" J" ~# X" p: e) s- a 
#define uint unsigned int' g! l8 F! G0 I" T4 r 
#define uchar unsigned char 
: T/ I5 B3 Q" d$ Ssbit ClOCK = P2^0;        //HC595第11脚,串行时钟输入端 
# @  t( ~2 L: d3 gsbit DATA  = P2^1;        //HC595第14脚,串行数据输入端 
/ o: ?" Y3 \8 v3 K- ^/ ^# }: Msbit LATCH = P2^2;        //HC595第12脚,输出锁存脉冲输入端' z* |  q: T, X! a  }. Q% l! t) { 
 
0 |; x# ?, W+ ]; R6 W8 N  ?/ T- B//定义共阴数码管段码0-9 
- p% J3 V6 d! [; L' Ouchar code segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F}; 
4 T: {" Q7 l: l 
7 ], A9 o) z! h//串行输出一个字节 
* _/ d3 H9 m& F" W5 lvoid HC595(uchar word)- D* X% z4 F9 A3 ` 
{ 
& i# \, k0 a/ ?7 l( W    uchar i;4 x. D, e) t$ ?# v3 [0 G; u% z- O5 p 
    for (i=8;i>0;i--) 
- ?2 X# j4 x  j. r( K% ^8 b    { 
6 Y* @, w! V, b; M& w$ `, e3 ]        ClOCK=0;# d2 @  M5 Y' \  I1 G! `/ G9 k% D 
        DATA=0x80&word; 
7 ?2 a% X! Q7 v8 Z        word=_crol_(word,1);" W2 [. }7 [7 X 
        ClOCK=1; 
/ T' Q; X' z. K        _nop_();; r2 c9 s: o. ^; P) q) s+ V* C 
    }9 y5 n/ v- |7 `1 {/ K 
} 
$ j6 f0 U) n; p: {0 Z 
6 x6 v; ^8 a3 a4 o0 I1 }0 S1 I( P, p6 Z4 ]- F3 `/ y 
void display(uchar S1, uchar S2, uchar S3, uchar S4, uchar S5, uchar S6): K. b# B9 m; X2 h 
{& m* T' `+ L7 ^5 X, E 
        HC595(segment[S6]); 
* Z' y' J* D1 v# m* b        HC595(segment[S5]); 
. a( M3 U1 `: b( j0 D# c3 @        HC595(segment[S4]);9 I% n. X" S/ a  B 
        HC595(segment[S3]);& Y$ _( {6 M/ V; n; _: h 
        HC595(segment[S2]);2 R. h# g" N5 q; b4 V2 n 
        HC595(segment[S1]); 
. `! U8 B3 u, q4 E  I/ z3 \3 [. [        LATCH=1; 
4 E0 B. z- e' u# j$ r5 P. \  l; \, [    _nop_();# M0 `. |6 J2 u" S+ A5 e 
        LATCH=0; 
" ?* F5 r; J- Z8 j3 n/ b} 
' ~+ O' i4 n# K/ fvoid main(). w- l1 d! v3 u" {# M, H 
{+ p5 d$ T4 i1 }- z2 s6 b8 g: _ 
    LATCH = 0;7 o$ L' w0 x0 P4 ?2 Z$ \ 
        while(1) 
# T* F7 J$ K$ B  D1 E  |2 O                display(2, 0, 1, 3, 1, 4); 
. K9 n0 s3 D9 k3 z9 c( T& n}9 t  w% h8 |1 X/ C' q' }6 F 
% O, Q4 k7 y2 d2 Y2 c: q& Q 
% a: _$ K: m" L" A 
 |   
 
 
 
 |