|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
74HC595驱动控制LED 原理图和单片机代码
- T$ r( s% H0 L }) a, N
2 G1 X0 {' U5 g/ S1 L9 u2 \1 G- ^7 x( o2 o9 _* G
51单片机做的74HC595驱动控制LED) o4 S# Z* U% p. Z2 C7 H Y
! n7 u, I. q1 {/ }: m: \2 _8 b1 W
6 h5 m8 E" \6 x# o单片机代码如下:. D+ C8 ?. c* f
#include
' p9 C! k- T6 C4 I: M( g#include
6 s9 R8 u8 {) v# d1 q/ g
2 c! x: \7 y* N6 k
$ ~* z0 ^9 _! b3 l5 D! ]! z# R7 wsbit SRCLK=P3^6;; l: I0 [ |! r
sbit RCLK=P3^5;) s; q7 I1 J! `. ^2 v& J$ i
sbit SER=P3^4;
; p2 f3 k8 j/ s( ?% B: d2 h& `& tvoid Hc595SendByte(unsigned char dat);
( x* }1 O q/ svoid Delay10ms(unsigned int ) ;1 D6 O2 \& _' a; ^. g+ X/ ]+ x
void main()
0 \4 o* E9 P1 d2 c) L- C/ N& b0 N{
P9 M% n4 o( s6 [ _/ V unsigned char ledNum;' z+ }$ n% S1 { Z3 K4 h+ n
ledNum=0xfe;
+ q0 s: c( g* U& k$ z$ X9 | while(1)! c6 i. V4 Y" o$ I+ g
{
8 w7 }2 Z1 |4 ?; Q$ _' d$ Q Hc595SendByte(ledNum);5 G1 |& o! S& X& W
ledNum=_cror_(ledNum,1);
3 @7 v3 O; }0 n) i Delay10ms(50);. N4 E+ S) l+ V# S, K; ^
} : _+ `; e9 h( ]7 m2 i o+ |+ h
}
: E# t, j' `+ I$ P" y; j/*******************************************************************************
& e# r9 I) H7 m4 O# @7 U* 函数名 : Hc595SendByte(unsigned char dat)6 T' j7 l) Y6 ^
* 函数功能 : 想74H595发送一个字节的数据* T( J8 y* K; |, h( c* e
* 输入 : 无
o; J5 L) ^+ r2 Z8 F$ N* 输出 : 无5 f- i$ ~% z" E
*******************************************************************************/0 Q3 _, C' c! y; G( v
void Hc595SendByte(unsigned char dat)
( F5 g+ L' ]9 @- U) l{
& V$ K! k1 d) o$ D unsigned char a;
( J0 h+ x8 ]* u e SRCLK=0;
% G3 D. ^' N8 H: m/ M# ]6 V/ K RCLK=0;
% G% q$ `# X/ O- ]$ @3 S( Y F for(a=0;a<8;a++)9 N0 k9 ?8 V, ~2 U: }9 |! ]
{+ D& M. \! Y( [! [
SER=dat>>7;
0 ~9 k! q2 f2 H: W# D' H dat<<=1;
/ F3 A" O2 t$ _( e% i& f" |& ~& T4 K" C" ?( w; a5 l! W
8 H* ~! k7 t# l# O9 H SRCLK=1;& s$ u- V. n9 w( F6 J
_nop_();
- k! W* Y- T7 l8 D: x- m _nop_();
$ k0 i4 M( l" K/ P/ z SRCLK=0;
- P: x: F4 N5 C7 ^4 f1 X( P }
- Y( p1 j3 S. H( [
7 e" q( E8 m, H! N! W1 g+ ~2 f- K+ o9 l" G4 N0 k1 t
RCLK=1;
( c/ _+ y: [/ h* P _nop_();4 G$ j) n* J+ ~' Q
_nop_();
c {9 L* D5 ^ RCLK=0;1 L. Q" {# `. G$ e
}
; U4 y' X7 H6 {/*******************************************************************************; E- o9 N% R! F3 \1 D
* 函数名 : Delay10ms
- U7 s+ n9 E O" K4 s8 J& l6 J: }* 函数功能 : 延时函数,延时10ms# ~+ Q$ R: x y# i! u' ?
* 输入 : c: E$ u( p5 c. Y, d
* 输出 : 无/ T0 W1 }- q( P8 s- ]# o
*******************************************************************************/: t, _4 S9 ~! \' k" P1 `
void Delay10ms(unsigned int c) //误差 0us
/ h+ u8 R9 [' B; X{
4 f4 _9 X# K ]% D, ~8 K, o+ O+ @ unsigned char a,b;
/ ~/ V3 E& q9 q( w9 }2 U for(;c>0;c--)' B Y& n, V( h( f; {
for(b=38;b>0;b--)
H+ p+ H; D+ e! [7 M% ? for(a=130;a>0;a--);1 D- V0 l; v% J0 N, Y M: Y
}
$ W6 N3 @# D* u8 A+ Z# q
/ O4 M, b: m8 E8 E7 A* U! h' r( |' E+ } X( `( ?
下载: E% Q6 ^* k! {) g
6 I8 L) }- p3 p4 c( w) b
" k! f) r0 v/ O% d |
|