找回密码
 注册
关于网站域名变更的通知
查看: 738|回复: 1
打印 上一主题 下一主题

基于51单片机的74HC164驱动六位数码管动态显示程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-31 13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
基于51单片机的74HC164驱动六位数码管动态显示程序$ ?2 d! o+ I, r# N* l7 i! i) K
& L3 R+ A5 T) a  z1 M

! |8 o- R. I4 `4 d( G#include<reg52.h>
( j; J1 V0 ~$ ~- I; i. ?" {#include<intrins.h>2 f' o6 m0 ]2 H, X1 x: @, }
% u" I0 Q$ V0 c: y+ f
#define uchar unsigned char$ g6 I& @. @$ e! O
#define uint unsigned int# }; a/ s# k' j5 s0 N
//74HC164
8 j& s8 k- L- F9 tsbit CLK=P1^0;        // μíμ&ccedil;&AElig;&frac12;μ&frac12;&cedil;&szlig;μ&ccedil;&AElig;&frac12;±&szlig;&Ntilde;&Oslash;′¥·¢
8 w0 I* M0 G$ Tsbit MOSI=P1^1;         //         êy&frac34;Yê&auml;è&euml;
! B; H7 d' C; C7 j4 }
# r% w" U  j# K) x6 g( wunsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,* J; v1 \. d6 G1 G0 V6 t! o
                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //12ò&otilde;êy&Acirc;&euml;1ü
- G: X: N& S9 o0 |( nunsigned char DS_data[6];9 Q+ t% [9 `+ b$ P
/*****************************************************
) G0 |! r7 k. R: j* P7 t  L$ _% D# P$ hoˉêy1|&Auml;ü:êy&Acirc;&euml;1üé¨&Atilde;è&Ntilde;óê±×óoˉêy& p% z. n3 G0 X: t/ t
oˉêy1|&Auml;ü:&Ntilde;óê±1ms4 `2 r1 j. B: @% r" ]* l

- c$ t0 d, ^: ~% _- r6 R& n***************************************************/4 v6 b  D: R7 o7 e/ X
void delay1ms()
" v8 c" f% L* y4 K4 A. [{+ ^) `" F2 n0 S* W
   unsigned char i,j;        
, l2 I; G  P% C2 Z         for(i=0;i<10;i++), u; _. k" M! t. }1 o
          for(j=0;j<33;j++)0 ?* Q. y" q/ X" s2 j
           ;                 
5 u% k& J% Z( z6 o3 w}; b/ c+ |. ~& Y
void separatEDAta(unsigned long dat)         // dat&Icirc;a6&Icirc;&raquo;êy
" c* y6 D7 B- ?) k$ X9 y) Y& S{6 y  f% P9 h9 }+ k6 |* i8 V" k
   DS_data[0]=dat%10;
" Q8 N# g; Q) t$ T9 z- M   DS_data[1]=dat/10%10;
% c8 W& p( m3 H+ d( L6 d4 X   DS_data[2]=dat/100%10;1 o3 w. C( G  [; J
   DS_data[3]=dat/1000%10;' P' q$ Z( |) a5 d, R1 O0 r6 z$ i
   DS_data[4]=dat/10000%10;
7 n6 U4 v; Z4 S- Q   DS_data[5]=dat/100000%10;
# i1 o! a* L# X0 ?& D- H7 Z}$ X8 b5 _& N4 {3 P) _
void write_164(unsigned char dat)$ j) u; R( e! n2 Z
{! ?2 C2 A3 i" z
   unsigned char i;
' S  M6 {' G5 W3 H% x   for(i=0;i<8;i++)
4 q+ h% v% X& O$ C( F% ]$ H   {  z- L' N' n- I+ C6 ^6 b
     CLK=0;            
$ }, J  L  q; r8 X     if(dat&0x80)  MOSI=1;8 [3 ~# ]" }- p5 b  D0 T
     else          MOSI=0;
8 a4 Z2 |& Z8 {8 W7 H, Q, m     CLK=1;               6 F# R% n4 l" c
     dat<<=1;
) d; \4 z: _( p1 H5 {' E  I  }+ K* b3 q3 U& D; @1 ?
}- C9 j0 G- g2 v. T3 o. c

4 U5 h" y' Z6 h) G, m) c6 z; n! |void display()
6 L6 o! h% ?4 L2 B{
6 i/ l( D0 `7 u" q! V) U4 t; S- Y- Y   unsigned char i;
! }6 e; b2 s% ~$ X# Y   for(i=0;i<6;i++)
9 Y5 N5 u" j/ ?! C, U2 v   {7 p! R" _7 W! s3 w; j
                        write_164(Tab[DS_data]);; k7 S, e) q" g( h- t4 q' g
                        P2=0x3f&(~(0x01<<i));     //êy&Acirc;&euml;1ü&Icirc;&raquo; 12ò&otilde;μíμ&ccedil;&AElig;&frac12;&Ntilde;&iexcl;&Ouml;Dseg1&para;&Ocirc;ó|P2.5 seg6&para;&Ocirc;ó|P2.03 J+ m0 W1 R/ N# y8 {+ w; A# V9 ^5 w
                        delay1ms(); / @. `2 j/ h0 n. j+ ~2 E
                        P2=0xff;        //êy&Acirc;&euml;1ü&Atilde;e5 Z! l  p% L3 s" Z
   }, [. M; {! F6 W/ |( g/ A6 T0 L  d9 V
  u) \" E8 @$ D7 `: }2 U' a: c8 q
}
0 t5 n7 j5 @6 v! t% u- Z; A; _5 R1 M' G: V: b  e
main()
! N' F6 L. d4 k{
/ ?8 Q; Q! Z+ H9 t( O   separateData(654321);
+ ]. ^# a8 B2 ]# [" g   while(1)
) E3 H9 ^  G/ q7 L   {
: X( k! g) p7 T6 {! o4 a     display();9 |- P* M* N' Y+ c7 x2 I7 k
   }
% P# G9 }8 N* c9 T' r}
/ i( Z. E% }$ v; x
! W% ]# V) ^# ^# N; M, ~% B. {

( q3 W3 Z$ I9 R% U" {3 N; Y! V
, U7 @$ v8 z: z0 x4 R; Y) ?! g( D% S9 u( k5 \3 T3 M
6 I3 M2 S/ }4 ~. h
#include<reg52.h>
6 }+ c" h9 M8 b% i5 F9 Q: O* o' Z0 j#include<intrins.h>
0 c# v  N7 U' v4 |' d% E9 o* _
3 e+ b/ {9 o$ ^9 c  a- x" k#define uchar unsigned char' o. q' i4 L- z, x
#define uint unsigned int1 \) _: A( Z$ ]/ v- Z) x) d4 {) k
//74HC164; `4 J' i9 V+ _' E
sbit CLK=P1^0;        // 低电平到高电平边沿触发( ~7 I7 ^- r: ^( R# Y
sbit MOSI=P1^1;         //         数据输入6 D' H# c' K9 P3 v' {* O8 ?  |7 J
0 |0 K! p2 P) X) G5 T$ ^9 b
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
9 G6 M2 n: j; J0 h5 O                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //共阴数码管
" D% q" O9 {& d; y3 K# [4 }unsigned char DS_data[6];
4 P6 u: i# G$ F/*****************************************************
) m8 c9 h. I: W) n$ r+ R# \函数功能:数码管扫描延时子函数
4 K2 G+ E( k. [3 |* Z, l函数功能:延时1ms* e4 N4 O" U5 n+ z+ ?- i3 q- b: \
: [3 R. {  e' y
***************************************************/" ^2 x! V+ F5 x0 S4 a
void delay1ms()
$ u3 s, k) S. H{
/ }# G( K+ m5 r- B5 Q: \" J   unsigned char i,j;        1 ?0 k% L0 R. n+ P. Q, ?' }9 G
         for(i=0;i<10;i++)5 o' s0 H$ i& i; e
          for(j=0;j<33;j++)
) J5 t, K! b! I* Q# a           ;                 0 n% ]5 t1 F% `5 b
}
0 g7 H) V6 _8 Q7 o$ C4 v6 Y9 nvoid separateData(unsigned long dat)         // dat为6位数
& @+ U; w: j7 D" u6 x9 S( W7 D{
0 ^& }/ d( e( Y5 S3 `, R9 X   DS_data[0]=dat%10;1 |. A' q/ U4 Y2 i
   DS_data[1]=dat/10%10;; D: `' M& ?' P- K( R/ @+ T
   DS_data[2]=dat/100%10;
3 n' b& h1 P! B4 m$ U9 W- |; ~   DS_data[3]=dat/1000%10;, P2 i+ f6 p9 o8 H: }
   DS_data[4]=dat/10000%10;8 ]$ i+ C; w7 |
   DS_data[5]=dat/100000%10;
7 M6 e4 r  N; }5 P- w8 n3 W6 Q/ K}7 A2 I) {4 w$ m5 l; m  P
void write_164(unsigned char dat)
- u3 g; W& }! V2 Z4 @6 O2 k2 j{
. [$ `0 Y6 }' H& [* k   unsigned char i;& }2 z+ x4 A" |6 H3 R
   for(i=0;i<8;i++)
' A9 S1 k5 B- i   {& F2 O& }: {, Q( S
     CLK=0;            
! ^) H% I4 n  w. u! i6 F% D# g. E     if(dat&0x80)  MOSI=1;# `0 I+ W" v5 w
     else          MOSI=0;
% r7 G$ n) t5 ], ?# f$ p* `     CLK=1;               0 _! q" B, x2 H" W1 q
     dat<<=1;
& B$ ?, e. @9 f2 _9 U& e  }! i% V3 w7 v: |1 H! ^. i, {% r
}4 K1 c9 k( }- m4 L. M% X& A  r& k

& U& y+ W6 F. avoid display()
9 N7 W3 O' w' e& z{
/ M1 j$ s$ T1 Q   unsigned char i;
1 l5 V9 u, i- L1 ?   for(i=0;i<6;i++)0 Z" l6 n1 G6 |5 j3 m
   {
# N3 I1 X/ `$ N. }/ c                        write_164(Tab[DS_data]);
' `& J1 y" P1 K! f3 R1 ~% Z+ b                        P2=0x3f&(~(0x01<<i));     //数码管位 共阴低电平选中seg1对应P2.5 seg6对应P2.0' d0 V0 {7 s! c% s1 o4 {
                        delay1ms(); 7 N9 d, Y& u. X- U* {* j6 j- z( a
                        P2=0xff;        //数码管灭
# [) V  {0 f/ z! x   }
2 D" s0 |8 X7 o* D3 A7 P; s6 ^$ ?. J. @2 D7 O' H3 s8 P6 m
}
/ a" R# I* d3 ^" M3 p6 F6 |1 E! @/ x' }7 b
main()
+ a% u% {* X" I8 Q{
# b3 r2 L, \  W( a7 P   separateData(654321);4 {4 }$ e2 ]1 w+ ~) t( M; J
   while(1)
2 @; F6 ^$ P2 V% m$ ?   {: G. h+ g; c- I5 ?
     display();
5 b( }- d/ |6 J. l8 _   }6 u8 _: |3 W% b9 N' I  T
}

/ n" _( d0 j; W
/ O1 v9 O+ C$ \1 D
! @  [5 J3 U% P  [- |) ]3 r
下载:- p) p  l- U! J5 f3 p
游客,如果您要查看本帖隐藏内容请回复
. ^6 ~. v) R% ~! ~6 _

该用户从未签到

2#
发表于 2019-1-31 16:04 | 只看该作者
看看楼主的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-1 15:23 , Processed in 0.156250 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表