搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
4 A$ V) g7 I/ f- W1 r. q0 D
4 @0 n# Y: k6 C* Q+ D( Y/ t( o; [. ^( L$ k$ r
- ?" W( Z' G' M$ D' N" {
9 m3 Q: U z+ \0 O, U2 s# ~0 K: N/ U6 ?7 ]$ D! L
9 q4 U5 y2 `/ M8 c! C4 edemo 的代码在这里
+ |' L1 a& p+ G1 M, R* U2 z' V/ W7 B z
0 N" @0 b7 v$ q2 r/ [#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
" y6 k2 a& o8 j% _/ H' c. j7 a I: Y( _/ d6 z2 Z
sbit yData = P2^0;
: M( \6 H2 P" J Y4 Q, }% T% ksbit yDLEN = P2^2;
" m! Y# j- n, n1 C% ssbit yCLK = P2^1;
3 ?! ^- d/ P+ Wconst int dailyCount = 200;# r# G6 K5 ^/ @( I
* u$ _% N- C$ M, l8 z9 I; o- u% E! o. K( I
' s& A0 n N& _. z: cvoid delay(unsigned int i)
0 V8 B8 L9 }+ Z" |* D{% L4 V/ ~. G8 @; B- V( ~
while(i--);
$ ?# a/ p+ y/ x$ i4 m, o& K}/ p5 K, {/ e5 y) [/ R
2 p1 p- z( D2 i k$ \- c' W U, P4 q5 ]( X4 p
void disp(unsigned int num )
) e @* x/ o3 Z; y% ?{
" P# o5 ?% @6 E: Y2 J unsigned char i ;9 X% }7 Z; R% i6 T" [
^2 @/ |* S2 y9 E8 b8 s unsigned char dispA[20];, C' `. t# c) A" M) z
unsigned char dispB[20];
0 T) n! h T% x0 E
: q; {& n6 H9 _. F+ K, z unsigned char num1;
! O# O9 R; L6 A; c unsigned char num2;
" l! A5 x0 W7 x8 r7 m5 j unsigned char num3;2 a. W+ `+ `4 L, j5 }& Q, N8 r
unsigned char num4;
3 n' j) \& k* R, l/ J: ] unsigned char segR[10] ; //右3 b, L W5 _2 T, F( y1 f' ~
unsigned char segL[10]; //左
1 Z8 Q7 ?1 ?: ?/ [
3 }* b( s* D' K h //左
) L( l$ C. g. W% c segL[0] = 0x12;% b. p) o: J+ r* w
segL[1] = 0xFA;" @/ ^4 ]7 r; a/ F; M" ~
segL[2] = 0x0E;+ ~: }! P. u3 X) T V' _. g8 y
segL[3] = 0x2A;
% o! [! E2 v% g segL[4] = 0xE2;! j a" l8 Y- _! X# U: b6 A+ y
segL[5] = 0x63;
3 t- G0 Q2 r( O( ~ segL[6] = 0x2A;3 d- U9 f( s& B
segL[7] = 0x7A; I6 A/ d* d2 Z: ^: V: R. x7 h9 N4 A8 W& E5 Z
segL[8] = 0x02;
. p" \2 x9 X2 a0 T: L5 J+ }0 |; L: Q segL[9] = 0x22;2 Z; y8 k$ N9 V! X* Z
! {' K6 w# N+ d5 r! |; r( c$ p
$ B* m7 \0 k9 u3 ?5 V
6 Q1 E1 }% C: H4 V
//右
/ U3 a& ^/ x: r; Y/ J' M segR[0] = 0x88;
! O. A% L. S( a4 ~( q: b segR[1] = 0xEB;3 N* {( X% q) R5 ~
segR[2] = 0x85;4 ]4 l" y0 i( {+ ~& q! N6 }' K0 ~$ M; F
segR[3] = 0x83;
% t' }- s1 u7 K% H" D3 h) j segR[4] = 0xE2;
9 P. f$ v/ f4 v( A1 |+ v segR[5] = 0x92;
* T! {( y3 t0 o% W. v2 R: ? segR[6] = 0x90;
8 ~. r* \# u) L- } segR[7] = 0xCB;
[; k: r# K3 Z segR[8] = 0x80; k5 K' C' a$ n
segR[9] = 0x82;
7 l# q% b! `+ ~: v! ^8 ?+ z* }& l
; `# @! Y; M) R9 {& {1 ]# L
r+ w' B; V) d num1=num /1000;
; b% e7 U+ l, X w num2=(num /100)%10;;
& Q9 L/ M* n' u( G' z3 t num3=(num /10)%100;;;. `* k6 E0 [" [: s
num4=num%10;
, N; t' g" h8 L- ?. i/ H0 H% t) K F* G6 r, w- I' f+ S5 o. n
* Z/ u; r. t2 j# W
$ R+ X% b7 z- c1 I- H, f$ {" M
" o; Y& g4 ^' o1 E9 E+ e' Q, V dispA[0] = 0;2 D- E: Y* I# @$ @% i
dispB[0] = 0;& d! e0 B" K9 ]! K3 v3 j6 v
" R5 Z/ G' `9 d- }& L* W
( Z- ~) S, N! H& W! ] for (i=0;i<8;i++)
3 L" Y) q _" a6 c: ?( S8 t {+ G5 L* R8 n& I M" N: j- d$ A
dispA[i+1] = (segR[num2]>>i)&0x01;
* u; \0 V# ~1 r) l8 v6 U, V dispB[i+1] = (segR[num1]>>i)&0x01; " p* s% C0 L7 v& k' M
& u7 ?. Q4 i# E! e+ T4 z dispA[i+9] = (segL[num4]>>i)&0x01;! A' N( P# l8 a3 i/ |. r
dispB[i+9] = (segL[num3]>>i)&0x01;0 e( w% e7 Y$ X: M; t0 q
}
3 V+ g0 o: z$ q* L5 ~6 V3 |/ B) Y 8 {7 m! S* X# F1 F+ t9 [
( M4 B# u9 m! w$ b( N+ ~
/ T5 d0 V7 S3 ]2 Y
dispA[17] = 1;
, A4 }+ ~" @% A. E( c% V! J) y: _8 I9 U dispB[17] = 0;
- _, }" o: z2 l! ^4 v `* R* T: ]3 Q4 d% c) ^* s
dispA[18] = 0;
$ J" {( H" X7 B* h+ C- b( J dispB[18] = 0;
) e% C5 d9 I J2 a' ]3 c6 {
3 U5 x4 v, G" f3 i4 p' z) Y1 p dispA[19] = 0;
" h3 [$ i4 M4 ^) D- W: c3 c5 r* c( W" [ dispB[19] = 0;
5 e* e! K6 @% Z: \, S# w" `5 \3 i8 }2 z0 D; k
yCLK = 1;
) \8 Z/ Z6 ]3 ~# X* p/ g% \5 i: P2 E) o
, J9 {+ W7 a- b4 \9 c3 F0 K$ v" w, u! u, l# h0 j, l* I! G3 E ~6 S
for (i = 0;i<20;i++): y3 r. t, p9 o Q' {$ y
{- H& J, r# \. N0 s
yCLK = 1;2 X& J5 \2 ^2 r5 G3 r+ r8 h5 n" A
yData = dispA;: l$ R. E: @9 y2 Y* v+ |
delay(2);& y' |8 e1 {0 K- j$ J4 u, H
if(i>17), u# Z4 j: N$ n2 M
{yDLEN=0;}8 M! t" d/ A( w$ R3 `
else+ e, ]+ q- D# R' k
{yDLEN=1;}
- A) b9 ]3 t1 }5 k* W$ m3 y! e) O2 J1 D! }" }
delay(dailyCount);
. Z% m+ C% f5 Z9 L* m# r0 C. X yCLK = 0 ;/ n9 u* }0 n. E: g$ k4 B) ~9 J
delay(dailyCount);! ] }8 U% q2 N" o6 i8 |: D* I- W( p
}
* k2 A6 B/ d% c* ?
' e+ I; W2 b) c# n! {: I yCLK=0;' o, t" m' A3 p& c! [
yData=0;
3 c- u1 D( U& n yDLEN=0;/ a6 o" y, v; d' L5 f o
delay(dailyCount*10);
1 l6 k* J% U) J7 r: C0 X/ N D C1 _2 l" @- u$ T4 ?
1 f* r+ d y5 y! T1 O" M# e: X3 ], Y, n
for (i = 0;i<20;i++)
. j/ a4 P$ {% l! B; B {: b1 ^+ H+ V |( [/ |
yCLK = 1;
# g' u/ T. {2 A& J! {5 e5 p) R yData = dispB;
. X4 ^% \5 H- v8 R9 b+ f2 d: w delay(dailyCount/10);
. u) u; J/ |! |, i" I6 h if(i>17)
9 |) f) n. h# Y! ]% X9 e5 l {yDLEN=0;}
3 Y5 l1 f9 H b+ }( G* p1 L else
1 e, i. x4 j1 O1 }9 }6 g {yDLEN=1;}7 W& H n% \9 K' o
% b) y ^- k: `
delay(dailyCount);
0 a- F7 r. [% Q- ]: h' x, [' u& | yCLK = 0 ;
% e8 y5 F d% k delay(dailyCount);
* x+ ~) r+ R$ X6 h) s }
' L8 T) `- ^, T6 K1 v; t
3 N+ [; i4 w/ y2 {3 U3 }2 p yCLK=0;
: K6 R5 F4 x7 h5 G" c& r9 G3 d yData=0;
5 L$ F( _3 u% ` A6 W yDLEN=0;
2 ?/ h+ D% O( g/ Y5 b4 j, _+ {+ b, [ delay(dailyCount*10);; Z* y' |& x! r/ ?% o
}
8 a6 N" ~# N$ T
% Q* ?. W5 o1 |. Z4 i2 d# u7 e' [% P" R
9 O0 E# k4 A K: [6 x! H, @9 Q
. R' l0 m1 f7 M* f1 ?% B/ ovoid main()
, b+ [( |- S4 H, C5 _2 U+ X. R{
$ T. i, V V& J% F% }* l while(1)* I2 I0 m: q3 B, C
{
6 s9 r( @( b5 U; \6 ~) q delay(4000);8 p8 |( n1 r. B2 S( y' ]0 t5 J
disp(0);
$ @$ a& Z# n! S: ?4 u$ ]3 X" p- q7 ~ }
+ F) K; ^6 r2 W9 F6 U; R}
, m: ~7 E3 j$ ^3 V( w; i
. H y5 o# o8 U" ?, ?5 ~
. l0 r8 E* P b% R5 w |