|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
74HC595驱动控制LED 原理图和单片机代码
1 O2 W' ^3 d/ b2 j5 H+ b1 D9 ] g v# m& g7 y: ^; k. V( ]
; W2 Q4 t. t( Q7 Q
51单片机做的74HC595驱动控制LED
1 ^0 g( F" {# P& A, n4 u' f
0 G0 N9 ]. n0 ^ X; c: c! ~* z; x+ |5 K4 U( e' e
单片机代码如下:& h) X% y& W+ ?( U1 `: j
#include! n. Q; c4 }& h, _; a l
#include
/ v1 o: N: |% g6 h, O/ [ m4 a" B- b3 x2 E: F, X0 s6 E
t3 L: q! c8 y7 D& y4 d& Tsbit SRCLK=P3^6;
! B) n3 s3 o1 u2 T: A0 ~sbit RCLK=P3^5;
* n0 @. c2 E0 L2 @# O; y& `sbit SER=P3^4;
7 P2 g$ {# @ T. i9 k1 @2 ]- }void Hc595SendByte(unsigned char dat);
6 s; y8 n! J0 U( J+ _void Delay10ms(unsigned int ) ;% k; s g- r1 p$ k% x7 \
void main()
7 B4 F3 E' e, y- X: H- I. l* x{
' n8 K: N! F8 S. A5 D( ] unsigned char ledNum;
* M; ^0 y" [9 F/ { ledNum=0xfe;( y9 v) o) Z8 @5 z7 c% Q
while(1)
% F" I/ Q4 \4 P, a8 r& L- r {$ Q: X) x9 O' ^7 q" N& }
Hc595SendByte(ledNum); Z V7 i+ M7 |+ E+ h$ x7 X/ c
ledNum=_cror_(ledNum,1);1 j: A# c9 F- _0 `) k. \. n
Delay10ms(50);
0 H3 ~! N1 y, K. M9 q. [ } 9 L+ Z5 M& e* A& ?3 U, y
}
* Q. o1 h& e) q4 ~7 d. j5 F* U/*******************************************************************************
$ q2 D* f" n) R8 J/ n* 函数名 : Hc595SendByte(unsigned char dat)
9 [/ v' N, \6 e; R+ O* 函数功能 : 想74H595发送一个字节的数据
, E4 Q# Q* A4 ~9 w/ {% T, u* 输入 : 无
5 r* T3 F- Q% G: c* 输出 : 无
! H# w. S0 Q0 M- `% E% ^*******************************************************************************/
' m) @1 y. ?! f$ T; F7 ?void Hc595SendByte(unsigned char dat)5 v6 c; [8 R* l
{
4 @( H: l2 T6 Q4 e6 q1 q unsigned char a;
" R5 j) Q m9 @ SRCLK=0;
t3 ]6 ^3 M& a RCLK=0;2 |5 m3 L+ x( B! r. D
for(a=0;a<8;a++)
* d4 p' h: D( g4 x( C {
# Q1 C& N4 l% Q" [- [, _% S: E SER=dat>>7;
3 A" m* K( o/ b3 D# | dat<<=1;; M, M( E9 i" D' [1 _
5 ~& \! K+ p1 x6 q
8 x7 d/ p6 M, {# L% J SRCLK=1;( v2 ~/ R9 L6 Q
_nop_();
& A, ~9 C) R& n" x8 y _nop_();/ V* s; j9 L: [" I Y: p* n; W6 @
SRCLK=0;
: _* n" h4 e! }* V9 s6 z }
- c. w, R7 T+ ^% C8 r9 L8 M" u# n" e. {. v- `
( |& n; T6 B G, x4 i
RCLK=1;3 i! r* I! K# j% L2 _6 \
_nop_();
" K; L( ~0 Y! }( G( J6 B _nop_();
! Q, f5 B1 P; o. P/ K RCLK=0;
% d! O9 z( {3 Y Y- V( g8 k" P}- S% M6 O& I! r! b2 K
/*******************************************************************************9 B; U U* f3 J+ i, N
* 函数名 : Delay10ms4 O; h4 Z7 N/ t" A
* 函数功能 : 延时函数,延时10ms
& n6 D, U9 S J9 t9 p* 输入 : c
7 P0 w7 E9 G' V" R8 _. ]3 ]* 输出 : 无
; j* A6 j/ s( }# k*******************************************************************************/( N/ S6 _" l: s0 O" z
void Delay10ms(unsigned int c) //误差 0us
) L6 a1 k% |' P{
8 |! d0 }/ ^7 m' H9 p* a+ z& b unsigned char a,b; y9 s' O2 h- H& G# q. N3 O) i
for(;c>0;c--)
/ s, D/ c' @ E" l. q for(b=38;b>0;b--)* q+ ?0 L6 r3 s8 L9 y# w
for(a=130;a>0;a--);
& W$ Q2 ^( Z' t0 x: H; S# u}
9 f+ S" q5 E) V. A: n8 I) a
1 C) s2 V0 F* X' H0 ?9 v- K' ` K, N5 C$ D) G- S8 X
下载:: h& y d, U" t5 N) v- W1 b2 b" K
6 Z1 ^/ b" {. s: U
( E" Z4 Q' m. M G3 k) G |
|