|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用74HC595显示多个数码管) X* b6 M' ^& U* ]
7 e0 ~8 R9 |. n( b* T& T& S
1 U+ Y, E) k, Z. @8 q7 S#include <reg52.h>
I* x; o- w3 \# n% p#include <intrins.h> L/ t1 v8 R: d+ [6 W' T& _9 K C
#define uint unsigned int" Y$ R% ~+ P- K+ @$ I0 D- j
#define uchar unsigned char
1 x2 U# C3 f ~sbit ClOCK = P2^0; //HC595第11脚,串行时钟输入端
; |$ z/ @. V2 z2 _sbit DATA = P2^1; //HC595第14脚,串行数据输入端
% x2 @2 t: D& n- j! I% \9 p# a0 csbit LATCH = P2^2; //HC595第12脚,输出锁存脉冲输入端
. S9 v9 j: X% o4 a5 q3 `6 w- |$ l5 u/ V8 }- S3 V
//定义共阴数码管段码0-9
w0 l* P+ |) yuchar code segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};' f( P" {# p: Y4 e- A. ^
! Z( `0 f2 z0 H6 b% ?7 R//串行输出一个字节- X3 C l% y8 o8 q6 D
void HC595(uchar word)" {9 d4 T x# G$ W
{0 T4 _: G: t& R1 c) ~7 t. \7 S
uchar i;
* `. U6 l! r6 O: Z8 j8 ]( G for (i=8;i>0;i--)
9 n: d: ^- {$ D) L+ P {5 `0 r5 y) b0 m3 p3 @( w v
ClOCK=0;
& q% x" v; O% B& w DATA=0x80&word;- d8 N0 `- n- h4 B
word=_crol_(word,1);& `8 M- `& m0 Q, v
ClOCK=1;0 C: X8 i3 B6 p7 G+ ]
_nop_();/ `+ O. j/ T4 C' v; b% D% W
}
/ T7 r) }& H5 H$ f( U" ]}. G/ g+ \6 ?9 j: l; O, w
u: V& e* |9 L% r
& _3 y1 E) v- Y- vvoid display(uchar S1, uchar S2, uchar S3, uchar S4, uchar S5, uchar S6)& m1 o% ^# c1 y7 V( e! k6 W
{' d2 T4 Z5 G7 J5 Q9 k9 O) w
HC595(segment[S6]);
5 X- I6 t( o8 P HC595(segment[S5]);
7 t8 @6 i6 ^! X HC595(segment[S4]);
: W. x# F: g8 |$ Q: h" n HC595(segment[S3]);8 r' `( f( M' K
HC595(segment[S2]);3 R2 {6 c, q- |; ]: J
HC595(segment[S1]);
$ N/ ]4 t. o- ^. X$ f4 e LATCH=1;
9 K7 b5 `9 P* f+ {: I _nop_();
* e2 P1 N1 s# Q9 q. ? LATCH=0;; a" K1 \8 G: m) H+ A* E. j5 K
}! F1 R. R6 K) D& |5 W. i) Q
void main()
4 U7 ~4 o6 X+ ?* ]" ?% o{0 W5 y, |+ N/ `- K. D9 X Q
LATCH = 0; Q# {3 i" \' @' ^9 x% N1 A
while(1)) b' n) A: d2 w! d, N
display(2, 0, 1, 3, 1, 4);' \* [+ t4 ~$ u! _6 w# N6 o; s
}9 k f$ Y: Z0 R5 @3 Y
- q5 @* w% G$ |/ x5 a3 u7 |) ]+ @
( p* B4 d5 y6 G+ y: Z( O
|
|