搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。$ J o0 @( U7 f' W2 K
3 Q* I% X$ S+ }* P: b) x, d* v
) m/ T8 I3 o l1 w% N: \0 L1 K
& L {7 ^, Q+ i
7 g9 p6 [0 E) j! F* q3 r, Y. {. j" t9 v" D9 r+ s$ I# r* x
2 o" p% p5 l2 U5 O$ P; I/ u
demo 的代码在这里8 d# j. [" y# w: P. L) p1 ^: b
% h: y8 x6 ~0 i2 z
# o4 v v1 D6 ~( s# ]8 F#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器2 e% H+ _- \9 G; Z
- o/ A: d* ?. s8 A% s9 W
sbit yData = P2^0;; Q+ F/ `6 p- l" Z6 H
sbit yDLEN = P2^2;- O' e- C) e# t1 V4 j9 [ ]
sbit yCLK = P2^1;1 L8 I6 y; {6 v
const int dailyCount = 200;
4 N3 B- @3 l" l& k2 N* d% j& m/ k0 w) }3 ~3 T l4 s6 U
$ I/ v$ G( w- k/ T( z1 F
/ b' e3 B* Q5 L" e: U2 t. ~2 Fvoid delay(unsigned int i)
8 G% F3 v4 Z# o! w( a{4 X/ M$ y9 L& n, U4 g
while(i--);
( |- z2 V" ^" B" B G7 f}9 J, x9 I( V+ a6 {7 ^. c
9 i* T0 Z/ G# [- g6 c8 a4 e' `- \
@3 r+ M2 x; P+ E& \) b
void disp(unsigned int num )
/ X7 ?8 n2 p2 }) ]2 [$ g/ e) k{! U; X9 W" n9 a: C$ S6 H
unsigned char i ;
+ ?. j* ^* [& a$ p4 ~3 n+ p' t% G0 y: w+ t7 `& H. K, D9 U( A
unsigned char dispA[20];$ |! a$ d) F8 e' O4 h& f/ Q
unsigned char dispB[20];
4 u3 e: O, \* @3 u8 s' s* \( b) v) `! m' q. L6 b
unsigned char num1;9 h# E) ~. w# C" q. c V+ o
unsigned char num2;
) Q- R0 \% t& P, N4 G6 z unsigned char num3;
7 \ V7 r& g0 k( a, a unsigned char num4;# M' W% m. h" o- e0 v
unsigned char segR[10] ; //右& E, z& D4 [+ @2 n- c: C+ Q
unsigned char segL[10]; //左
1 G( C1 }* B& R$ w7 m1 n% T. Z" C- a. e* v2 h8 t3 J: B8 l; s
//左
4 ~4 n, P6 t3 I8 d0 ^' B& u segL[0] = 0x12;
/ p% D. J4 |: X) { segL[1] = 0xFA;
4 B, e6 a; C* J6 T segL[2] = 0x0E;
- Y, G) U5 k" g* a; U segL[3] = 0x2A;
( s% I F- J. O9 c' p! o segL[4] = 0xE2;
5 k7 m: ^# T; d& ]; X- G# t# G. g, d segL[5] = 0x63;
# F' g1 v6 C6 Q0 ^. L6 A. @1 _ segL[6] = 0x2A;8 ?) j3 F( I( P D5 p
segL[7] = 0x7A;1 q" f7 o: z! M; ~* b# }6 ~
segL[8] = 0x02;
! X, B) [0 Z/ I: x8 P2 Z; x$ F segL[9] = 0x22;4 U7 T/ U- `$ J* r
5 s! T7 p2 o7 f: p" d( n& W5 C8 C' C
c* F* z. r7 x 1 J+ P0 |* F6 @( c3 C, a: m
//右, G" P7 \3 w" @% J9 o7 K6 m
segR[0] = 0x88;
2 o: B, e, O; ? segR[1] = 0xEB;6 M9 a0 m1 ] |( D) |
segR[2] = 0x85;
+ F, f2 Z! N$ c' F; C- V segR[3] = 0x83;+ g! X+ H: l" }6 v
segR[4] = 0xE2;* q$ u3 }$ v4 |% |
segR[5] = 0x92;
% U! k* N2 {# t0 Q! c segR[6] = 0x90;
9 `0 S& B, V8 W. S- T6 C: Q. y! @! f segR[7] = 0xCB;
5 v* n1 k. Q: u7 D) C- r5 w* O segR[8] = 0x80;( H% ~! T; N5 Q' p, J
segR[9] = 0x82;$ ?# N! K3 V% q' S" a6 Z' i
2 `4 b3 {8 }, ?# j8 o6 Y: J& m& x
% U W1 S$ e* z5 u
num1=num /1000;
/ B7 e0 f! v5 S) d) ?% ^ num2=(num /100)%10;;+ e7 D! W" u% |; {* E
num3=(num /10)%100;;; R8 c% Y' @5 V
num4=num%10;
6 o" B" k' }' b D8 g& B9 h8 w
- Z4 E f; m6 g: h! X8 g `# A9 \0 m* j4 V5 W! i3 E* ^7 G0 z
5 _8 ~, Z: T8 ?$ w2 N3 c! Y9 L4 [' @3 ]; D# Z' Y9 `0 m: e5 n# k
dispA[0] = 0;
7 ^& s+ \( `( w5 Z! ? dispB[0] = 0;8 V9 l! q$ }7 F& }+ M% d! Z/ u6 @
@4 `! N; W2 O: A8 }8 n% _% t# g8 h% J3 m( v0 l% {0 _' a
for (i=0;i<8;i++) F) W6 _/ H! A! R7 h
{
6 }8 U2 i4 a0 r3 Q dispA[i+1] = (segR[num2]>>i)&0x01;3 j1 u: l. |5 u# D" k3 Q
dispB[i+1] = (segR[num1]>>i)&0x01;
* i" ]- h" N* ^6 c# ~ f2 D6 H# g Z; o* q- }6 G" j( X1 ^+ u" U
dispA[i+9] = (segL[num4]>>i)&0x01;& X7 Q$ [9 p/ P7 Y" \
dispB[i+9] = (segL[num3]>>i)&0x01;
! q+ y* o; I, a# r ^; {, K& q }
5 p! ~; Q8 \2 s9 J: u, [0 A: d - _. M% k8 ]" B9 Z7 B8 C7 {/ A/ b
9 Z) u( T/ A4 i0 G- w X8 C% _
! l1 W3 c( l- o dispA[17] = 1;* z+ i. `0 |) P# s( J- R
dispB[17] = 0;, Y9 y) G b* c: p0 I" U4 K
- A0 p6 q) H; g' J4 _ dispA[18] = 0;
^6 h% r3 w6 N* W, A! ? dispB[18] = 0;$ a7 `: a- {0 i2 p# F* ?/ O8 X1 `
8 S+ l* ?+ ^9 e6 B2 L% _, u dispA[19] = 0;/ M- _+ n" i# N. t& C9 @* }1 u
dispB[19] = 0;
1 Y. ?" E& _; }5 X7 m, w% q9 v
" x Z9 q, M( d0 L4 s. X4 n1 F! j4 H1 F yCLK = 1;
2 M" X+ E* T* ]/ N" Q- {) o, l- ~4 W& f: ?! P+ }: i
. t- K1 v6 L, \) u/ G- P* {& n! r0 _/ Q
for (i = 0;i<20;i++)
; l/ E2 j6 z2 _ {
( r0 B' R4 F+ O6 q1 x( f yCLK = 1;
& b# G9 N% J8 N+ N yData = dispA;
% T' n0 p4 v8 y7 @7 L: n2 M delay(2);
* U- s. j" u. I; A$ c if(i>17)& g3 t8 x" y% [1 B5 [
{yDLEN=0;}: l: y- @1 K. O1 C; V2 d% K9 D4 H
else1 e Y: z! y6 M
{yDLEN=1;}
/ R- l& f- s/ {: v3 Y2 q; _$ [6 f0 F+ N: h4 c8 |
delay(dailyCount);
" d4 t9 n1 A+ P) _4 ^ yCLK = 0 ;
" K0 e9 a* s1 g/ z; d: Z, } delay(dailyCount);2 r. w7 G* i8 h6 T
}
) S2 G/ u( q1 r) w& `/ W/ h' ]/ i$ S- c. G( F
yCLK=0;
1 T! B5 I+ [ }- y yData=0;$ F: e% c/ z* d+ l
yDLEN=0;
' x7 Q1 J5 U1 x" i delay(dailyCount*10);2 H3 T" \8 d/ @$ M9 v* U
9 a$ n/ K7 X8 J# [6 j( e3 N# [
( W6 U' E: a) o3 ?2 b
8 K/ x7 M) ^9 c6 {: \" s+ m" e for (i = 0;i<20;i++)$ W& y1 i: X2 j$ [9 D0 e9 ?
{
* r% p4 t' s! ?$ q5 E" d H5 m0 h- c1 H yCLK = 1;. d f3 ~' r) m" t9 a
yData = dispB;
/ P; P- H3 E) ~- d# L delay(dailyCount/10);* J1 s& r8 Z1 f$ b. t
if(i>17), f( K) D3 ?6 ?- L
{yDLEN=0;}7 X# h1 l+ W& F7 u. z: X. _9 n
else/ a! }" d* f2 A# E
{yDLEN=1;}7 e+ {6 v+ U7 t% G+ d$ d7 j
2 l# r5 _4 ^9 d5 j {# t
delay(dailyCount);
- N% m6 u) M% H+ ?' G- d- ?/ @3 @ yCLK = 0 ;& L$ \6 ]# ^, r
delay(dailyCount);
' }+ `2 b0 H- H" O Q }
# ^8 h- Q9 J7 k6 u e$ f: b* G* w; X( v6 p
yCLK=0;" e! D7 w" \" u, V
yData=0;0 n5 d! u% P4 [% C& ]
yDLEN=0;
; K* O5 g- L) n& K. h( \0 } delay(dailyCount*10);6 [" u; K- K8 d9 ?
}
* ]' j* e6 _# v9 [/ Z( T* C; v" ?( p% F. q; k6 _" v" f: z8 H8 e6 H0 E
$ s% V% V- ^, o8 W
4 @# q2 k" Z5 `, q, i7 {( ~
2 j& f3 D+ m3 \void main()
9 x$ u" y, j3 {* y{% `! R8 v$ U' }
while(1)
: ~( z& f& V5 Z* x1 f {
" _7 H p" W; D |$ S& f9 r delay(4000);# N) _! E( n2 W. g, h0 Q7 L4 A
disp(0);/ i, ?9 \( s8 m' s3 u2 q- ~( V
}
& x+ k6 m% l. d3 I! H5 a}
: P6 K- H, y2 q4 ]
7 i) f: q: z1 m1 z( v% `4 v
' j3 R+ b& Z) k1 H d5 n |