|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/* 名称:74HC595串入并出芯片应用
& S5 q9 w) a. u 说明:74HC595是具有一个8位串入并出的移位寄存器和一个8位输出寄存器,$ S! U2 S" b0 q6 d5 n
本例利用74HC595,通过串行输入数据来控制数码管的显示。8 p' V) ?3 Y# e6 s' |
*/( M, _' _- B9 V& H3 u
#include<reg51.h>
- ~8 U' o# L1 P) q# m! v+ _! T#include<intrins.h>' @, ]$ j0 l; |- D* X7 U1 m& W
#define uchar unsigned char
& M) J& e6 l2 r1 }#define uint unsigned int$ E. N7 R7 w% T! y# {
sbit SH_CP=P2^0; //移位时钟脉冲: \9 W/ u& r: R, x% \
sbit DS=P2^1; //串行数据输入, s4 K4 a4 q6 Q! z8 M8 o7 S3 i4 I' u
sbit ST_CP=P2^2; //输出锁存器控制脉冲3 e7 i: V8 r) X0 u6 B: V8 O
uchar temp;
9 r1 u3 i" f |& Puchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
7 z$ S% W1 I: T V0 H/ e. v//延时
( l% q, w% Z1 V" E# G. v9 Pvoid DelayMS(uint ms)
' ^' Y1 O6 x$ y7 b* V{1 i2 q9 ~% `& ] V6 u) z
uchar i;
9 I! X6 p' X1 B4 O while(ms--) for(i=0;i<120;i++);3 m; Y6 b& z7 d y* A
}
* K: [$ w5 e- U6 ?9 l- d7 p//串行输入子程序
1 A9 d' d+ w: T" c( N6 rvoid In_595()3 q! @) T. I7 E% P5 {) q' `. {& B
{! ] I0 r; h9 T8 Z
uchar i;
7 X: Q. t3 A! `* F2 | for(i=0;i<8;i++)7 e" z3 ?# k9 E8 j6 g- `
{/ Q* m) e' E1 H3 Z
temp<<=1;DS=CY;% Z2 `3 f: \! i5 Q3 D# A% O
SH_CP=1; //移位时钟脉冲上升沿移位1 Q, R0 ~2 V1 G- _
_nop_();_nop_();1 X" e1 o, |& n' S9 d. V" W
SH_CP=0; D6 ^5 x" l4 Z* x# n
}
5 r) [% g! X( ~+ @2 m! M* T+ G+ j ~ e2 E}
' _1 z6 x9 y9 N( I$ @- }//并行输出子程序, \( }7 y# B( |# A
void Out_595()
! p6 X& y) v. l' V4 s6 t; O{
$ S7 J- F4 C; @ ST_CP=0;_nop_();- D, x# C' c) q( h% _) T+ Z! k6 e
ST_CP=1; //上升沿将数据送到输出锁存器
; _8 v$ Z0 {: M R _nop_();
3 ?6 F4 R0 \% r+ h0 G) X ST_CP=0; //锁存显示数据
& d u. h( u, i2 R}# F: e3 a/ P8 O/ I1 z; K
//主程序
, w9 k/ m" j/ g( F$ s: e8 G9 ]void main()' K, t" O \6 H0 K% ]2 @
{
- z0 G# `, o0 m uchar i;7 _& j0 Z3 q7 ?& [" G. P/ X8 w, z
while(1)+ R5 u/ E9 b& f, w
{
; J: R7 }- f; L; t5 Z" \( z for(i=0;i<10;i++)2 e% \3 } W* X9 D
{) J3 j4 f. H O$ Q* I* Z% K
temp=DSY_CODE[ i];
: K* B( T; |7 R In_595(); //temp中的一字节数据串行输入74HC595
6 |, W9 d# X8 E7 n8 b Out_595(); //74HC595移位寄存数据传输到存储寄存器并出现在输出端
& M" A; I3 ~1 I- K7 b- D2 C1 e DelayMS(200);9 `2 s# Z o$ Y7 U$ h7 W
} & K- ~6 q; h" j1 |
}
: p+ H, m# x/ [) c6 R# B}1 ^% A/ c* a' v) j
--------------In_595()-------------这个函数啥意思?都没看到有定义啊
" N' E+ e+ H2 `9 y9 D) u |
9 n6 P2 v0 a2 p) T3 i) S% l* M% ? |
|