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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
基于51单片机的74HC164驱动六位数码管动态显示程序" \( z, w: v; B1 U+ ]+ R. E8 {5 Q
$ q! P( ^0 ?  ], Q6 c+ A

9 a' `  Z' \1 L# ^" b. c#include<reg52.h>
+ G3 r- @, i/ L# a#include<intrins.h>
' ]5 u4 H6 \+ M9 {0 h. C( p9 y1 W  m" K
#define uchar unsigned char( x3 d0 u" q( G! a: \1 f
#define uint unsigned int% M# s4 ?" I  H5 A* y& t
//74HC164
7 S6 ]# @5 R: k9 V9 y2 m6 dsbit CLK=P1^0;        // μíμ&ccedil;&AElig;&frac12;μ&frac12;&cedil;&szlig;μ&ccedil;&AElig;&frac12;±&szlig;&Ntilde;&Oslash;′¥·¢
2 |7 Z& r/ X7 F! f5 jsbit MOSI=P1^1;         //         êy&frac34;Yê&auml;è&euml;
2 {& T) y+ p% Z& X
0 l* L/ C& @( m$ m2 Runsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
9 [8 s* r0 g7 Y$ F' M: X+ n$ C                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //12ò&otilde;êy&Acirc;&euml;1ü
# T' H- m, l3 V; E" lunsigned char DS_data[6];
( I- f7 ?, d8 J3 Z' Z& X' L0 p6 g/*****************************************************
3 q" {6 L% u8 G! P. S2 M' zoˉêy1|&Auml;ü:êy&Acirc;&euml;1üé¨&Atilde;è&Ntilde;óê±×óoˉêy
& u. L$ `, G6 d/ {. t( Ioˉêy1|&Auml;ü:&Ntilde;óê±1ms: y& {  E$ X! b% P8 A# t- a
  z; |4 }8 R/ J+ B. o1 B* {
***************************************************/8 Y6 n3 l4 Z5 a! v- i1 x
void delay1ms()
, E+ @1 h2 H. P8 i, [8 N, j  {$ l{' m( w8 r9 W: o' Z* u& w9 q9 I8 A
   unsigned char i,j;        
/ d0 K9 f! q, G9 t" U5 j. O! S         for(i=0;i<10;i++)0 m# \0 X; x( ~5 h0 ^
          for(j=0;j<33;j++)# m+ y. Z8 x+ W1 j
           ;                 
) J/ H8 m7 V( t6 F/ n/ {9 r}+ e( f* Y8 v* r* ~  M6 _) y3 `. a
void separatEDAta(unsigned long dat)         // dat&Icirc;a6&Icirc;&raquo;êy  o1 }& T9 F8 N* }" F- ^; u: u
{2 h" m( J- A& O/ I: N+ V
   DS_data[0]=dat%10;
9 L2 M: ^/ ~; e# Y) ]0 Y, b7 o   DS_data[1]=dat/10%10;
- O7 K0 [1 ~) j$ }   DS_data[2]=dat/100%10;
; D- f, F& e* Q   DS_data[3]=dat/1000%10;# w1 i% v6 o, @+ K8 a, n, {# {
   DS_data[4]=dat/10000%10;
3 |, X& u- d2 O% P6 Y6 o; B  b   DS_data[5]=dat/100000%10;! k& m0 c+ E' w/ u9 k
}
7 L5 C7 J/ A3 v6 R% j7 ~1 xvoid write_164(unsigned char dat)
( J9 o! p" R& s6 v8 C; g' m7 [0 ]' \# |{$ }7 I: \+ q9 F. |! G
   unsigned char i;
  g0 Y- V- ~' ]   for(i=0;i<8;i++)
, i3 g1 x7 G1 j6 v) Q$ f   {8 R2 z5 C4 S1 p
     CLK=0;            
% O' I6 s6 D. h* A7 \     if(dat&0x80)  MOSI=1;
$ m" `2 P+ k1 f8 `* \2 {8 {     else          MOSI=0;
$ h. m4 ^/ x' [$ s9 R* Z+ n) g     CLK=1;               
- J& R8 R4 z6 T. O0 j6 E     dat<<=1; 1 H6 @8 Q% P* o) E, l
  }
' M0 C! X) j% r1 J2 ^& Z# R}
+ ?1 s8 \9 n2 ?* \# S9 R6 K
, P$ C! K$ I2 J- I) M; avoid display()7 `- U. J4 N4 q" `  J
{
/ C/ u! X6 e: |   unsigned char i;$ s" ^7 V7 t$ o' t
   for(i=0;i<6;i++)
: A* K9 T2 Y. z   {
  X3 D7 j1 Y) x. D                        write_164(Tab[DS_data]);! ?3 a4 J# }9 L- f
                        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, A/ O. |" N: p& C2 J. L
                        delay1ms();
% p8 g" U* H# ?/ {                        P2=0xff;        //êy&Acirc;&euml;1ü&Atilde;e- U" r" T$ [' n* u* D+ T
   }  m/ B9 u: x* X/ B7 d3 b
+ `6 V' u% {1 T0 ]$ o- I
}
/ [8 P; B( s7 y7 k  ]
3 E0 R  N( O6 R0 T+ }1 _( Smain()2 u, T& g3 Y# M# F8 P
{4 d! o2 Z" S" v: M+ e0 N( l8 b
   separateData(654321);9 x% h3 s1 X4 `$ [: W; ]
   while(1)
7 o) B" g1 C3 s+ `8 \   {$ y$ i$ |6 S/ l$ T; I& i
     display();
$ B+ l' n2 ?# ?+ [0 {   }# G) A( {# d/ P6 ~
}
% A! H. a( F# D: g6 i

; n/ b8 B1 X1 m! p+ ]2 n* r7 @
1 Y, V2 \2 \4 _6 L4 w

: V! u$ F- H- {7 ^8 D  u1 \6 p+ ?; N' N# _

( h( a( |- k+ a4 O) O: z; r#include<reg52.h>
3 Z$ Q$ \0 X* d3 e#include<intrins.h>2 _$ D; O% T* D/ @- e( g8 B1 q
  ]2 P  X5 p; u: u$ n# u' [  v
#define uchar unsigned char: y8 s9 N$ ^* z: X* B
#define uint unsigned int
9 l# @9 }( z7 n//74HC164
% ~( W1 g/ t$ [: ~4 a7 psbit CLK=P1^0;        // 低电平到高电平边沿触发
' n$ l6 Q% M0 ^: {2 D4 Wsbit MOSI=P1^1;         //         数据输入# S; U  j* [1 x! r- y* I, Y$ r
. }3 I! R  g3 M. b1 n
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
! v# R  u8 d/ I: [% |/ ?                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //共阴数码管
# b' i1 f* J- C- H2 E7 C0 b. |" _unsigned char DS_data[6];6 w8 R( Q+ }) i
/*****************************************************  c7 [& @1 l8 n3 v! p
函数功能:数码管扫描延时子函数3 l9 p9 Q: t* P+ b, g# R' j
函数功能:延时1ms) K/ ^1 d1 L( K9 \

7 ?6 l. O. [/ ?5 f  j***************************************************/8 D3 K( L4 [1 r
void delay1ms()
1 u+ _2 L7 l+ }{/ R3 e3 A- x% Y6 I6 Q: P
   unsigned char i,j;        % u# q$ @# P/ T8 @' {8 f! `- \
         for(i=0;i<10;i++)8 W" q" z: o$ d: z& x" G
          for(j=0;j<33;j++)* a3 O4 J% N( R1 ^. B
           ;                 
5 `  M- o% C/ r; g; B8 _}
' I" ^& |* d$ I0 e) |3 kvoid separateData(unsigned long dat)         // dat为6位数
3 F; f5 V" F/ F{# N& r; b, ^: A/ B0 |$ a+ e
   DS_data[0]=dat%10;
( Y+ a+ ^$ I" |+ T   DS_data[1]=dat/10%10;6 z$ u7 t3 u  M; O4 z
   DS_data[2]=dat/100%10;: c; E" A; \9 a1 t
   DS_data[3]=dat/1000%10;
% _& n& o. `/ e: n& `/ z! o  W   DS_data[4]=dat/10000%10;
5 B$ X. y0 P5 P   DS_data[5]=dat/100000%10;2 C; K" e1 \; r5 A" i: o; ~
}
' ?: o* ]4 S7 @  c0 Avoid write_164(unsigned char dat)
  J! f6 d% X# a7 M& o# I{
1 E! d; g8 r; n8 B/ i% r7 l   unsigned char i;% p7 W2 d4 I% Z5 e4 X! r) z. @
   for(i=0;i<8;i++)& j' A9 c- Y! @) ?2 w8 R
   {
6 K7 ?2 L) |7 G4 U7 k) F     CLK=0;             & _* V% ~  c+ f# j
     if(dat&0x80)  MOSI=1;/ i. `7 o+ ]$ i2 Z" Z( \
     else          MOSI=0;
7 [1 I* Z- Z0 w1 r8 }     CLK=1;               ' A0 a. U. s$ Y5 D, q: v/ n4 U
     dat<<=1; $ T# s+ F2 M& Q9 G1 s! W& p
  }  {2 G7 V6 F: ]
}) p/ ]( N  z' g$ s

( b0 A  c; d) V' s1 \  a$ mvoid display()
5 l& O  [1 a; k0 [) R* [" l{
) d4 M8 R6 f4 Q9 _3 l   unsigned char i;; d# [# b7 a6 i" h, e
   for(i=0;i<6;i++)+ G" E/ i3 b) U3 q: e
   {
+ D, {9 n3 |& L4 K' P/ C0 q. f7 s                        write_164(Tab[DS_data]);0 J8 W7 A; |% w6 l  a, J, k
                        P2=0x3f&(~(0x01<<i));     //数码管位 共阴低电平选中seg1对应P2.5 seg6对应P2.0
- z: d% }. C" t9 F1 J) X) L                        delay1ms();
( ?+ |$ m$ Q6 V- t3 a, c5 e                        P2=0xff;        //数码管灭. `" F$ S3 Z& V1 T3 P7 @- S
   }4 r& K3 q/ x6 w! x( m  K

8 U) W+ x9 k! G) S}5 N. g% s! P8 E% F, Z1 e( S
. H5 W5 W9 }* w! P5 d
main()- G( c& [% `  {  v# {4 F
{
, U( ^- O7 b9 A   separateData(654321);0 b, S5 b) c9 M. W* g, o7 f/ }
   while(1)
7 W# \6 A/ B  I( h+ V* @' ?   {
8 [9 X9 H0 K: u. s     display();
% i; F" v$ ?$ w0 J) f* @* ]   }
$ l& q. w" ]- `( z+ D  {}
$ Z2 T5 V3 y% N! j$ B3 \
7 X/ O- f% S3 l! u% N# h! O6 F

% g9 e4 X) [; }( k! a) S下载:* ~4 ?+ F7 u) ~# N3 `
游客,如果您要查看本帖隐藏内容请回复

0 h5 H8 G0 s: @& W2 @

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-7 11:52 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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