搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
' s- c, S* R1 g, w
& s# Q0 w5 n4 L d; {5 D3 o+ {, X3 }$ B/ r7 r7 p5 x
2 s( w1 q* J) M* H: w
) v1 d& o% }$ K8 o) s
r4 c9 X4 o8 t* L# b9 x8 u0 }) J
# f" H5 ]+ S; U8 ^' R% Tdemo 的代码在这里
: J; e) v3 d4 o F7 h1 v5 P) r" A* _" ~3 d( }/ D6 Y& t5 D K* D
0 K( w7 X5 M! I4 a1 A7 d7 Y#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器; P5 H* \5 v1 o( r! b F1 C
2 B6 c, G7 h2 P. d7 I
sbit yData = P2^0;3 o# k5 _5 d) O
sbit yDLEN = P2^2;9 h- J1 Z1 y7 s9 _0 i$ H' P
sbit yCLK = P2^1;
+ j# U4 o9 H$ g$ B* H- _: m$ I( }const int dailyCount = 200;3 Y( A2 c0 _$ f
2 F% _' D$ j8 s3 t9 Y2 r1 f6 F& W) d
. h& ^2 c* N" l& B0 i' g
& K; l. t3 N7 J. d; H7 Gvoid delay(unsigned int i)! p; _( ~4 p% f
{
4 l' Y' a! \' T/ |/ B4 J while(i--);
% Y& ?& a) p/ `0 \}( N' N6 C/ F. B+ Y3 k8 @; N9 J
# N; \ \# }! q3 Y9 Z0 K5 ?
7 _7 }& p* Z9 Yvoid disp(unsigned int num )
: a' k# D. Y6 ^1 H! s6 b{
2 y: f! k9 o' y$ J6 H- {" |$ D unsigned char i ;
/ W3 q0 |) S1 Z: s" H) f, ]! i5 T' ~9 P0 e+ [, G% `6 x0 X9 e7 n0 i
unsigned char dispA[20];+ v+ w6 e/ G# O( f; i
unsigned char dispB[20];
0 j- |8 Z2 D& G, A" G" O. P5 l0 b' W# @7 Y1 j
unsigned char num1;
% |/ b5 r5 d% T9 X9 f0 z unsigned char num2; 2 t S @( \$ Z+ s
unsigned char num3;4 Z( @# B" E4 `/ q2 Q& d; |% Q5 ?" q0 S: Z
unsigned char num4;0 ^; K6 k1 e. b/ I6 A
unsigned char segR[10] ; //右
) \) n/ t" w6 [8 q8 C2 k# ~: Z unsigned char segL[10]; //左% A! S- I$ ]. g9 [& R$ B) E
. p* h3 C' n7 l$ |2 o5 b
//左 & k5 v8 l& L" ^1 {( J6 ?8 m
segL[0] = 0x12;& P1 B" G$ J0 a
segL[1] = 0xFA;* S, X7 A0 @! W8 k' p
segL[2] = 0x0E;5 X6 T: ^8 ]. _9 ^) p+ j* F9 {
segL[3] = 0x2A;0 W8 @' h" Y) E: _5 M, ~
segL[4] = 0xE2;7 _3 y& ?' Q" q6 Q1 |( f+ Q
segL[5] = 0x63;
/ f% l$ F! Y v- V) h segL[6] = 0x2A;: s$ ^. T% h% F
segL[7] = 0x7A;
3 e! d3 c H& C1 `; Z! I6 W6 } segL[8] = 0x02;! f/ x2 _# x# o
segL[9] = 0x22;
9 i# A4 b; N- C. {8 \+ i; h 1 J$ P$ p/ S+ J% I U, s) L& n
5 F, _: E" U% |8 Y, ^5 p/ {+ b
" @" f5 h" `4 Y, p, {; ~ //右
7 Q+ d9 p5 I/ K, E% c3 q3 y. | segR[0] = 0x88;/ K7 S: l T( t! ]+ N ]
segR[1] = 0xEB;
- A( ?# k8 n( F* V4 Y segR[2] = 0x85;
; l" V; H( V# F segR[3] = 0x83;. q1 Z" w1 C }* r& U G' a6 R: U
segR[4] = 0xE2;+ j/ F2 L* ^: X; G( v
segR[5] = 0x92;
- T' t' B6 E3 _6 n segR[6] = 0x90;
8 o3 Q) G! P4 u9 i9 L Z$ d! J segR[7] = 0xCB;4 j# S) ?$ A" E
segR[8] = 0x80;" n* |( n4 C$ b+ C- a
segR[9] = 0x82;- P& m1 r; I& n; d# f/ y. Y
2 y2 j3 E( F( h9 ]
" W s6 @, z- b& f2 f( |
num1=num /1000;4 w4 H2 b. N/ O* [% z f
num2=(num /100)%10;;) p% ^: [9 n- H* i1 g2 w0 I
num3=(num /10)%100;;;
! x$ v% R! K. _# Y9 t1 M9 b num4=num%10;
% w) X( V2 F- ]+ E- C: _$ k+ V1 Y' T; ^* d
) A5 F' \$ P3 T0 a; D. r
! N) R: T/ b- d4 z4 I9 i3 F# g) C2 U
dispA[0] = 0;
3 t/ e. n& L) s; R' q$ t# ~8 Z dispB[0] = 0; ~; z$ |- U7 q/ `
) K R0 Y7 v! ]& E2 v
+ A. Q5 E! b& L( a' R
for (i=0;i<8;i++)
% m' g4 p! C3 G+ u5 P {# |4 ^/ ^! a, Q- n. |# k1 k3 f/ p
dispA[i+1] = (segR[num2]>>i)&0x01;6 [' ~4 W! o+ E" I1 `( [
dispB[i+1] = (segR[num1]>>i)&0x01;
$ @' B% c- ]7 S% B" x, T( U* O0 ]* s7 z0 o. Z: m
dispA[i+9] = (segL[num4]>>i)&0x01;0 ~$ l) B" D' Z5 g+ ~
dispB[i+9] = (segL[num3]>>i)&0x01;
9 {% _. K! X. p, l" l }
. |2 H# `; k: M/ H( ]! R
, Q0 h. ]( U& m! I: O. E' q9 x/ Q2 D. P8 A# V: V) h V
$ b: ]: z8 O+ a& @$ x dispA[17] = 1;
% x1 {" [1 U1 r# T8 K2 P dispB[17] = 0;& {- H Z a+ `: @/ c1 q
: d! @+ N @* I/ \6 F dispA[18] = 0;) _3 b3 G5 x- y- ?8 }) a- }; u4 w
dispB[18] = 0;* p3 V3 l+ X1 U2 ~- L
1 E+ d. R/ [% d G$ u
dispA[19] = 0;$ m7 {6 e/ }$ f S7 X
dispB[19] = 0;
( V" T, m* t( R! ]9 w, f* K7 g% Q
yCLK = 1;
9 j: a3 z0 B4 g2 t: n
% \* e2 X6 f& w2 m$ f/ I; x
3 h! n0 }4 @! e1 I) K' z
% t1 f- S' ^6 {( Z" D3 r for (i = 0;i<20;i++)+ g: `- p: ~1 N+ i9 V) N. n( A
{
$ W/ @# w7 R* E* z% Q yCLK = 1;
/ v5 c- `9 ~0 p yData = dispA;5 ?+ ?: ^3 |7 A3 K- X
delay(2);+ ]) q& Z8 Y r4 f- g! d* E$ X
if(i>17)) N7 J7 v3 m, {9 F% m* @
{yDLEN=0;}
: R, {8 A- b: d/ l, ?$ m" P else
9 [- z7 d" |' i {yDLEN=1;}
1 w7 a; e$ D9 `2 u5 r I, _
# w, h# q2 ]' \$ T9 K6 `, P4 M delay(dailyCount);
4 l \( m0 i/ `3 k7 W yCLK = 0 ;
: W7 L8 V+ v# C% g9 Y' I delay(dailyCount);
. j5 S4 ` m7 g2 ], s+ j }
6 i# T# a8 ?) D
4 @9 C% }9 h: ^: s- S/ J4 ~ yCLK=0;
: e' p6 q4 G, S, {+ J q; N7 B7 f% W yData=0;
" k2 L6 ^: F2 l/ A* t h/ ` w yDLEN=0;
) `3 N3 G! U1 G& } delay(dailyCount*10);
1 Y' |3 K" W$ a 1 g, P) p/ f4 z0 v3 c& S' a9 h! j& j
, y% h+ `6 Z2 X8 H1 L! Q; l- P! L9 H; z% R
for (i = 0;i<20;i++): X+ Q9 F5 I% p3 T
{4 C$ C8 O( R% O% J( `+ ]
yCLK = 1;
9 @. b& k2 p8 B9 C yData = dispB;: M% v3 u$ Q( x; t& W7 S( j
delay(dailyCount/10);
9 Y1 T/ T# c% v2 b) } if(i>17)
4 Z" j2 |. ~# c$ Q {yDLEN=0;}3 x0 K5 F# O2 ?+ e7 I) K) T
else1 x v2 e( h: w' b3 J& Y* t* o
{yDLEN=1;}
' a3 I- A% b+ M" g9 |+ I
. y' G2 U4 @" L! B, w/ \) s delay(dailyCount);7 O, b5 a& ?1 L6 w8 ^$ y
yCLK = 0 ;
9 M$ a0 e1 x- h) i: O9 t7 [* ` delay(dailyCount);4 M9 y7 o6 P0 a. _5 g" J' B
}6 G# p1 @7 Y! `' C$ b6 x& D
2 v! v. ^" D! L" D yCLK=0;9 @, R9 y; q2 C7 m, t
yData=0;
! F! W/ E; K+ J yDLEN=0;5 F$ s$ w. ?3 U) v8 O M
delay(dailyCount*10);
4 S8 x, C/ J W# s' @}
4 z( z" ^, C W
. A" Q& j0 V+ A
8 a: z% i7 f: h! f
% @+ v$ e/ U' q. Q9 K! \6 `! X/ T! t
) L5 s$ f3 E- R0 D, A- D; avoid main(), v* g7 k2 p1 K' ?. X
{/ r/ J" ], y4 ]; ^" E* b- E
while(1)+ e! _7 F0 d! m
{( d( N+ l: s6 T! P6 ^& ?
delay(4000);: z) j/ M( Q7 O' F' z; l
disp(0);# b( k" f6 H, [; F
} 7 q$ ~; Z s7 e1 D- B7 b
}- c0 q ]2 P2 M; C a* A
$ |6 z, t. ^ t# U# V3 s
3 X4 F k. B/ ~2 `: @- m, g |