|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
74HC595驱动控制LED 原理图和单片机代码 " F) c9 r' W( m! X n. D- Y1 j
5 d1 J4 g# J" i8 t' z5 O& e% P" L) a4 A( E, p
51单片机做的74HC595驱动控制LED0 @) C0 O, J. b1 M' i' X
. u9 ?) f$ N# ^. c* O) W y$ [( a" V; j
单片机代码如下:& l" k: N3 l% L! x: v
#include
2 T7 c1 A7 |5 a% f, _% w4 q ?#include
8 \0 V \- k6 S% v
, A- t% U4 J: R( z7 W/ w# Q6 Y: _8 f& A5 w& O4 t$ W5 Z' d
sbit SRCLK=P3^6;
! @( i" W' z% rsbit RCLK=P3^5;
! m0 A) m/ m" j+ wsbit SER=P3^4;
7 A) D! B+ t$ d5 {& w/ mvoid Hc595SendByte(unsigned char dat);
1 i# F/ t `, I5 L' q L% {( a4 hvoid Delay10ms(unsigned int ) ;/ |0 w0 D: ?+ j% B' b
void main()
, m! P, N. l/ M9 z" S3 R @0 y{
6 s) ]" b% s/ A' G4 i# B0 H# _ unsigned char ledNum;
; C4 h! G/ [8 Y1 B* B4 M8 t0 D6 { ledNum=0xfe;
; k9 c% M" [8 F, L. H% ~ while(1)6 I9 r( Z3 N* z% D. e' ]3 Z
{8 ~9 U1 S: R% g: e
Hc595SendByte(ledNum);; d. L4 B/ r8 @5 Y* m; C
ledNum=_cror_(ledNum,1);' O6 _, u5 t7 E/ F( w
Delay10ms(50);
* \$ D3 t( O9 u- o% ` } - e0 u6 q4 i. ~; K
}' D6 c+ d9 s1 n; R5 ~: P, M
/*******************************************************************************! I4 H9 @5 Q0 I
* 函数名 : Hc595SendByte(unsigned char dat)
7 a% e& i3 [ |4 L; z* 函数功能 : 想74H595发送一个字节的数据3 y3 \" g( F4 D" D/ P
* 输入 : 无
# }& J5 d* l# w4 V2 i0 I0 J. b* 输出 : 无" x% S# k' j, |0 ~
*******************************************************************************/8 I! F' i1 T- Z: J, ], Z4 W. F
void Hc595SendByte(unsigned char dat)
; i7 t: N* S f5 @# T{: o" _6 j/ w, z
unsigned char a;6 L7 G4 O4 g, |2 e }8 b! u
SRCLK=0;
5 Q2 U6 T. c& b6 ]) I RCLK=0;
- h5 a6 T- H* E9 w% ^, @( P for(a=0;a<8;a++), T% D; Z1 O+ {) ]- ^' D
{
; e+ u/ U) i9 C, I5 [: V) R9 b SER=dat>>7;4 I4 B% m# q7 q0 b2 d
dat<<=1;
, d! S8 U# B) L/ ~
7 H' B8 C* L& y, Q* d; U" ]; `2 |" A( r+ a7 B
SRCLK=1;
/ l+ W* J. ~$ l, {8 F, k _nop_();7 o3 R. X" R# Y, t8 p
_nop_();
0 x: @: z* s3 X+ @* Z, l- y SRCLK=0; * W# F1 n; ?8 v' z
}
+ V" p# I( @! r9 I. Y
" u9 C+ Y& _; w% {+ Y0 _" u6 E
1 B" H8 C" h& B7 D# r RCLK=1;) Y3 Q+ i0 H( \ V3 S6 X8 @
_nop_();8 T0 N2 `8 i1 |# M7 i0 @
_nop_();
$ J* w8 r4 G& \ D7 y' m6 W. V RCLK=0;
, x: {+ ^6 ^9 u}
. |" ]3 N$ w$ B. f: @8 F/*******************************************************************************% \7 }* u- f8 t2 C% Q% Z
* 函数名 : Delay10ms
7 ^* x1 C% r7 ]- Z/ W" L2 t* 函数功能 : 延时函数,延时10ms
) l/ v0 D' q: w9 w* 输入 : c
* J, p, E3 F% e7 t# H& N1 e- _$ X* 输出 : 无- i$ C; H: W- ?& ~
*******************************************************************************/
7 a, _ X, P7 W8 D" tvoid Delay10ms(unsigned int c) //误差 0us! o8 N; q! t6 ?5 I* a% P$ v
{
/ g& N9 i# \8 H0 e' d unsigned char a,b;/ n7 M1 o/ d) u3 h; y, a5 v
for(;c>0;c--); J5 m7 n5 g# w0 W
for(b=38;b>0;b--)% V, ]- r5 D! s
for(a=130;a>0;a--);( Q( S8 N0 K8 H* t1 u) @5 m
}
! d7 B% W7 c$ O$ J" Y! a, A- a3 @4 ?' \3 S" x$ r. v
g3 W* T- s. p2 S. h% z4 r0 P
下载:
1 T: m# A9 I4 L2 Q: Z. p, Z( u9 k6 h- G
4 d8 Y( ~. ]( S- v, T2 b
|
|