搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。. @* r; M" B: F* Z6 i; p
" Q: \0 c. s8 o- x: R1 _- ~9 h9 Z4 y- v9 J- M0 U+ C
6 o3 [1 e% V3 K; Q
/ Y& p% K8 ~ ^3 Y( L
; W7 [. T4 S2 y+ Q
% J% i3 Z7 ]6 Z# ^& xdemo 的代码在这里" b S: h6 `, Y& `; M6 U
: p2 d9 t% W c% |5 _
9 ]" s, i9 G- o7 s$ x0 j A$ f/ X#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器, z. N; ? d/ |8 M5 {, I6 z1 Q
# O4 F @* y5 S4 r8 T3 r5 hsbit yData = P2^0;
5 @! y: B! |# _7 N/ m ]sbit yDLEN = P2^2;
1 b2 V/ x3 f d; s2 i% u$ Z2 `# u9 ~sbit yCLK = P2^1;
: Z$ F0 D' R. O+ s0 ^const int dailyCount = 200;
2 f7 `# }% S% r6 m+ M) W
: y8 H6 n; Z9 f. K8 k. L
8 O, Q# t$ r* b5 e. P
; Z; o6 \' t6 H. Hvoid delay(unsigned int i)- h* u# \" L9 G9 Y, } K$ P
{3 {* u' ?& ]7 s% o; N
while(i--); # G2 z/ z. T( ~6 M* O- r
}+ G% U* a; Q6 z% e
4 H# K6 u: R7 x @: V S
( Z) M% Q% P. z# r6 l. l* {void disp(unsigned int num )
9 ?1 P. |+ V9 \: h{
. B% K8 t6 M, `# }( ` unsigned char i ;
& S6 T! P3 \9 h, D* O* Z% h( l2 _8 m2 k
unsigned char dispA[20];
s# t+ a4 A' E l" E/ ~ unsigned char dispB[20];
) p! h# G( h2 [7 f9 x& I4 B. @9 o/ x
unsigned char num1;' |$ _6 k! k8 e* H+ Y3 H
unsigned char num2;
6 a$ z# @- @' W$ J" G unsigned char num3;
{. |% H7 k* r) v5 X1 ]7 [ unsigned char num4;
) q* i) l% g: }: E9 H6 |$ e: b% Z3 J unsigned char segR[10] ; //右4 [, D8 Z# Q# E# z
unsigned char segL[10]; //左2 K8 t2 X5 X- _- s! U( f) s
3 u) D" P$ }* x- K
//左
& c, R3 o+ q8 v: J* [1 @# b segL[0] = 0x12;
. K b) P9 p2 x+ A segL[1] = 0xFA;, Z8 A2 m; H6 h" p; n
segL[2] = 0x0E;
) w- u/ X3 X* Q segL[3] = 0x2A;2 U7 Z' S" j- k+ L) r/ _& M
segL[4] = 0xE2;
% g a7 P; E. `- H- A; w3 ] segL[5] = 0x63;4 n( Y. ^9 Y5 h- k* @5 k. j/ I
segL[6] = 0x2A;! y/ v! L7 ^1 l
segL[7] = 0x7A;
& ?0 N' @$ L$ m$ s segL[8] = 0x02;
6 C, e5 U+ B- \ segL[9] = 0x22;& V" T# m. X4 ~) u! b& l
0 X" Q8 V4 o- t9 l4 H 9 h2 H- G0 U# P3 Y6 v( X J% [
8 \- l* V1 L. c
//右
8 a# ~* c' M/ \ x6 |/ I segR[0] = 0x88;
; S+ l# z- N! H$ U3 B/ { segR[1] = 0xEB;
" f4 y% U; X2 {2 y/ H8 B segR[2] = 0x85;
/ n: y ^% h# U% H8 [ segR[3] = 0x83;/ L9 F! z/ D. c0 y
segR[4] = 0xE2;
% z/ w, I1 q* M4 X$ Z ?% O2 ` segR[5] = 0x92;6 h4 }; [! R1 I9 J
segR[6] = 0x90;
2 j6 ~( F) C7 b segR[7] = 0xCB;
8 a5 Z+ t6 F# h segR[8] = 0x80;
+ @' J2 C5 i& |) G. s6 `, u' H1 X segR[9] = 0x82;# ?4 e8 k" ^$ V2 ~/ y: \7 m1 c
! ~6 B& { k5 o+ W& a
5 ]- }/ _. L% U/ p# i num1=num /1000;" Q: K. k3 X9 l3 g
num2=(num /100)%10;;
* U+ C; K4 q$ P( l num3=(num /10)%100;;;
% e* f. \& T1 f+ C) ?4 D/ M num4=num%10;
- i. ^6 W+ |: _
2 S* z- ^) G& \0 T% c; d& ]) V% B/ u* V, E6 `
- {$ ?* I5 D! o/ h" j4 G+ [9 b+ f$ }8 r
dispA[0] = 0;
7 Z& D. s& ?4 c4 c: Z dispB[0] = 0;$ A, p: c& g3 s2 o
5 N5 X: H+ |$ C2 D
7 K6 n3 }" V" E, d for (i=0;i<8;i++)
6 T/ f; @8 F. Z6 w; |+ f7 Z8 [1 \ {
& d, I, Y5 U w1 q9 j dispA[i+1] = (segR[num2]>>i)&0x01;
; I! ]9 N% E A$ z4 X; z dispB[i+1] = (segR[num1]>>i)&0x01;
# }5 l3 J: d' {% G: ]9 e9 w% N# W- N
dispA[i+9] = (segL[num4]>>i)&0x01;9 b* f) |& E8 X2 h0 v0 Q4 v8 b
dispB[i+9] = (segL[num3]>>i)&0x01;
+ e, i6 Z/ I; K2 v/ l6 x }/ w# Q- t, [+ C
& u w g0 o7 V8 }
1 s+ y! u6 u% o* }# }% c) _. U
6 A1 Z* ?6 }0 K/ x2 x1 r dispA[17] = 1;0 \3 n7 o- L0 X0 T7 `
dispB[17] = 0;" Z* v& e9 p% \0 k
3 \# M) E; a/ W9 R' y
dispA[18] = 0;8 Y5 Z. a5 U0 a- Z/ Q9 S6 ]! F
dispB[18] = 0;; h7 b8 U- ?+ q; d
0 h1 j" u0 `1 ^0 q8 b
dispA[19] = 0;
9 O' h) f& k: V* c dispB[19] = 0;
: Y+ ^, d+ K) w/ e& j3 g& j ?$ H
yCLK = 1;
0 G+ O+ m# |( ?
0 Q% l- G5 {1 q0 ^! w0 E4 e) W. G9 k
a: |' ]2 r. `1 F* x! [7 ~
2 l9 T( o' e. K0 C9 B( [ for (i = 0;i<20;i++)
7 h6 h' i s; [0 n! U3 K, R {+ R( g0 Y5 x2 g0 _
yCLK = 1;
! `: H5 Q& M2 s7 \+ Z) A" Q yData = dispA; ?( B L( H" P3 j
delay(2);
2 n, P: ?9 v! v6 x) s- g5 S0 g. x if(i>17)( f( j0 r j& B) C# L; X
{yDLEN=0;}
: p0 R& @: G" ~8 h8 G. i% B else$ o$ {6 S7 p3 M
{yDLEN=1;}
3 Y* P: y' u1 K
* i D+ r# [7 {9 A& g& H delay(dailyCount);
( f7 M$ t. ~8 l yCLK = 0 ;
( E' p' f/ ^, v* [4 ]: p4 N! d delay(dailyCount);6 U$ H8 \. P; L$ S5 r1 Q! r, }/ P( n2 S8 W
}
6 D- d8 p+ x6 q4 H3 J, S3 t5 I8 q" e, V4 Q5 J8 j
yCLK=0;
( W( m! s. h- i2 F5 F yData=0;5 A6 j5 [) t& Q
yDLEN=0;! ]" q( O4 m0 c! {5 q, M
delay(dailyCount*10);2 B2 e, ?; N1 X' |* J
1 q% N" `& e9 L. x" L1 W2 d! Y$ K; d
+ }, k' t2 q0 m5 f9 N* f6 d, I
for (i = 0;i<20;i++)
9 G- I# n) Z$ O {
6 a) ~8 c2 \- E5 ?1 j yCLK = 1;, d$ F* T$ _/ Q" L/ C7 |' M _
yData = dispB;. ]2 z: Q# Z" A, X
delay(dailyCount/10);
( y! L. N _( @( }% Z# r& a( a if(i>17)9 T3 P1 V; L( x- o+ d1 _6 ]
{yDLEN=0;}0 [1 l* }4 j" d# b2 m. g" {
else) d8 L9 R4 D* i/ i
{yDLEN=1;}9 Y6 v% M: e9 d0 i. M
# ?0 `. q+ z# ]" C# y* e! U. e delay(dailyCount);( Q1 |! J: p) N( k5 X2 w
yCLK = 0 ;
5 _- H" h) M5 W& o2 D* ~ delay(dailyCount);
7 `1 c5 K3 C' l8 z' U9 s }
W \6 p$ v6 W5 l3 n9 w
6 D, R! V$ B( ], \5 D- F% a yCLK=0;+ G7 v& {9 c( N; W6 D
yData=0;: H" y1 ?7 {& |8 H8 w3 I5 }
yDLEN=0;& T9 C7 ]+ ^( S- j9 ]5 J7 c
delay(dailyCount*10);
. I( M( [+ A) I$ u# {6 j# ^ W}) Y; ~2 w9 i& S- a' y2 i2 d. r
$ R' M& k/ W+ f7 m3 p% n7 B+ F s. a. A, ], p' v) e
6 F: ^; z/ M( C
9 C6 V7 {. R# B5 m) }
void main()
. l' m' n0 E7 W; b5 L{' X% n# S* a) }$ E) D/ H
while(1)
% O; ~: R) }* |) r {' n) Y% d& {) V/ _3 V" _
delay(4000);: a. N3 h& ~7 x- o7 R$ [! L
disp(0);
6 z a; ~' v) p* y; T! `5 A } 5 A7 @9 h, k! T- \
}- v6 t& g9 l, Y8 K8 ~6 n2 I! |
7 E- T0 G* ?+ P0 H W* p' v i: Y; }2 x* X3 y
|