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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
基于51单片机的74HC164驱动六位数码管动态显示程序
- D0 n" s  c" x' V8 b
+ f5 g; `$ i4 N

( {: a0 R. w" Z* J  l. H) P6 R#include<reg52.h>
! o" X; ]" ]6 R9 a  ^4 z9 s#include<intrins.h>2 ?$ P' S3 z% q& D- l

0 b- j- D( o- r% j#define uchar unsigned char
& @5 S- e3 d) D0 o#define uint unsigned int2 a0 K7 P1 c) Z: {9 Y1 Y/ D
//74HC164
% I1 }# ~( }; Osbit CLK=P1^0;        // μíμ&ccedil;&AElig;&frac12;μ&frac12;&cedil;&szlig;μ&ccedil;&AElig;&frac12;±&szlig;&Ntilde;&Oslash;′¥·¢
1 j, O3 I) K. \1 p2 {, R+ U3 msbit MOSI=P1^1;         //         êy&frac34;Yê&auml;è&euml;1 D( l- |0 O8 t/ w

8 [1 Z6 D  y. Q2 {2 b  i# q9 r; Yunsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,; c0 Z# D( C" s2 t3 J
                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //12ò&otilde;êy&Acirc;&euml;1ü. R' `  ^! K$ M- h3 j) T: W# c" a
unsigned char DS_data[6];
$ e/ e% m' |; _2 s) C' i/*****************************************************
) }3 J, r4 j% u8 T* }8 a% n$ boˉêy1|&Auml;ü:êy&Acirc;&euml;1üé¨&Atilde;è&Ntilde;óê±×óoˉêy+ a( J4 r$ |+ u! K3 D
oˉêy1|&Auml;ü:&Ntilde;óê±1ms% ?$ }7 e6 w: S! l% ]4 [! |( `. K

& g; w  g8 b" h, \: Y0 k***************************************************/
$ ~7 ^, o6 a3 B. |' R3 mvoid delay1ms()
  A2 m5 T% }0 G{1 |  L; q: |$ ^8 S, g0 E& N! |
   unsigned char i,j;        
" t" U6 [+ W' z+ e+ T% e8 f. Y! _: y% T         for(i=0;i<10;i++)
% D4 _8 W, D  x/ F  K5 T  r. l          for(j=0;j<33;j++)0 L2 l5 C8 B/ D5 t4 W- {; J
           ;                 9 @4 O1 K$ j7 K7 k3 h5 v- M' R; U9 C. T
}
# I( n- p3 j7 S, r5 |. u, }void separatEDAta(unsigned long dat)         // dat&Icirc;a6&Icirc;&raquo;êy
& W' W) m3 {& Q4 J/ L{+ U/ O. d, ?0 S7 T
   DS_data[0]=dat%10;% _8 r8 H6 i, v1 x3 p% C
   DS_data[1]=dat/10%10;
% K$ B- [! T. A6 u0 j9 q   DS_data[2]=dat/100%10;
7 Z7 p8 T5 F% z   DS_data[3]=dat/1000%10;
, b+ D, K% ~2 ^% H9 z3 |: U   DS_data[4]=dat/10000%10;5 W/ I% ~3 m" P/ \" A) ^! o0 v
   DS_data[5]=dat/100000%10;6 \4 e- h+ V% v; t+ B
}2 v3 s8 j& a8 I, S" V, m2 Y  b
void write_164(unsigned char dat)
, j( j4 w6 B- z{: N2 s& z* ?" v
   unsigned char i;0 h. y' Q, Y; J3 T2 ]: Y
   for(i=0;i<8;i++)/ Z4 Y/ s& S/ Q5 A# @1 A
   {
1 K2 [8 k& y, y     CLK=0;            
1 P) i' a( \7 z0 T     if(dat&0x80)  MOSI=1;
9 d: F, v9 _  J/ K% T     else          MOSI=0;
- H3 m0 h+ @' O5 a4 v  M     CLK=1;               9 }  ^( s: B0 e. J6 U
     dat<<=1;
" @( S+ ^5 S7 K6 A9 @8 `. T; W2 i& e  }7 r$ l( S4 [$ v" _+ m& w, X7 Z# \- z
}, l- Y: r) a/ L) }
6 i! n) \' W6 ?* `, j/ ]
void display()' |  t- f2 s* q8 G
{
1 F2 r) s9 t: T+ s( i# l   unsigned char i;. Z; |  n% c* `7 d7 \5 B" I
   for(i=0;i<6;i++)2 `1 w% h' ~1 O4 v# ?, \- d
   {1 R5 X1 d( O6 _- y8 V7 w
                        write_164(Tab[DS_data]);
# R! [0 r( Z$ g, k% S; q9 E5 v9 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.0$ T8 d; s. ]5 P; T3 z
                        delay1ms(); ; n5 i0 g$ M0 c/ |
                        P2=0xff;        //êy&Acirc;&euml;1ü&Atilde;e
2 {0 j! ~1 l* R! U& X& F; U4 T   }( r0 n' @7 W# R1 j2 |
( [" @. N) [7 K4 a
}
7 J7 ^3 k( L; ?" f; t+ ]
$ `4 b' p) T0 W* ^main(), I; i; C+ J9 J$ o1 ~) B
{
8 c% V# {, ~7 Y; A' N% `% u   separateData(654321);; e1 K, v8 n% s, N3 z7 K4 v/ X
   while(1) 5 k! k/ f& H6 |! U
   {! e3 u: K* K( |+ Q+ q/ @( K
     display();
- o& G! k( C8 L/ z1 L2 I   }1 |1 q6 G$ Q# B0 A# G
}

2 Y" t! D' ]) a' C; [8 b/ W
  R/ J, s$ K8 Q& R6 T
* t1 M) @# j2 K0 O) I% v3 B% Z5 ^

3 q; I  F; ?" o, e
) Q7 s9 v3 O/ v  }$ m5 P

  X2 h, z9 }; c4 n4 |& J6 j#include<reg52.h>- Q: c7 l4 E: S! r. o+ a
#include<intrins.h>
6 }# l" j2 M! B0 A+ ]: ^! ~8 o: |' t5 N3 u/ D( g* I% ?
#define uchar unsigned char. E" Z% P- x; Q% Z
#define uint unsigned int3 Y% a3 q' L8 g$ p3 |. V) i$ T
//74HC164
  |$ S: }4 S0 S6 S7 R  U  b* y% zsbit CLK=P1^0;        // 低电平到高电平边沿触发$ X' c. E7 |  A0 [, `
sbit MOSI=P1^1;         //         数据输入% z5 C* t8 b* L, Q; F
. m0 N: k9 M6 s7 Z( z" T
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,+ ~3 z: @# F" w7 O
                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //共阴数码管/ a& y) G* p& w1 a
unsigned char DS_data[6];0 ]( g9 Z  v, N2 e9 V
/*****************************************************
$ I: y" j; j, @6 x  i函数功能:数码管扫描延时子函数
, G" ~: _) E/ q$ e( `函数功能:延时1ms
  R& n6 l8 L7 Y4 u; ~9 H# p, V, O. h& p8 S) n
***************************************************/7 p/ a7 b, E, w: w6 u
void delay1ms()
+ R4 N4 Z/ w. T5 [. P" A) r{
; S2 r  B6 e' f- X1 Q   unsigned char i,j;        
; A# i* r2 z9 z0 E6 t         for(i=0;i<10;i++), s% w" k) X. U
          for(j=0;j<33;j++)
" g5 W, h8 g* q$ Z9 }           ;                 
+ A& @0 H  Q. D}
2 W+ v8 q: e9 ]2 U; Y* j+ Xvoid separateData(unsigned long dat)         // dat为6位数
' Q- A$ K/ V: l1 v. ]8 E{
4 B: y7 q9 M+ q# U% ?* {* k. _7 T3 b   DS_data[0]=dat%10;
4 {, {4 s* Q' e- B# W+ j   DS_data[1]=dat/10%10;7 U. u1 E' _% \: K) V
   DS_data[2]=dat/100%10;8 W" J* P2 ?0 _- r
   DS_data[3]=dat/1000%10;6 S; W$ P; \$ m' r' d2 T% r* {) D2 \
   DS_data[4]=dat/10000%10;" H4 D( Z' P' F/ Q8 T3 a
   DS_data[5]=dat/100000%10;
6 Y) M% A- j' D: I( ^+ a& o. i' A}
. p. f+ [! u9 s0 Nvoid write_164(unsigned char dat)
8 N- h/ D  B7 M% S. U1 `" Y{) L' j2 ^! ]$ U5 P: g, h. C' `
   unsigned char i;
4 T9 [% O. j0 T) R" y0 F  r   for(i=0;i<8;i++)4 a% ~  s& a( d5 Z$ X
   {
; b% p" i+ j  t     CLK=0;             ; D- U( B1 q" G( p6 p
     if(dat&0x80)  MOSI=1;. W5 U6 Y: y8 ^* L+ M; h* m9 v
     else          MOSI=0;
' d0 S- U0 i, d# g4 @     CLK=1;               ' Q4 t0 \- B3 a& J! \
     dat<<=1;
+ `9 L  [/ y3 R0 |! G  }& k( t% ]" \8 @8 u: j" t
}0 m" j2 I) f& P

. U! \; o# P1 c* T7 }void display()" ^/ _& q1 X/ X6 m5 a
{
# N8 ]9 b  w$ [* `   unsigned char i;
) Z) a0 Y# \) G% n: m3 ?   for(i=0;i<6;i++)# {$ Y9 ?% e, A) k/ P& G. F
   {
: Z2 U& y6 D8 x. p4 w8 j                        write_164(Tab[DS_data]);
% l1 A% ^0 T! M+ t                        P2=0x3f&(~(0x01<<i));     //数码管位 共阴低电平选中seg1对应P2.5 seg6对应P2.0% ~+ D  G$ r; y2 d0 _. x
                        delay1ms();
' I: e( c0 ]3 L5 a# C                        P2=0xff;        //数码管灭
; Z8 M: \1 K% C' G   }
$ P9 W4 D+ h+ t1 u8 c9 Y
4 W7 j' E  u; q6 m) v& e: K* f}
  f1 L& q* o9 p' G) r7 F# I& M6 m9 g8 `7 V4 h5 t% g
main()
% p3 O* v& x7 e9 E* L  Z6 U, u{/ K, p2 p- v0 Z! q7 z6 Y
   separateData(654321);7 O% \3 Y/ i& U4 g: G" j7 t
   while(1) * i3 k4 [' i$ R0 f% K% ]: n2 y
   {, ?1 U8 Y2 X8 u6 E$ w: m* r) n- |
     display();
, g5 g" L4 g+ Z6 m+ K9 ?   }1 v( m/ c6 h5 Q2 {
}

7 O8 J0 {9 S# B- Z: G3 f! \" g  R) g% ?
; }. K8 E8 X, {# \
下载:$ y; `/ X# c; x2 l+ ?5 E
游客,如果您要查看本帖隐藏内容请回复

7 ]- a8 Q6 d- s; }9 i3 n3 l: m

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-18 08:08 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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