|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/* 名称:74HC595串入并出芯片应用
. s$ L* F8 D1 ~5 e; r3 w7 z 说明:74HC595是具有一个8位串入并出的移位寄存器和一个8位输出寄存器, q0 }) _: }1 o
本例利用74HC595,通过串行输入数据来控制数码管的显示。
s3 F& K) B! \: ]$ k*/
# Z; a3 F. P1 ~2 v#include<reg51.h>* k8 ~( M2 ^) c- p( M2 D c
#include<intrins.h>
1 M" s7 d# P/ y1 y7 ?#define uchar unsigned char
1 h8 Q# O% X- Z0 h3 c+ G: r#define uint unsigned int1 w3 j/ ~) P8 o9 ]. a
sbit SH_CP=P2^0; //移位时钟脉冲! D3 c9 s" @9 [# W& T: s
sbit DS=P2^1; //串行数据输入5 \; h8 f7 Z [' s4 L9 `
sbit ST_CP=P2^2; //输出锁存器控制脉冲; @ @( _0 l; _0 I
uchar temp;% x7 w" @ [$ l) L0 ~, y5 D
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
6 C# y8 K4 @0 r; R+ e4 V7 ^//延时
( B2 Y; o0 K& J- |. V9 K4 avoid DelayMS(uint ms)# B+ }2 r5 @" h6 M! t# J$ x
{
1 Q( {. D9 O) x$ h+ ? uchar i;5 b1 {! W. J) {, g% U2 ~1 Z
while(ms--) for(i=0;i<120;i++);' v) J4 Z# a$ ?# c$ p4 W- k7 E
}' W- K) \( A# ~ n9 i' ]+ D
//串行输入子程序
3 U/ e3 n3 X0 ^: c% Avoid In_595()7 v7 Y3 g1 H7 ], T: ~0 G0 y( _
{- s! g1 `; v3 x7 {, a
uchar i; m8 @- B6 S6 q) L, c2 T$ \% ?* E
for(i=0;i<8;i++)" P) t, m8 z2 ~: M) K1 X9 e
{0 d/ S D; e2 T8 F
temp<<=1;DS=CY;
7 o5 K$ o' Z( D9 g4 @ SH_CP=1; //移位时钟脉冲上升沿移位
& Q$ b" ` D# s \3 f _nop_();_nop_();" q1 l/ s% D- j( g
SH_CP=0;
9 c; x. Q+ o' p1 f% |8 V* y! k }" w2 ?# x2 j8 E$ G
}
6 P- K1 d$ e* E1 t! P: H//并行输出子程序- y" }! H4 E8 _( J: W% y
void Out_595()# Y% v, |, C& d7 a3 q$ e% S
{
, Z$ ?9 p" B2 J9 E ST_CP=0;_nop_(); \! z: M' Q8 c
ST_CP=1; //上升沿将数据送到输出锁存器! G) Y3 y* C9 {$ \: T' e: |4 }
_nop_();# N; a: b2 B- z5 r* |& H
ST_CP=0; //锁存显示数据$ W1 b) E" |) m+ e# r4 e$ k
}+ F: d8 _: S) T- W8 @
//主程序( H; s, L. G/ C6 Z8 z
void main()
; A2 \$ o. O& m{7 I9 q) y7 m$ ~: S" n
uchar i;4 K. _. C+ \: H3 A& E9 b3 E8 B0 u/ h
while(1)
9 ~. v9 G8 ~. G' B) t5 U {( u5 O* x- Y/ c5 o+ S
for(i=0;i<10;i++)7 K$ P4 e* \ w4 ~1 i- {
{! {/ g- G+ U( d/ s4 [ z y
temp=DSY_CODE[ i];& a/ F: x4 J: m) \; b0 `
In_595(); //temp中的一字节数据串行输入74HC595
0 f: ~+ N2 k5 x5 M( R7 } { Out_595(); //74HC595移位寄存数据传输到存储寄存器并出现在输出端
6 F! |+ d; }! o, H/ D4 f DelayMS(200);6 S7 `) p" u/ _( i" S+ W3 }
}
8 `5 p# O( x k }
; T; d( v0 T9 K}
6 [, M$ X( M( z--------------In_595()-------------这个函数啥意思?都没看到有定义啊* y% K1 w: _% P
| * r4 n0 X6 L/ y$ ^
|
|