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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
基于51单片机的74HC164驱动六位数码管动态显示程序, M( R5 }% T) _/ [

4 f( h( d; M7 l6 e: k5 V# U8 Y* b7 j7 o7 k

+ X& v* N( ~2 l' V#include<reg52.h>
9 D8 L* |: i' H; y) M: U4 V#include<intrins.h>
' n3 Z3 h+ q! ]* r# _0 z# S0 `* k$ c1 _
#define uchar unsigned char
& Q2 M- }: c( n( k/ |) ~#define uint unsigned int
* n7 O* Y, b, D  e' W8 v0 o//74HC1647 c7 \: O+ E( ?7 g
sbit CLK=P1^0;        // μíμ&ccedil;&AElig;&frac12;μ&frac12;&cedil;&szlig;μ&ccedil;&AElig;&frac12;±&szlig;&Ntilde;&Oslash;′¥·¢. B( p; S) k" K% G
sbit MOSI=P1^1;         //         êy&frac34;Yê&auml;è&euml;2 R1 B8 z0 |6 P7 y- h0 _

; `* F# {" {5 k$ M* Cunsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,& B5 @7 o3 J6 ~1 ]$ N
                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //12ò&otilde;êy&Acirc;&euml;1ü' Q' ~9 ]* S- _( W9 ^
unsigned char DS_data[6];
: a: m( g" s0 d8 h! v# R0 u/*****************************************************" ]0 v& [) c: o* s
oˉêy1|&Auml;ü:êy&Acirc;&euml;1üé¨&Atilde;è&Ntilde;óê±×óoˉêy6 e* v7 ~; E  t
oˉêy1|&Auml;ü:&Ntilde;óê±1ms: u8 K) i3 L" ~7 {

- s+ {! R0 y" m***************************************************/
2 z: B! u; G$ Z% l7 z" kvoid delay1ms()7 u- P% w0 ?# F  X: k
{1 S2 O' A1 m& {
   unsigned char i,j;        , W; y1 x% p- I2 G) E
         for(i=0;i<10;i++)
4 {) ~$ T9 t& f6 R4 w5 ]$ R: D0 P          for(j=0;j<33;j++)# V# X; j) X6 V( Q
           ;                 " q" n- S3 `8 N) o
}
! }9 o* W2 ?# T& h- G$ d1 u2 Svoid separatEDAta(unsigned long dat)         // dat&Icirc;a6&Icirc;&raquo;êy3 a- W3 p+ ]5 B8 U  Y4 R
{9 v7 P5 x, |3 D& k9 u" A- ^1 U  d
   DS_data[0]=dat%10;0 L. U( h4 H  x; R2 H9 x' @1 l
   DS_data[1]=dat/10%10;
* ?# g7 h, n8 g: J$ P+ Q5 Z   DS_data[2]=dat/100%10;
3 u& Z- y% \  y/ n* b1 U9 F' e   DS_data[3]=dat/1000%10;' D* b5 S: K7 ?9 L* T' U/ `- T
   DS_data[4]=dat/10000%10;
% ^( g& `" H4 z   DS_data[5]=dat/100000%10;2 M) e0 B3 V8 I8 E/ s7 ]( k- B1 R
}5 M' w9 L) I4 v2 U
void write_164(unsigned char dat)
: s& b) ~9 ?: g( j% d2 [; [{) A* k# l5 k& I  a) K
   unsigned char i;/ |# T+ o8 c6 `5 j: ~& e/ b
   for(i=0;i<8;i++)
6 E8 i: I2 Y6 w9 }5 G  N6 _   {# G0 s" ~- H2 q6 l. U
     CLK=0;             . E: x7 ^  r& L/ }6 a$ W) Z5 p
     if(dat&0x80)  MOSI=1;
: S4 S" E9 d  z6 e     else          MOSI=0;
! v8 W6 B# o6 q     CLK=1;               3 v) E& J" k6 [
     dat<<=1; + ?$ X6 k7 Y+ @9 }
  }
  i& s6 D0 R" B2 {+ I7 S1 r}
& L% u; t& H/ X/ e, Q0 V) a
' }  Q( t! ~: F5 ]2 v& F1 kvoid display()4 U, Z+ v* |0 P+ N$ C2 u. C) T! X  f
{
6 ^' M9 @" t. x3 ?9 J5 O7 U   unsigned char i;% `9 M3 N9 G* m0 ^) c: J" }6 J
   for(i=0;i<6;i++)" G. A) s8 ~7 N9 I  E2 O
   {
2 K& D/ |! z$ o                        write_164(Tab[DS_data]);) w, R3 g, [0 h: _7 T
                        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
" K- [0 _2 O" Q+ X5 ^6 |" z  ?4 W                        delay1ms(); 9 A$ s: H5 ]3 f7 E' c
                        P2=0xff;        //êy&Acirc;&euml;1ü&Atilde;e' d3 C- {0 c* W
   }
6 M/ f" L8 N! o. ~
- n, l; b& S. c. I5 V  s. h1 o}
/ ]" r! t$ ]% I0 O
2 ?9 R) R/ j  x5 I& i- wmain()& D  p' [* H9 F0 P7 k. G# j; H9 {
{% W& }% ]$ l9 O3 C- }
   separateData(654321);
( |1 U* Y2 ^; }0 o+ H4 Z   while(1)
; H( @: I% e9 ?  {+ m; g   {
+ `0 T! t5 O  }0 L) ^     display();
" n/ W7 @: C" F   }- ~3 J9 |) o/ d* X% [* \7 J
}

! q# S* B' e3 W: k& J9 y$ Z
+ O& H8 q; L, _* S: |

  i( N2 ]+ @! }1 D' u$ ~- R8 }. e/ e) t* m8 A

8 U: G2 X! C2 u8 M7 m8 W
, N# ^9 }/ t/ _- _" Y
#include<reg52.h>. l1 r; C: e3 o; d
#include<intrins.h>9 y' a; O! x. r9 [  d: O
) R" k+ [3 Y7 C; u% B
#define uchar unsigned char
4 t5 O: ]) B* [" |  Y2 n3 `#define uint unsigned int
( `/ b8 r* q3 c7 T+ x7 d9 ?//74HC164% X; Z1 Q) V; j  k; v4 d
sbit CLK=P1^0;        // 低电平到高电平边沿触发# \6 ~/ v3 y/ `: y
sbit MOSI=P1^1;         //         数据输入
$ `8 T, F0 D" x" V
+ l1 Q( ]+ O) U" p) Vunsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,: [  P  W: ^& U% ?3 l. ?: _( L
                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};        //共阴数码管
. e& A. Z( Q$ W0 `0 k. l# Sunsigned char DS_data[6];
3 [' U4 u2 X( H, \4 G/ R( z' b/*****************************************************
2 z" A& x! }% q( Q函数功能:数码管扫描延时子函数
/ q( p5 {8 F5 S- K% [函数功能:延时1ms
2 m: w# F* g9 i7 n8 Q  o* }3 J1 B+ Y# N2 Q
***************************************************/
- L& W) C* ~  g0 K2 Avoid delay1ms()
, {5 r# ^8 E: c{4 T9 r6 Y9 V+ J$ `: d
   unsigned char i,j;        ) `- t7 A! P7 M" M! R1 b7 X9 v
         for(i=0;i<10;i++)
- C& `4 v3 `3 K3 M* a          for(j=0;j<33;j++)' @% T. v$ |$ v
           ;                 
  u% @. P+ B2 m0 d+ c6 J, e5 X3 I}: E  X" h$ b: e, R6 Z
void separateData(unsigned long dat)         // dat为6位数$ O7 _2 a: U! B
{
! l  `' v* r( n  w2 t* K- w   DS_data[0]=dat%10;
7 J, J& e( L+ g   DS_data[1]=dat/10%10;  `8 z* p9 |( V# Q6 ~- z7 s7 `
   DS_data[2]=dat/100%10;
- a$ ]: Y  W( o3 @0 I  s( }! b  M   DS_data[3]=dat/1000%10;
* R$ a' T% ^4 b$ Q# h   DS_data[4]=dat/10000%10;+ d3 G  G' V4 X7 O9 z! o
   DS_data[5]=dat/100000%10;% X4 n5 o4 C0 s
}/ |1 l1 r- y+ F+ G3 T
void write_164(unsigned char dat)
, z/ ~6 z) j9 \* f3 M! B{( x/ `. ]* H7 q4 l7 A" f9 k( V
   unsigned char i;1 s; t3 ?7 q9 B$ W( O! u
   for(i=0;i<8;i++)
0 K: }, @" f5 u3 b1 u+ s0 h1 [& s   {4 D- [7 Q: z( K- t% j# A, D* w
     CLK=0;             4 V. P" ~8 H2 u, C+ a) o$ J
     if(dat&0x80)  MOSI=1;' M( b4 O2 H. {1 v( F& T4 T
     else          MOSI=0;
0 N& m: W2 U/ ]: \; N     CLK=1;               ! L5 |& Q1 B. ^- T3 ?/ a
     dat<<=1; 0 U: b% A( K1 `
  }
" d( {8 q& B% D# x: {& ^( X' ?$ L}+ a% T! b# O3 `' z( P3 T

2 N1 E6 G5 X$ ]. V+ m8 k4 u0 gvoid display()
9 y5 M5 @5 e: K6 ?# s{# y6 P4 r3 s' c
   unsigned char i;2 F* L3 S! P3 r8 b' b! ?+ J
   for(i=0;i<6;i++)
3 r# Z% B4 j7 N; E' I   {4 H( s  k9 n, y* e4 k5 v4 h
                        write_164(Tab[DS_data]);. R! d. M( ~% a$ B0 L! j3 A
                        P2=0x3f&(~(0x01<<i));     //数码管位 共阴低电平选中seg1对应P2.5 seg6对应P2.0$ @* E% d) ?) p- U- T" ^
                        delay1ms(); + A6 q: l7 W0 K: N  ~
                        P2=0xff;        //数码管灭: b- t( Z& c; ~! r0 s
   }  j6 o* v& c% g% D( s
; k( P& S6 v$ v- \3 D" B8 e2 ~3 a) ]
}/ v/ a: l3 S1 J0 ~- O) E
7 ^9 Q4 r7 V& o9 d; A2 a1 A, H
main()
) H' a3 b& Y  n9 [/ {{
6 V- w1 v/ R, ^/ I4 W. B   separateData(654321);- i- k( h( U- B& Q+ Z" e$ i
   while(1) & O: L6 ?. t" M
   {: S' ?; |2 X: l; H9 h/ C
     display();% B  ~: K: |# h* c) ~& @8 \
   }
9 V% Y5 ?- Q; l}
, D2 j: T) P( F) ^( x/ x
; h) O  E( d) R# J

  ?6 H3 j/ y9 W; P+ D下载:
/ t4 X8 _( K4 `5 y" q$ Z
游客,如果您要查看本帖隐藏内容请回复
; T0 F( b# V  H: t' J" I

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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