|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用74HC595显示多个数码管, r7 ^1 g' ?- {7 z# R+ Q
9 I/ \0 ]8 U" _7 M0 k2 V- `' Z
. y& ^1 J- z: x2 w" r) z#include <reg52.h>0 Q6 f# `/ a, P; P
#include <intrins.h># j) i( M$ H, N) i. t
#define uint unsigned int l1 f7 @; @6 E, p2 c% K0 O
#define uchar unsigned char- v( W% {% B% S$ D
sbit ClOCK = P2^0; //HC595第11脚,串行时钟输入端- @6 k) P8 v( S( Q' E
sbit DATA = P2^1; //HC595第14脚,串行数据输入端. D3 w0 G, `- n2 K6 ?
sbit LATCH = P2^2; //HC595第12脚,输出锁存脉冲输入端8 b6 f. H" v! Z
0 c$ p# F7 r. E4 t: h5 {//定义共阴数码管段码0-92 K7 H: `3 I* Z
uchar code segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};$ @- S c8 o1 n0 t
; c: _8 v" _+ y! H% ^( g
//串行输出一个字节
5 g7 B% P' d2 P+ Gvoid HC595(uchar word)7 `" M: K* |8 Y7 A: n* T
{/ M% `1 S3 S8 P. g N5 l" N
uchar i;1 _7 d' h @. q3 W) L
for (i=8;i>0;i--)
- \1 q" E$ q d' U1 I {9 [% H( c: A4 L9 m. R" J
ClOCK=0;& j7 i3 ?) a: c" l# z" J
DATA=0x80&word;0 A1 Z/ `2 {; o8 t$ ?4 k" h
word=_crol_(word,1); T$ v# }& m; n' P, `; k& N' t% F' L
ClOCK=1;% C k) t- R) X) I* E0 Q
_nop_();
p8 D3 u8 U! g$ l4 k. o% U }; ]9 o6 e4 G1 d6 | L
}9 @8 {% g, e R6 t0 U5 k9 z( I( k
( e: b; Y& I( ?. T' M' F4 m0 `4 q
8 i4 [4 ]+ V0 `void display(uchar S1, uchar S2, uchar S3, uchar S4, uchar S5, uchar S6)
; e+ F' q5 L. P' n' |7 p{6 I2 N8 y1 r; y( u
HC595(segment[S6]);# z$ \' D4 Z- w( e1 L& i
HC595(segment[S5]);# f$ a, G; X1 p0 s, _
HC595(segment[S4]);
1 [9 E* C9 O# O HC595(segment[S3]);
0 ]6 m7 {+ J9 U* ?; W( @ HC595(segment[S2]);
: y$ J8 U% t; w {$ X1 r7 T5 J HC595(segment[S1]);
7 s2 Z0 S- s! b: y; [# M% U LATCH=1;
6 ?# Q. K! s! s4 ]% P _nop_();
) a& d0 p' o- Y P( S' \- M LATCH=0;
0 r, H, y$ h0 q5 @1 e4 E; D}6 l: ~, k7 Y# q8 @5 F$ t; D! f
void main()
/ O7 d5 i( q0 `, t{# x8 v! y' m- @. y8 B8 A$ C9 i( h5 L
LATCH = 0;
5 i7 u9 M& G$ o9 |6 `0 c while(1)
( v$ B# Y3 U A T, @ display(2, 0, 1, 3, 1, 4);& p3 i8 D9 `8 b
}3 ^) W. M- A& M! Y
2 [1 d' ~+ p) o/ r0 O: k( \; `& J7 u; L O
|
|