|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用74HC595显示多个数码管
$ g9 _% c2 m0 I9 s/ H; S K9 z6 e/ P3 E: l3 |
5 v6 h4 @, i$ h#include <reg52.h>
" Y- @1 ]' F# B( v4 o( A0 y( @#include <intrins.h>
7 ~% c' i; M: f# `#define uint unsigned int
- |+ N$ ?) Z8 W* `7 s- B#define uchar unsigned char4 u7 D+ l4 z! P: a$ T8 I
sbit ClOCK = P2^0; //HC595第11脚,串行时钟输入端
$ b/ Y9 K0 q$ m& ]sbit DATA = P2^1; //HC595第14脚,串行数据输入端
A. U7 V# F% lsbit LATCH = P2^2; //HC595第12脚,输出锁存脉冲输入端# e) u* L+ U# G4 K
8 Q/ g6 c6 @" x2 K# A! j$ p//定义共阴数码管段码0-9
]' v' O) V9 L: y, c. Yuchar code segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};! f. o# F) _2 E' G+ D. x
3 u- ^: | C5 N' ]//串行输出一个字节$ l5 b+ J* s9 e! N4 G# f1 j
void HC595(uchar word)
; A% A+ S: Q. ~( W- f/ }{, B+ i/ V8 F; H+ E+ b$ c# \4 b9 O4 Q3 K3 w9 |
uchar i;
- `' @, F4 v/ S5 b: _ for (i=8;i>0;i--)
! n4 H5 u, b D) @# d {
- ?# n- Z4 m \ ClOCK=0;
$ I8 r5 x0 M' p0 x/ U6 X" A DATA=0x80&word;: |6 e3 E+ k/ n/ b' Z4 }
word=_crol_(word,1);% \. _% g, V& X0 ?* k$ ]( u8 s) ^" Z) u
ClOCK=1;
$ Y3 c' O: o7 l( a _nop_();! w0 ]' G+ M. ~: @
}5 a/ N+ W1 ?: L: I5 d
}" U9 M7 A( x) i6 [- _% X
1 l9 O y* f5 R) \
) q: S% B; U2 A- ~: Y" `& n tvoid display(uchar S1, uchar S2, uchar S3, uchar S4, uchar S5, uchar S6)
6 O/ y6 ^; w% K& @{. z9 F) e7 l& n' h5 V
HC595(segment[S6]);9 |! r3 X4 R( s6 J0 X1 O
HC595(segment[S5]);" S Z* }& _. X% Y9 b) n
HC595(segment[S4]);; P8 u7 Y8 t0 }
HC595(segment[S3]);
% a: d, X- z, |* t HC595(segment[S2]); s3 b& z* m2 c
HC595(segment[S1]);
$ V9 H/ l8 i4 E2 I/ L7 A LATCH=1;8 _- V, z4 V# q3 v# l6 h# B- @# r
_nop_();
5 F3 P" G) Y+ I8 H) n; `+ s! t LATCH=0;+ |5 |: ^6 n! k2 p( @
}* l0 b, s- L" H9 v0 r$ k4 g
void main()
+ r+ N' Y6 I M" A. E. u8 W{
9 J) Y" w& A- ]; h! D; P1 H LATCH = 0;
) t3 f, t6 E5 t' B5 `5 S N C while(1)
D9 |9 t" i ] r! j, r* \; D- } display(2, 0, 1, 3, 1, 4);
2 m5 q/ P* }& y r4 t}
8 ^ E0 j" C* I( Q/ W4 _; k4 D3 w5 d* U7 B
& C$ _5 Q+ v" U( w) g" n
|
|