|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/* 名称:74HC595串入并出芯片应用' Q9 ^6 V) h( D( J
说明:74HC595是具有一个8位串入并出的移位寄存器和一个8位输出寄存器,
. F6 e: ^' n4 R 本例利用74HC595,通过串行输入数据来控制数码管的显示。7 w5 r+ ?6 q3 c& y5 ], k
*/7 B3 p$ t7 z! `' p% I
#include<reg51.h>) V: Q% d- l( a8 P9 R' [
#include<intrins.h>
0 [! Y! b$ F/ f" \#define uchar unsigned char! U8 ~ E4 T) b6 P) i
#define uint unsigned int
$ m; B2 D. |. v! {! @3 E# Nsbit SH_CP=P2^0; //移位时钟脉冲8 @; b- J" J0 {- q1 F
sbit DS=P2^1; //串行数据输入
! x9 c/ f3 b5 c9 usbit ST_CP=P2^2; //输出锁存器控制脉冲
9 w) T( f: @( R+ Zuchar temp;! W' z8 a1 N W8 H
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};* W4 ~) s/ |# A) o% m5 q+ _ F
//延时% v- U0 Z5 \1 }2 S/ X
void DelayMS(uint ms)' @* ~# t8 y' [" i
{- c- l( ?, E* b! B- i, T" H- O
uchar i;
$ q |7 a1 |: e5 I3 V while(ms--) for(i=0;i<120;i++);
8 {7 z* F% r' J* z9 L% _}% t8 m3 \0 x8 |; R3 M9 C
//串行输入子程序
* A, v( X2 o0 j- Q2 e2 evoid In_595()
7 s" I% `8 X/ W! @{' d" g- p. \% s. Z$ j/ k3 A$ Q
uchar i;" b% S0 ]' N3 W/ c- `) a+ G6 y
for(i=0;i<8;i++)6 D# s9 @! g" H
{
; y q! R3 E4 J9 @3 I# s+ c temp<<=1;DS=CY;
* q7 |% Z/ n$ w2 [: W SH_CP=1; //移位时钟脉冲上升沿移位- a2 s) L: f. I' k, ^
_nop_();_nop_();" U' p" e% d' \# i/ N$ S2 P& e
SH_CP=0;& f0 e$ d7 h6 J, T9 o; B
}
2 O! ^! c$ y- a2 ~* G* }}3 P( R# K% ?9 q6 x) _" e
//并行输出子程序4 a/ B4 ~* s5 ]
void Out_595()
) i( g' j4 Y" b! L+ p1 N# O{
4 Z& {! t" s' W- K3 ~6 e ST_CP=0;_nop_();" {; c) N& G. G, h2 l, X
ST_CP=1; //上升沿将数据送到输出锁存器4 \; T. c4 N/ ?/ ~1 U
_nop_();# a- t; ^7 m! W8 A
ST_CP=0; //锁存显示数据+ o6 W# c4 a; ?: h( i
}* \: W9 \/ p9 w, \
//主程序
+ C& w4 g5 e# V5 @5 Y" hvoid main()7 h6 g" O2 a) l, @9 F" E
{
) ^# W+ N. H6 `3 g. }% l uchar i;
0 G: f* ^# a9 S- z: { while(1)" u. h+ A) Q6 f
{
' s7 g; B" T: w( Q/ ` for(i=0;i<10;i++)
( ^, h( r8 Y" q+ z! g6 e {
* H& b4 C' q- |& k+ [2 C9 D temp=DSY_CODE[ i];
! G" C9 G8 v( p9 c In_595(); //temp中的一字节数据串行输入74HC595) n. F- L! M6 f- T, a
Out_595(); //74HC595移位寄存数据传输到存储寄存器并出现在输出端5 x" Z8 h4 b0 d* v8 l ^
DelayMS(200);
% f l* {* A, e/ B( C4 P9 _5 e } ( ~9 N: S/ [3 ?; ]) f
}5 R( L4 y# Y @* j" u
}5 R. e2 l8 Q# C3 \+ X
--------------In_595()-------------这个函数啥意思?都没看到有定义啊
! d% w, ?) @1 p0 \+ N B" i/ K1 U+ d | 2 w J q2 {/ F# @
|
|