搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
) A7 w( t+ _' F' n' v P: e2 h1 `, j+ s* A. q5 d
$ A' M; g1 q9 |% |8 m, \1 \5 X: t
+ ` a' |4 D" u8 g: [
5 | G6 R" Q; L* v! G* X
: L' M# \) v6 T! `, X
8 p9 n5 Y: L% ~1 r/ Odemo 的代码在这里
/ B& Z! D+ ?$ l- C% D) t& G: w3 Q9 z& @! P Z, F7 a: R' B
* e5 i$ ^8 B/ ^9 k- d0 }#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器0 k( ?3 N' \5 }7 Z- G
& G C% h; |- X2 c! W1 A# C0 x! g' C
sbit yData = P2^0;8 Y- K! m+ D9 t6 K
sbit yDLEN = P2^2;# n* z6 A8 m \' [" A+ I) G+ h! z
sbit yCLK = P2^1;
' w- C2 i. ~4 f, \const int dailyCount = 200;1 @" |+ Q' \4 T6 b; q$ ]
. D4 |4 Z8 b- Q
1 i" e; u; P' y0 T B4 r/ ]. d4 l& j: ?4 c5 V
void delay(unsigned int i)+ v2 G2 h& C" ]# M% q
{
) c3 ~7 ?( Q. m8 {% e2 M4 E; X while(i--);
* g# T) v8 X5 O}
9 f! y5 K2 g1 K; z+ g1 Z n& K. r) W0 E; I6 m
6 Z& h. c/ r! R. Q! }' \void disp(unsigned int num )% n" h. a7 A$ I7 G& y% K6 [9 J
{+ c9 d$ W$ i+ O& N
unsigned char i ;
$ J" P" A( H& c- a* d1 b0 \: G% f' \$ [% P8 m% c
unsigned char dispA[20];
; F8 I* V4 W/ C5 D! \% v unsigned char dispB[20];
2 X5 F% y% O) ^2 G! v9 j; T! G; v: i/ q# I
unsigned char num1;
, s8 Z6 y0 m+ ]3 D O1 ^( ^4 E5 W unsigned char num2; " M( \) G- P1 ?' z3 F& }7 l
unsigned char num3;
( \2 o6 ^7 `& R4 z1 {, L/ Y5 R# f+ P unsigned char num4;
0 V7 L. g6 k1 d0 q8 Q5 x; u+ \ x unsigned char segR[10] ; //右
5 L/ Z6 y1 ]4 p# [$ p B unsigned char segL[10]; //左
! Z" Y: T: Q, n d$ Q* \9 Z' W* s3 i
) L9 D. r6 L( J- r! S9 G //左
. c5 d$ P; h7 P0 O3 n& I! N' W1 E segL[0] = 0x12;6 k; [, E& A- t! @1 a' n) p$ c
segL[1] = 0xFA;' W) ~1 u8 Q+ _& ~
segL[2] = 0x0E; [, z( R( B9 |- B1 {% I, Y
segL[3] = 0x2A;
1 r. G3 ]( H8 ~. `8 o: `; `0 S segL[4] = 0xE2;
5 A- j7 s: k* i, M segL[5] = 0x63;
# N/ s5 i3 ]* |1 l3 w- Y' z segL[6] = 0x2A;
& y6 E, m( V7 } segL[7] = 0x7A;8 Z3 \; H( X: `0 Q
segL[8] = 0x02;7 {' A& L h9 o1 }" p) j2 X. u
segL[9] = 0x22;) @! b) O' p0 s* W3 l2 y- `
% p- U! ~7 m6 ^3 M$ N: t
$ x) U! ]6 w7 C C& \6 x$ S ' p# X$ j2 P5 Y! S
//右
- j# v9 Q( C4 t. o segR[0] = 0x88;
: Z" |. n3 B* Z3 P- k segR[1] = 0xEB;. D. S: i. M/ y$ Z& h1 U' ?* W
segR[2] = 0x85;
/ q3 r8 Q- C, R# c- l segR[3] = 0x83;
9 `# v3 d3 p; f segR[4] = 0xE2;
- X5 A9 F) i, h segR[5] = 0x92;
* r( K6 R$ Y) }3 W, d8 g segR[6] = 0x90;' `- E3 y* \% o3 I; _# m1 E; u
segR[7] = 0xCB;4 q, z. O. G2 d7 ]6 }" E% D
segR[8] = 0x80;
" n& u2 {) t d9 i% [$ M) K segR[9] = 0x82;9 }5 u( Q" a8 P+ J7 |
) |) z& r2 D( `, ]! K5 `. S; z 1 w) ~2 K+ U; v2 F
num1=num /1000;4 |/ ?3 f) l+ H& D
num2=(num /100)%10;;: ? n% @: R1 [. w2 Q
num3=(num /10)%100;;;" F6 e& S; j/ V% @) D8 r! D
num4=num%10;' j7 j o3 P8 Y8 _ i" @: G9 t* O
% V3 ]) v) j3 U+ M3 H8 \4 q/ Y
2 ?7 c' a7 e/ c4 a
' F/ [5 _1 q: m0 P. |. t" ^" r+ ~/ a. h
dispA[0] = 0;
, O& L+ Q7 _: d" ]# G dispB[0] = 0;* z9 A! b/ s9 o7 F
. u* Z& x0 O3 N' K. ^9 @5 R# q
* T, e* n# q6 M; l3 X for (i=0;i<8;i++)- x8 t6 w: @ O& s5 X
{
) ^- g6 G$ }" a6 k5 |& B dispA[i+1] = (segR[num2]>>i)&0x01;) l0 _+ P% i6 ~; V6 _
dispB[i+1] = (segR[num1]>>i)&0x01; , v' t, r% b4 `. `( N I' v* }3 Z
: N& r3 S2 j" Y3 q( d+ ~ dispA[i+9] = (segL[num4]>>i)&0x01;8 w6 K1 j9 |7 v4 n9 m# J' C
dispB[i+9] = (segL[num3]>>i)&0x01;8 z& _ J8 O/ I; v( g5 ^7 F# w
}
( I4 y J& J/ X% k6 ?* X0 y+ o
$ T: o% N+ n, R) M4 L* P9 \- b% M8 O% T9 ^( {, p& k* |
$ ` }! p6 f) ^! o dispA[17] = 1;
# U9 A2 r g) G+ L8 }9 e dispB[17] = 0;
& J$ m; s' r, Z5 C M
6 S8 ^3 t8 {2 i dispA[18] = 0;$ U i! k6 f8 r, U
dispB[18] = 0;
: p$ c9 r+ o. {
' h- {8 z8 N9 C2 s& h1 Z4 \ dispA[19] = 0;
1 g+ o1 Y0 y* B2 e( | dispB[19] = 0;1 L- v) b8 _9 V7 V9 |. i
% H* f8 K& l7 T! D; E yCLK = 1;
8 l9 q+ d, i ]# C: h0 x( {
6 Q4 T8 u% V7 I! R# U9 f5 S+ q9 l( a* w5 X4 w
+ N* B2 J& s* N% e for (i = 0;i<20;i++)
~) H2 R3 [# I9 V& k" p {
$ c ` X A2 Z- P yCLK = 1;
, M* W3 d8 I; P1 O6 c yData = dispA;5 o: q/ I( j/ P1 M0 ~" _
delay(2);
, i: d- {) f8 q/ J( l8 F if(i>17)2 }) W) i# Y! Q2 d" B! m
{yDLEN=0;}
& K8 {' T' u5 L$ _2 `/ ^ else
# n/ ~) K7 N, Q' B" } O; f {yDLEN=1;}
$ J' U2 E W/ E$ d; t
/ {8 w% Q$ L& {8 q& U, T delay(dailyCount);. Y, V5 ^: q( l/ E& _
yCLK = 0 ;, J) t: j& x+ P
delay(dailyCount);
$ {2 m! H- J% C7 u1 a5 O/ V. H/ B }. ?- w# ?( G5 d6 _: b5 f
& z4 U* Y) K* C! M* S* L$ x yCLK=0; ?0 y+ H- _$ g3 t, \
yData=0;- g0 f X" \; t. c I, x- f" V
yDLEN=0;
5 [" B1 ~, {8 }& x9 W delay(dailyCount*10);& S8 L) c2 I3 o r8 O
9 P: S" K% l. ^8 U1 c5 e1 N
& ]" r' R. i+ W4 N9 R+ {, W
8 d& T0 s5 h, e9 m3 D, \ for (i = 0;i<20;i++)
4 T9 o" {1 y' x9 H; G( n {
( ` Q8 L9 |' N5 ^! L yCLK = 1;
1 ^( s2 s! E" f0 U" t6 A yData = dispB;3 B) ^7 y2 v8 t4 w1 h/ a6 h
delay(dailyCount/10);$ }* v8 R4 G9 V9 \2 N1 K
if(i>17), }+ L7 h; [+ t8 V
{yDLEN=0;}/ l& m1 N& R/ h5 |7 @
else
3 G4 _' t+ |. c1 L; T$ G9 b {yDLEN=1;}
: L2 D2 b# {9 t9 A& q( d* \; z) @% P1 o* Q; t; D
delay(dailyCount);( h/ f; M. Y1 ~/ {2 y2 C# U; `! b0 ^ o
yCLK = 0 ;( I j4 p5 G4 D/ k3 u0 I U4 h. _
delay(dailyCount);/ g O( @8 u/ k$ a. N. H. F! B
}
5 @% N" ^& m. M7 D( o6 D! k. b- K9 S4 `( s
yCLK=0;
6 H- d7 _8 S) M! _* P+ y yData=0;
, q" c( ~( I: f( @9 i& v8 D4 ]) r/ }' U8 f yDLEN=0;
4 d- S' ]* J- t delay(dailyCount*10);
. w5 J* @$ O& D+ k1 T}
- c$ |( D2 v3 Q) P% r: {
4 n7 S, A5 \0 y- Z" I% z; i1 v7 t( c/ ]
5 H1 K( l! B: z0 r' C8 i) Z
1 `4 ^. V( B1 T2 G$ |: Y" yvoid main()9 L- u& w0 N& I5 P, ~8 y* m, H& L% I
{
: f. q1 o, n4 E# Q$ S while(1)
2 l( k" K; U7 n {9 d, a O) p N8 U* w9 h, K6 } X
delay(4000);
! |3 \3 U4 Y$ V+ g6 v disp(0);: _0 E: a9 C3 u) G: X
} # R. H* |1 `5 r
}( Z2 W5 [$ z0 @9 K0 A9 R+ d
9 W# j) T5 A" K6 Q
. Z+ Q) h [8 h$ x |