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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
基于51单片机的74HC164驱动六位数码管动态显示程序
7 N# R, J2 o( J1 h. \( f& @
/ M& ^8 \3 t& u  P0 h/ S8 R
# D+ O$ Q: \; ^% i) z% h
#include<reg52.h>
- b4 G! z" c2 M- C3 l$ z# Y/ D#include<intrins.h>6 g9 y. o6 ]$ r, w- D
/ l$ v' p' E' |4 c! C/ h0 ?) J
#define uchar unsigned char
6 r7 d3 ^% `4 G& A: ~, b/ _#define uint unsigned int- x) g3 Z1 B! V( Y7 Q: D$ a
//74HC164
3 o& J. K' R; j5 ^  p- xsbit CLK=P1^0;        // μíμ&ccedil;&AElig;&frac12;μ&frac12;&cedil;&szlig;μ&ccedil;&AElig;&frac12;±&szlig;&Ntilde;&Oslash;′¥·¢5 b0 D7 O: ?2 z( L+ p
sbit MOSI=P1^1;         //         êy&frac34;Yê&auml;è&euml;2 y' E- b1 M* x, |( n6 J

- @8 l0 b) H9 D$ b. H1 _unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,5 |6 I! Y4 [$ y( y( h
                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //12ò&otilde;êy&Acirc;&euml;1ü
; Y$ r% U* J: ]3 Hunsigned char DS_data[6];8 B  U; |$ @/ c. w% e; c
/*****************************************************8 B. G7 A6 ~3 U3 c8 M, Y9 N' {
oˉêy1|&Auml;ü:êy&Acirc;&euml;1üé¨&Atilde;è&Ntilde;óê±×óoˉêy4 i0 ?9 X8 F* ^5 z; I3 d
oˉêy1|&Auml;ü:&Ntilde;óê±1ms
5 W$ m1 [% Y% p7 S. J+ D4 n  D: P, G4 p
***************************************************/8 ?$ j2 k2 O4 A. ]
void delay1ms(): n" E* z7 j8 W- i
{6 {  u4 w0 Z& I, J, `
   unsigned char i,j;        
3 @) D4 H  W+ @/ ]         for(i=0;i<10;i++)" f/ Q- ~$ t' J( d# l) e! v
          for(j=0;j<33;j++)# O5 K% h0 K" i$ F; ^& o
           ;                 5 R3 [1 b! I/ z2 Q
}
5 ~2 {6 A) G$ P7 b6 ^+ rvoid separatEDAta(unsigned long dat)         // dat&Icirc;a6&Icirc;&raquo;êy
! x- g) U% R8 Y{
" y8 e2 |( b/ _) R, w( }   DS_data[0]=dat%10;) O) T1 t: k7 @3 S! P; u! _$ |0 _
   DS_data[1]=dat/10%10;
& d, j+ {. A9 G1 P' p   DS_data[2]=dat/100%10;
. u, O0 c7 a6 h; y   DS_data[3]=dat/1000%10;
7 V& U3 y+ M" M1 [- x5 ?- y   DS_data[4]=dat/10000%10;
3 y* z0 L+ X$ d3 G  U3 ^   DS_data[5]=dat/100000%10;3 ~2 f4 g1 y8 m, H+ n  y: {
}
9 k- H4 e) v9 r0 jvoid write_164(unsigned char dat), S6 \4 X5 d* k
{; W+ v+ ]* T) g8 d: g* d( D" X
   unsigned char i;
: n0 n0 H+ d9 a  r5 B4 p   for(i=0;i<8;i++)8 H4 ]- j( v3 j8 i5 z  p0 u
   {
( u& {* }& t% _     CLK=0;             . g. F6 V# w1 I: A2 d/ ^8 G# W
     if(dat&0x80)  MOSI=1;1 k( h0 |6 R" F8 g( g- n
     else          MOSI=0;
8 r7 w5 q& L" c( b  ?5 N9 J9 @: E     CLK=1;               
' {; U* m5 D! S8 g     dat<<=1; 3 \% }% c$ S3 j1 [: s5 Z# f+ @
  }1 L# u" `4 E4 a1 a5 z2 U1 D# R
}
, k3 O% z. A5 ]3 |6 ]* ?1 T
" q! O0 Q# |0 E- Z- ?$ P! nvoid display()
( \+ f! x. r0 e0 i9 P{* F1 c  O4 H5 \. ~1 b
   unsigned char i;; [4 D8 p: E, W1 t6 N
   for(i=0;i<6;i++)
2 G) \. `: Z2 @1 d: l" `* c8 H   {
7 k+ a+ A9 n* V  O( |                        write_164(Tab[DS_data]);
: q* B* e9 |% r0 e; m                        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.05 q! P' ?5 Q" b  U, W1 k2 A; g
                        delay1ms();
& ?7 }) }! c; O  O% W3 B                        P2=0xff;        //êy&Acirc;&euml;1ü&Atilde;e
; K+ W* [# J/ R0 L, h5 Y! K   }
) _, G# {( V: \/ ^3 L, Q  `
) ]2 c6 n( n$ a, Y7 a5 o}% W: X6 n& W- N& `; H4 T" S- s! k
, e4 \8 q7 S5 M
main()
4 R* K* ]9 t0 O' C" O{
7 t  s0 i6 f. ^   separateData(654321);
  T: e1 _% p& \: [' a0 K   while(1) + e8 |5 B, M- W8 W  k; ]( J8 x
   {
) {- w0 i+ u, v0 J6 A     display();
/ g4 ^7 ~' N2 [' o; G7 Z9 t: P$ h6 ]5 U   }0 R) H) e0 Y1 V# v, |6 `* |; p- l
}

! L9 K" w$ W) H2 ?
' R2 h# E. b! [
& r. \  R; o: _

; w& g( g% \5 f% a3 k: k7 Z& g
3 \* @6 a" ^  |* Q1 g9 u7 X6 _

, l- ?3 ~; f6 K+ n% w0 z#include<reg52.h>4 R  `) N3 X6 q; y% m4 a- A7 B
#include<intrins.h>% D# S6 ^$ r4 }

' w* Q& [" a+ B! J- |: d/ I#define uchar unsigned char
5 @' L7 G2 U# ?& c( U! Q. o  Y#define uint unsigned int8 A- }) ?8 t9 b4 f6 B- s
//74HC164
( k6 |+ r! y- Jsbit CLK=P1^0;        // 低电平到高电平边沿触发
+ I4 c1 L0 W* _/ J$ B' B- T. }+ U7 esbit MOSI=P1^1;         //         数据输入
: `  b- {5 j' P, ~7 Y4 K# e6 h8 R# H, `7 T3 u8 ~
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,  @9 e: S! V3 @  `. ^
                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //共阴数码管
* J2 ^! S1 n! U+ Z+ hunsigned char DS_data[6];
3 m- J3 V6 U+ F# {; B% Y/ I- x# k8 Z/*****************************************************# m7 R; }) i  j5 O3 d; ]# A4 @" n5 w
函数功能:数码管扫描延时子函数4 z3 W% ]3 c- \! [1 `  q
函数功能:延时1ms! n* F- \4 X  |

& B* f; X+ F" m! p***************************************************/% w% v8 p, o% ^& a
void delay1ms()) [: V% U, c3 {. e
{& B# G9 k5 c( j6 {  l! N  g( l
   unsigned char i,j;        
1 k+ S! k: r9 h0 s+ C         for(i=0;i<10;i++)
- Y+ @' o- v1 D2 s2 D# u          for(j=0;j<33;j++)
" S( S: H: ~0 P; \9 |           ;                 
- F5 Q4 _1 g0 i}4 t& Q! A  c/ ~
void separateData(unsigned long dat)         // dat为6位数4 J2 O/ `- h6 @* ?. a& ]
{  M- H; E" |- \$ C- D1 G7 P
   DS_data[0]=dat%10;0 C" M: h1 l  M8 f) {) w* g
   DS_data[1]=dat/10%10;% X( D$ o. R) f! V' s1 }
   DS_data[2]=dat/100%10;
1 B9 U$ O5 T6 H( r% Q   DS_data[3]=dat/1000%10;
3 F3 D- E/ F( G, n& S* e+ \. ?6 m4 E5 g   DS_data[4]=dat/10000%10;
1 V6 Z& w& U8 e2 p5 D0 c& X- ?1 X   DS_data[5]=dat/100000%10;# C. t' E$ K9 l0 \0 t
}& f! _) s; _0 u$ D9 q+ O
void write_164(unsigned char dat)3 f% H9 U7 T' Y2 x
{3 w7 ^! V* O, h
   unsigned char i;. A+ Z7 K4 K5 [" R6 v$ ^, P
   for(i=0;i<8;i++)* E- Z$ U( G6 `+ [- W
   {4 K# i2 X  d+ v& [4 h! [% ~
     CLK=0;             4 s! J4 ?0 c7 L8 Z, s" |
     if(dat&0x80)  MOSI=1;$ ~. C" _7 _" ~( f6 ^3 Y
     else          MOSI=0;" H3 B! S2 I' b: B: k5 k4 P& r
     CLK=1;               / q3 ^, l" X5 Y
     dat<<=1;
% D. l: d, {/ |% R. |3 `  }
; e, g/ t$ i  v$ {% |8 F: X}
, h2 [1 B  y& M% W7 z8 A0 G8 M! D% g4 u% ]* k- v* w
void display()' ]- R4 H2 c' c+ f" H
{
4 K% e0 K% j# J7 O   unsigned char i;# t1 @: B1 R' t. x: G
   for(i=0;i<6;i++)
" D/ j: k1 w0 L9 h   {
# c# k7 F, S8 X- Z                        write_164(Tab[DS_data]);
- F! g# o% \  L$ J! h0 M                        P2=0x3f&(~(0x01<<i));     //数码管位 共阴低电平选中seg1对应P2.5 seg6对应P2.0
/ A5 I( T' J, k4 k* J6 m7 @$ m                        delay1ms();
% h6 y+ G; E) |$ z6 {. @                        P2=0xff;        //数码管灭
9 r( f4 s: N1 Z, |0 j   }
# W% l7 m% A) u6 U, h% k0 I, z) c' t
}
) u. P( i' p: k+ x6 H0 ]' _3 p4 m8 [. ^4 Y& k) z5 H/ }
main()3 ~0 V1 N* B# Q( \5 F1 e
{2 s  {3 Z3 T. P$ k
   separateData(654321);' A* x- ]) _8 d0 [  K$ i6 F
   while(1) 6 A& r8 O' N# c. f" a. B
   {
  {+ m' B4 [% p) @     display();
+ j! X- d# h/ c7 q0 D   }
/ L0 \( [8 E- `" u( m- m}

& e" W. \8 ]* `! c3 e  j6 w
' M% y5 Y- D) Q. q7 e

' y. M" M! G1 I: q( U1 l下载:
& `9 m# R% v2 X$ s
游客,如果您要查看本帖隐藏内容请回复

8 T* j1 G- ^  c, g; |

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-12 13:11 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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