|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用74HC595显示多个数码管
8 v. B8 G8 d9 h5 B6 _# x5 d* U6 Q! F; p _& A1 c
/ Z9 i- s+ T3 r2 s: h1 T* g5 g. q
#include <reg52.h>! r6 C2 V0 n! J
#include <intrins.h>
5 E) Z* e: }0 ^2 h+ C#define uint unsigned int
7 E& L4 U( X- N2 O- @3 V( N+ }#define uchar unsigned char2 v! E- }5 ^, I
sbit ClOCK = P2^0; //HC595第11脚,串行时钟输入端0 X1 c5 F/ Q% N, \7 H% @
sbit DATA = P2^1; //HC595第14脚,串行数据输入端' x: l! ?1 Q T$ O7 r9 z
sbit LATCH = P2^2; //HC595第12脚,输出锁存脉冲输入端$ H" X/ H' B% z$ y6 y0 D- ]
/ D9 y& q& h' O7 A//定义共阴数码管段码0-9$ z9 r) ?- w J; _5 }: Y0 U0 S. `
uchar code segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};! ?/ ]% J. Y( u6 w' r0 k4 y8 e
( K( q0 H" i! ~" S3 L1 ~( [) b( i
//串行输出一个字节
5 ?& G+ `1 Y' y! V+ D! Gvoid HC595(uchar word)
/ w5 i0 {- t7 m. O: U& u* ^{; Y, l5 f' O' h. G h
uchar i;
9 V z# [# h$ t for (i=8;i>0;i--)
' a+ [: M, w" {, y) E {
; @+ B& P+ k- L, d3 `& d |9 z6 l ClOCK=0;
1 U0 {- F, N8 Y& I8 G DATA=0x80&word;9 n- K9 a7 j1 [2 |# [9 k. R7 w
word=_crol_(word,1);
. l* o5 p) Q% j ClOCK=1;
' `3 n$ Q* Q7 T F% `5 c1 E _nop_();
# D- Y+ n- K; f' E* E4 g }
5 d* E( e( W% n' c; R. \6 x. b. v}$ p- n' M* Q) u8 m
7 W$ e0 Z& O, d: ~
+ Q: P; {4 u3 F& j- H9 D5 Gvoid display(uchar S1, uchar S2, uchar S3, uchar S4, uchar S5, uchar S6)' c% H1 U8 b. r: I! X1 `5 ?
{5 H W. |- W) i; m1 a2 P8 y0 Q
HC595(segment[S6]);8 @8 u5 w2 @( b/ X' ~ k
HC595(segment[S5]);
- P% f2 \$ ~: R, d; o HC595(segment[S4]);
0 h n( N5 X/ k' I9 I HC595(segment[S3]);6 U( `- ], w) c- V+ B
HC595(segment[S2]);: U1 u/ X. v( m+ u" b9 y* ~& O
HC595(segment[S1]);! w- W9 F d3 Z* W6 ^' ^. V7 u
LATCH=1;/ o. E v8 k, J" G. |
_nop_();
; c+ K# b" A0 P5 h LATCH=0;
4 Q4 X' D# B- [- E( _+ E- Q' t}3 l3 G! I. E- R0 C" i4 K& L( i# _( L
void main()
1 m, \! _ K& C. J2 B% c{
]. k7 F: [# Y+ X+ U1 Q! l! C/ M LATCH = 0;; M# H6 N0 L3 T7 S& Q
while(1)
8 [6 `# |- R. C! [ display(2, 0, 1, 3, 1, 4); f, p/ M h8 e
}
9 s0 g3 F% O! H$ b, m8 J) y1 K$ G. K8 b2 [# G6 c6 Z2 ^, I/ [
1 X/ V+ I. Z& o' G |
|