搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。4 j0 f2 l: J3 e4 z9 m: V7 r7 e' O
6 J9 i! O6 l5 L! z& K+ p1 z, n; V" u3 H+ [
( ~ n- w) N F" }
0 y) k# P2 p% S( O, E
8 n% Z$ Z( V; N# s7 ]* w4 g8 `
4 }& n1 T" n% Z6 ~/ u; Q3 B; E0 `% w# }, m
demo 的代码在这里
. H1 q5 r. F1 b7 b
5 d' \* ]8 A; V; }+ ?' r7 @+ y3 ]. z% `
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器/ r& k& R, ?2 Z
R% N9 c' y) p. ?5 N6 vsbit yData = P2^0; a( D0 R& H7 |& u! \. F# j1 f
sbit yDLEN = P2^2;6 {% u9 a0 t. {7 n+ ?0 c, C' L
sbit yCLK = P2^1;
" \& x( x# N- E* X" a! t4 K6 Iconst int dailyCount = 200;
" _" `1 W" L/ F$ M2 l8 |6 j$ f9 Z# v
9 j' j) k$ P" n- u
% T7 Y& A2 X# n# T8 ?% @void delay(unsigned int i)
( U+ X( \- l" g9 ] G{. d+ A2 L& [' P _ C z$ Q/ H; r- C
while(i--); 2 x! F1 @( [: _' f* w7 Q0 d* c# A
}
2 m6 g" w: a# X o! }+ ~
& G/ u+ O4 U0 Y8 m1 o, K' Y/ `) l4 k5 |
void disp(unsigned int num )
/ S1 L# A% |) p4 u8 L1 n{/ I2 J- x6 v# K7 p( |0 X
unsigned char i ;
3 X5 W, j+ u/ v# v3 W1 _2 e% I" V% N! J
unsigned char dispA[20];( ^; y ~( v! `/ p* ]
unsigned char dispB[20];
( e; Q6 J/ x, W% Z7 r! u9 i9 g
' A! s9 G) F5 R' R. b! | unsigned char num1;
$ U! d W; T+ |1 @& {) o" i4 ^ unsigned char num2;
7 O% c# w4 t6 { unsigned char num3;
- D% |! N) D* p l unsigned char num4;0 E! A0 e4 Y/ [8 s. }9 o
unsigned char segR[10] ; //右
/ _$ h+ n: `4 E unsigned char segL[10]; //左
5 }- ~2 n3 r# `0 I( f1 l) Y& X3 h
//左 # ~$ f0 n5 b% Y- O1 I. l( [$ u$ I* _, q7 K
segL[0] = 0x12;' M8 K9 t; Z3 X7 b6 F
segL[1] = 0xFA;# V3 k: r0 W1 c1 I+ S- ]
segL[2] = 0x0E;
: q; D/ J, u, C segL[3] = 0x2A;
% P J+ W% V# h& U/ D. u0 s segL[4] = 0xE2;" I% T' {- v1 y! j0 @. ]8 w I# }
segL[5] = 0x63;* C! M. c7 H: B/ _3 X% E. r
segL[6] = 0x2A;
! c- j' F* b- U+ M; B* ~ X ^ segL[7] = 0x7A;
}. @" u" }- Y+ d segL[8] = 0x02;
/ U! p& A2 ]! L. X+ r, T) |2 i segL[9] = 0x22;6 s4 T3 y5 Y: v$ {5 D2 I2 K
* n( x5 C0 q( d3 d5 C9 I
1 ~3 ~4 P2 R9 q9 v) r ' T3 @3 J* C9 X
//右6 s A& s3 P" D- P- w3 |
segR[0] = 0x88;
. H: e# `3 d! B" k5 N# y) I a8 q segR[1] = 0xEB;
/ |& t4 r9 g2 c) W% p segR[2] = 0x85;/ f9 N* ]; H& ?5 B: ~9 W, _/ [0 M( ~
segR[3] = 0x83;
- Z7 m0 J( \4 O3 F" T6 m' b segR[4] = 0xE2;0 D$ [$ T- a- Q7 D6 j
segR[5] = 0x92;+ O6 J: @: g% w4 c
segR[6] = 0x90;
* T. Q) f/ f0 O+ i I" @ segR[7] = 0xCB;
, d, B, R2 f h5 P1 i. H segR[8] = 0x80;4 Z9 |) j9 X5 b3 p! b
segR[9] = 0x82;
) k0 y) V9 A, B" w1 _% r
2 r2 K* ]9 g* l6 @: v' y/ r& b7 x
% M% z8 h. R0 u num1=num /1000;
' a" k, w: Q9 ]: H% V w0 J num2=(num /100)%10;;3 b- J9 P6 Q5 p* b% _" n
num3=(num /10)%100;;;5 X$ r" B( }7 K- u/ d7 Y }
num4=num%10;
3 I* l8 G4 x+ `6 W- S
( r3 Q* W& i: N, m' b% ?4 g) D& k C- K
: Z4 T" a' l0 R! Z( B6 w' Q Q9 v6 i. [, X' p7 k4 X0 S* h5 r Z
dispA[0] = 0;# ]$ {* H( n& r/ l: ]
dispB[0] = 0;
3 ^) y1 O* q+ \+ A6 `+ v' y$ c: o! Z) l
" i- C( m& j. a- W2 Q4 {8 X for (i=0;i<8;i++)
# Q9 W6 N' a( @5 _9 j' [ {5 m1 R- N0 f' y; @6 [5 T& U( y
dispA[i+1] = (segR[num2]>>i)&0x01;# ~( [; f, H5 J+ r3 i- U5 H- _
dispB[i+1] = (segR[num1]>>i)&0x01;
) u6 @0 x; L( T3 o+ z+ t$ Z, `+ u k! p4 F" f. c
dispA[i+9] = (segL[num4]>>i)&0x01;) J4 o3 Y1 N8 \
dispB[i+9] = (segL[num3]>>i)&0x01;
: |5 }3 v* q! ^& }% n" a, L& V }
# z) O2 q. T: x# `* P0 R
B9 }5 _& k$ U8 D5 z' _0 [! z# W
]3 ?. T0 Q* {) i) r8 P6 t) K/ [. h4 w# X
dispA[17] = 1;
' `' l8 C% _ O4 x8 ]; j1 n dispB[17] = 0;
5 Q8 X7 [$ a5 Q1 z7 g: ^" ~
2 \# p" y$ ]( x3 n dispA[18] = 0;
. N" b; u& }$ {+ Y! A. c dispB[18] = 0;- }2 e0 v. h- {& y; B Z7 F
6 q3 N( i; ]$ Q
dispA[19] = 0;& H! E) a6 X6 }. Q
dispB[19] = 0;" j( w6 {( F8 j8 p
+ \) t7 M9 |* b5 y/ E
yCLK = 1;' e$ d" F1 I0 Z
" R( Y' `8 ]$ N& j+ F( M
, u4 B. \7 H3 e. p) h
( [) H6 _- H) E7 d# H% U0 l for (i = 0;i<20;i++)
% N% p( E3 ^9 N8 ~9 I {( u! j) K8 Y! C8 h
yCLK = 1;8 A& ^% s+ v5 D7 d( c
yData = dispA;1 p7 ]* a. x b* N; ^
delay(2);* ~* Q! c0 v% e$ v# u8 N
if(i>17)
; f# z: m4 d; n; I: x0 ` {yDLEN=0;}4 O# l- V% y+ P k7 d
else
9 n6 Q/ [" u8 g+ Z0 D2 U5 a {yDLEN=1;}% {* |/ p/ K+ B; j, g% A, @. t: J& j
% k3 u2 C; I5 U( @, n9 z c! Q delay(dailyCount);3 B4 [! H# x! F" P/ O' @+ M+ O
yCLK = 0 ;
" Z- o1 d$ W9 r$ V+ c h" e0 V delay(dailyCount);
) |; C! O" C9 @$ A5 y% T7 f2 a }
. N$ ^6 Q6 e* ~$ I( x4 R" o, a2 S( a7 ~5 S! [% }1 Y
yCLK=0;
4 C9 u) K$ W( j" W: @6 W yData=0;
1 `2 `/ N5 h' x, L$ K4 R yDLEN=0;
4 e8 ^- p5 ^: @, v$ u/ ^8 }+ b$ Q1 z delay(dailyCount*10);
$ v6 O7 s6 V3 [% R% O' h* E ^1 P 3 F8 v, N. K, K5 F
2 [- b! I4 ^1 y& M; O2 b6 y( ^
/ I- Z I5 |% F for (i = 0;i<20;i++)
# P, s# l, \1 e- u. E: H {& V5 B8 V5 j7 l& ]
yCLK = 1;- z3 Q8 u3 _6 z
yData = dispB;
" F" O$ j. Z5 z3 F& E d" s& Y delay(dailyCount/10);
4 G: B$ B: p: s E3 F( w if(i>17)1 f0 r) @. x. r3 o! H6 d
{yDLEN=0;}3 l. S. Q4 N5 I E' p7 L6 d2 s
else
9 x. L& |; j# Y H7 Y7 z7 F' l {yDLEN=1;}- `" S" c/ q1 H% s
$ p4 t! C7 L. b, W h0 u, z
delay(dailyCount);6 K3 V! t* t7 ?) p U3 b6 l1 | \
yCLK = 0 ;# |) ~9 }- {/ Y0 X9 m
delay(dailyCount);0 e ?# [. x. z. p1 a1 P1 \
}
, J: w7 g6 @. x3 u5 m
, `6 m9 G6 c) a yCLK=0;# b8 D8 n& s( P: V
yData=0;
4 m) `7 |! i% L4 S7 H5 i( Q yDLEN=0;
0 P0 y2 q3 q! [$ a8 {) m' L, t delay(dailyCount*10);
* v5 N! D9 o9 v6 @- W! B- B}& m7 S0 Y% X9 ]0 P
* P {4 q- U+ S: o$ @
$ D6 i% u! y0 H+ r D/ X
4 m/ j' V/ K; {* M. p' g9 L+ i _8 [5 O: I, E0 P( X
void main()4 A' P0 E2 q+ a: `; F9 t' t
{
6 I t! a, J) P. P while(1)+ @" p5 @6 E: S, d% ^% ?: m- }
{
7 z6 a$ }+ Z9 L9 m delay(4000);
~0 n* }9 k& T disp(0);
' u# }; T) p5 E/ }8 \/ K } 1 E% Z5 F f% C2 t' ?; [8 s
}' r( Y1 P0 u; v, U5 W: F
7 k. r$ p0 H4 M+ R$ C" ?, \) X/ i4 n
|