搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
9 g% x+ {& @9 ~& w. j
& z' Z6 J; y1 t% @
9 I4 O& N$ w/ L& R8 S2 M# l
. A' Q1 [+ i; P
/ T: h5 b- ]; J% t' a0 D9 E( w) t" q# X; C* S5 {, W+ f
7 J; u9 d) W* {* {) f* _8 Vdemo 的代码在这里; K' W0 m8 z0 H+ P' [7 i) l2 B
) B; p- Y- M, N# L% Y m) _4 S: D9 B& ?: V+ w
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器. D* x, r$ r# M# j/ a
7 M2 }: E6 d& Z m: M+ N
sbit yData = P2^0;$ ^# w; p! h$ L- R
sbit yDLEN = P2^2;
' |7 Y1 y/ v% J. a0 _" usbit yCLK = P2^1;/ x, _# h5 j5 L9 G; q
const int dailyCount = 200;7 `- ]0 }( {2 o* z3 t
+ a( p5 N `* V1 Z! J. I# _) Z& H, Q( A& z& ^9 x$ }) o
) m7 v0 H5 X% E0 t. O- a
void delay(unsigned int i)% U2 o! g8 {: b: s* S9 c
{# q5 h) G: t6 x1 i: R7 M! A
while(i--);
: p4 q/ G e g0 J: ~ j" M}
* U; w$ P" K& s: P1 H) J+ |. k+ l5 x% C! ]
. e# i! Z' D8 N7 Q- h6 l
void disp(unsigned int num )0 k" H7 Z0 {# m$ e: G( x1 n
{" r; o, p# w' H' G
unsigned char i ;- L4 @7 ~. N, J+ L9 s7 s
g; [7 N0 m0 o8 c. ] unsigned char dispA[20];
1 }, x! h' O- M9 D+ V unsigned char dispB[20];4 Y& ]4 D ]; m* O1 B
o) P# D- p3 g unsigned char num1;. x% Q N/ ?6 m1 x; V7 O0 K
unsigned char num2;
S; q8 t( a7 s5 M9 Y% }0 F0 u unsigned char num3;
; V; ~2 n+ N: j unsigned char num4;9 ?1 X: ~. Q+ E* O C6 C u* U9 o8 I
unsigned char segR[10] ; //右
& e+ R& h& O% [: A- q unsigned char segL[10]; //左
: r6 Q; `4 W. H' e# J. j
' l: ]: O$ J0 S1 X //左
# j- C* V' k) t# m: d! J segL[0] = 0x12;' \8 Q4 h+ ?$ q# X7 R1 L( ]9 B- X
segL[1] = 0xFA;
3 |. y, R2 ~- ^ |* c segL[2] = 0x0E;
/ L0 `! y1 {& }9 t5 |4 ~$ S, X segL[3] = 0x2A;
* y4 H* b4 ^: [' ?/ T$ j6 c segL[4] = 0xE2;+ J- x; f! D4 L5 q. C5 v. k/ x
segL[5] = 0x63;0 L: t* U( P/ v- w# n( N! ?
segL[6] = 0x2A;% m: e6 O" T) ~% ]
segL[7] = 0x7A;% g1 N( n0 h# l2 p
segL[8] = 0x02;
6 Y# G2 L" v: R% c# w5 U2 \' W! f segL[9] = 0x22;
+ _( Z+ a. E8 F' c3 F9 r! v% ~
- d9 v# j8 O) b! o
* O7 G- q7 ~' h( D. d , @- {, W3 w+ b( ?
//右! O( m( z7 s8 r7 R0 B
segR[0] = 0x88;
" P9 z8 t5 O1 E) i4 D segR[1] = 0xEB;0 O1 M5 R! _8 z, @2 K' Z% F: d
segR[2] = 0x85;$ X; P w+ z W5 T6 Z
segR[3] = 0x83;
+ q- Y; T/ o2 Y3 ] segR[4] = 0xE2;
7 N1 O' k+ s' I( c. k% L( I segR[5] = 0x92;) u4 W3 K; \( }# j
segR[6] = 0x90;
) u. |# S7 t! T" l$ s segR[7] = 0xCB;
4 G. i9 T' M( O) B- t9 q( x4 O segR[8] = 0x80;3 G# Y" R9 H. l; j8 j! v
segR[9] = 0x82;2 h/ E$ ~& J: I4 Q) y) |
) E- ]* c$ i# ]- z
# k5 a5 b# s3 C. J- v1 l& C num1=num /1000;
; }! L0 s2 }& W7 a6 z num2=(num /100)%10;;
3 C5 y3 j! Y- S* f" n5 x num3=(num /10)%100;;;% U& ^7 c6 ]) v' u' o
num4=num%10;0 g( M1 ^2 ?: o3 W
' M4 j' R& Y( Y; ? ]" M; n) q8 A0 t! \5 Z4 ^
6 Q: P% t$ A1 t, w
/ E3 S% o+ y4 M8 b7 W
dispA[0] = 0;5 A+ E% w/ o3 T u3 q8 w5 G
dispB[0] = 0;: L% a) h2 g( g+ I5 v
; k0 p _5 U; V3 z
- Y: F# j4 c, j+ B for (i=0;i<8;i++). A. J" y7 l: p: O6 g6 r
{0 v: f B- \; @! y; t" K9 A
dispA[i+1] = (segR[num2]>>i)&0x01;
, U- e) B$ t) R. C# D% G8 Y dispB[i+1] = (segR[num1]>>i)&0x01;
/ H3 N1 Q2 B( O
+ G: b% Y$ T$ q3 b8 r dispA[i+9] = (segL[num4]>>i)&0x01;
$ z- r4 a" p) G9 b5 g% P dispB[i+9] = (segL[num3]>>i)&0x01;# T* V8 g1 E5 @. i
}
- R1 I. I8 ~1 }% R2 S" H3 ~ 5 x" B3 j1 X- k+ A& O3 Y8 |
5 J, s0 e! _# q
% t- n8 l/ A/ D, U8 _ dispA[17] = 1;1 T/ e" U- O! G5 a' T
dispB[17] = 0;
9 U1 j- C9 T7 q$ q% K; a
- O7 D# s9 z" \" t- X: o( |6 i dispA[18] = 0;
5 c8 F, V: q& f- a; R: M$ Z, P dispB[18] = 0;
" @/ ~% Z7 B/ N5 h) @/ ^ L: W: ]( ?+ [) p
dispA[19] = 0;
* |( a4 M+ `. y$ h7 n1 V3 Y dispB[19] = 0;. _6 O9 J1 _# Y/ N l+ {8 n' v
4 n- ?) y; E" M% a& Y yCLK = 1;
1 g% }8 Z/ w s7 C( ?3 j
; _% Q& W* u3 L7 v/ y
9 L+ ^1 ]7 G& L
$ t9 S* G. G8 a' g1 V- I* J$ ^ for (i = 0;i<20;i++)
# d1 j. |1 d( [' z4 x {
! `7 d# @' v/ b2 g% J) H yCLK = 1;: W4 Y t1 X- F* z) A' C
yData = dispA; X1 }. J% V0 _7 x
delay(2);
7 n. B& D0 X# k8 ? if(i>17)
$ v- T0 Z+ T$ F' f {yDLEN=0;}" ?9 _& ?* B% }* W& _
else( ~: W/ v* U" R# N& g8 _# }$ s$ Z
{yDLEN=1;}: W" r6 f9 Y% G4 E1 T7 Y3 C
- c, L1 F+ E1 [2 P1 s
delay(dailyCount);
) w1 I' @+ u- O' g- u) }7 s yCLK = 0 ;
( z6 g$ I6 n& L) p+ G$ F* w delay(dailyCount);1 H4 Y4 P9 B M1 q
}
8 d* x. j2 Z# Q$ H8 c. u2 X' D/ y: ~) {9 Q& |9 b
yCLK=0;( Q1 J* ^- A, _& r
yData=0;
. p7 J3 e: }3 U% a' y5 P yDLEN=0;
* F$ Y! ~/ S( s1 t' z5 P# ? delay(dailyCount*10);; B$ a* K' U. u7 I6 `; W1 |. L
* h: K4 S0 {" E, {" ^; J2 _3 a
2 F5 H% |, A" }9 i+ l" H6 W. P
D6 u! o# E' A2 S) B: z
for (i = 0;i<20;i++)4 k/ e8 C8 ?3 R* A; B) H7 k
{1 [& l- l/ `' T! e% |
yCLK = 1;; E# |. Q. G7 |0 I
yData = dispB;
9 X7 j& d& _7 X! z! z' C5 b delay(dailyCount/10);
5 h8 C3 z, R }2 n if(i>17)
! y- g6 t# z* @# N- ?+ ?* g4 f+ { {yDLEN=0;}4 n8 |& x: }1 }
else
. Z# z) m" d; J. a& @. O* x {yDLEN=1;}( g- e b T2 O$ v9 Y
( Q1 A9 @2 R% r; v! o9 ~4 H) x2 w% q delay(dailyCount);
7 x" v% [! J6 @3 @& |" s% B yCLK = 0 ;
. N% x- k8 x9 H) C3 j6 P2 V delay(dailyCount);
; R% E1 \6 n, | }
: x. C4 o# K0 B4 o+ J) n; G7 l5 P
8 D' C$ {; x7 x* B/ |1 s A yCLK=0;
; i, U1 L; ?0 B+ O0 U; M yData=0;
* ]7 p: t! k6 {* a5 A yDLEN=0;
$ R/ H/ m) f) k( `9 S/ K delay(dailyCount*10);
* O- J& t9 B) R6 W5 \( Z}! A1 m6 U+ r" K0 a# z
6 e- f! {5 L% @5 E r- l/ L' `7 S4 A' y) E2 \( @% K' H
! p/ u" }, [" p' [; z7 G; a# V: A3 l8 k% q, i+ t8 j4 I a
void main()
5 F* O, p6 T/ ^# ]{8 l: q# q7 v6 ?) L7 |- C
while(1)0 G v7 z& I* H3 x
{
+ v0 L# T `9 }9 |! ?# L0 { delay(4000);
3 y k6 [( A% q8 c9 p disp(0);
: }: @8 d3 C3 ~" Z }
3 r. e g- h$ F u1 C7 z}
W3 X+ i" c# G L6 m1 [) {
% }: L' Y3 E7 D. t0 V) @1 l- r' B
T/ |3 Y) e9 i: i; w |