搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
% S0 i! f% h+ h1 c. @& s/ X4 S; o% U8 K Z1 l: a
' z8 v* D0 d7 x: k- r6 d/ n G$ O+ |
" `! i2 o+ w* [+ j0 k3 A1 `' V
- ]7 x& s& j/ d$ Z: c: z0 }
+ y* z3 e2 G/ M# |
9 P) A! u/ o- O |/ |% g. Ademo 的代码在这里/ E7 R7 B( ]2 ~1 H
6 |; A- w6 i; F! E
# L3 V1 s$ j5 U5 B3 [
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
3 ^7 ?6 q. t5 x5 ^* V! _3 _7 |) G3 G- ~& ^1 a a: l9 w
sbit yData = P2^0;
9 M3 O: J2 E- O j6 p% Zsbit yDLEN = P2^2;
( F1 I2 A4 F$ t! q4 d; ?sbit yCLK = P2^1;
: I/ `, H! I$ j' U; i Mconst int dailyCount = 200;* g' h0 ]2 K( [/ y6 B
) n1 Q2 C3 @! d, Z8 k+ q- Z( ~
* `) h0 i+ t& s: N4 f* _4 ]' x$ y" ^( J- `. O3 k8 }
void delay(unsigned int i)
9 O y, n+ }# b. Z4 U9 R6 C{
& p {7 o1 X& _' Y5 b, [$ P4 t while(i--); ) C: q/ `6 V* M T- I
}
6 b- Z% @, C/ \ `$ e: y. c' g' P- G8 o2 c- i+ @
) H% e( L% \- ~, @- O8 E
void disp(unsigned int num )8 A' P. Y* ~1 i* M V/ y6 r
{ O" a* Z* ?. B/ a7 k3 M- [
unsigned char i ;
% T4 j% D7 R# [3 J) B; O5 |0 d2 S- P5 \. I) u {
unsigned char dispA[20];
; D; j9 y& ?3 G/ ~ unsigned char dispB[20];: e8 k x; f" M' F
7 {& I% ]. w% l; _ unsigned char num1;
F# g9 ^: v. r2 d unsigned char num2; ' J' k( D# R& P
unsigned char num3;
! e# \( w% t* Z" w( C$ W unsigned char num4;
/ U' H9 E* s% g# u) V unsigned char segR[10] ; //右; j1 d( u1 H- N3 _# H( o6 j- O& `
unsigned char segL[10]; //左
6 P6 r: \- H+ H' T
: n: P# V0 ]- M" } //左
! |+ B* |% S7 J7 r3 T+ g' r segL[0] = 0x12;
7 B3 t. H7 H8 s" f% Z segL[1] = 0xFA;
) }' b4 H$ @) c2 L segL[2] = 0x0E;
4 d: L+ c* V9 P- M1 O8 V* N segL[3] = 0x2A;
4 i: x1 D* m6 `- h% R* W& U segL[4] = 0xE2;* S. p, S/ k4 J' e' v
segL[5] = 0x63;1 l) i3 h+ m3 c% Z& T* g
segL[6] = 0x2A;
: f, V0 P# t- I, O0 v segL[7] = 0x7A;
2 a8 m" |+ j- p segL[8] = 0x02;
& `5 n8 h0 {, Q; m% a: N segL[9] = 0x22;1 ~" l6 L. t1 J0 x
/ E) G; ^" b* M, b
, A* C3 v7 u1 q' Q0 P1 ^9 b
1 |2 j _ c4 \0 w- O' t //右
1 _) Z6 O8 Z3 l6 r% p4 d4 @" { segR[0] = 0x88;4 G$ b: W8 S3 g7 n
segR[1] = 0xEB;
+ e. s( M ]* r/ T3 n2 H segR[2] = 0x85;
. h A7 F) A3 t, q, T" d segR[3] = 0x83;
4 j5 b9 j: Z* v( v segR[4] = 0xE2;
* s/ i6 ]- ~% M* ]5 @ segR[5] = 0x92;8 B7 _1 b0 w" O" x
segR[6] = 0x90;' v0 ~) _' w- ]. i$ A
segR[7] = 0xCB;
4 ? g( g0 g! v/ D7 d" } segR[8] = 0x80;
( x3 y: ]1 O; X segR[9] = 0x82;
! S& W* Y$ Z) i' d! Y3 P6 n5 _ Q% P3 G
, r3 g5 j9 o1 s- u2 N4 B , _. h5 Z2 F+ \+ L) l6 @
num1=num /1000;
8 s% e+ X/ O% }/ o num2=(num /100)%10;;3 _4 X# T4 C+ c: o; C+ `* b) u+ K
num3=(num /10)%100;;;
: S2 I/ V" m) L# D' N" Q* \ num4=num%10;3 o6 B/ o& P2 Z6 Y1 }
2 p8 c, m* ]) s
: e: N S% x% ~6 D9 ^: w* z; l. e* i% ~0 M* X
3 H) p k( u, H& v dispA[0] = 0;- D* r0 ? N4 P' R* A6 K+ B
dispB[0] = 0;5 P% E' E7 X7 J- n0 O" @( h
' g! |0 L0 r6 f+ i$ ?, \
4 L4 F. @$ W/ P3 y4 Y* w for (i=0;i<8;i++)
) \6 V. ~% m6 m4 ~! o( L( g$ ^, | {" H1 d! s! E7 a2 c4 ?/ l* u
dispA[i+1] = (segR[num2]>>i)&0x01;9 G2 k0 o* m, B; ]' Z
dispB[i+1] = (segR[num1]>>i)&0x01; $ D$ M- }+ e0 |9 J1 ?
4 x& `. G% e- l dispA[i+9] = (segL[num4]>>i)&0x01;
7 m9 _% D, B) k5 V* `2 C dispB[i+9] = (segL[num3]>>i)&0x01;# i* J9 q# w% X; N! G
}$ e, g, N p+ I/ ?, m E
+ k# h' O, Y( \. u; E4 L6 e4 C
5 b7 p& j. R9 v
: ]& }9 B" @- }1 J dispA[17] = 1;" C2 x" e) ]4 @5 x" ]. _
dispB[17] = 0;% V( M& W- Q1 |# U
% c2 {3 `- y$ k, A3 Y+ K dispA[18] = 0;0 z5 c6 W- d) I' ` @9 L& ]
dispB[18] = 0;& I, S5 j2 N) R3 P5 ?4 y/ L. O
t5 R3 O) f) U" e, r dispA[19] = 0;) W1 v5 E+ j- O7 ~
dispB[19] = 0;
# u% ^: p7 u8 S$ D3 ?' U
, h, p7 b" Z6 f( A# @- ~( x yCLK = 1;( E5 J: h+ U: m, N7 a" v9 [+ I
7 m5 Q# _& p4 K- Z( V& p4 M O3 s2 @8 I* a, o( Z
. [1 A1 q- L7 t# C
for (i = 0;i<20;i++)5 L" D/ U: k* {; y
{! ?+ c/ @5 l" P; P' E
yCLK = 1;
2 ~1 r1 D$ q5 Z! F yData = dispA;
% G$ M9 S3 P, ]* G$ I; a; [ delay(2);" K- g6 @) o) G% ^, D
if(i>17)% A& S+ g% s7 Y; I% v+ x
{yDLEN=0;}
8 g, O- j7 e5 q else1 k1 X: N; P# o5 p( N3 C, H }
{yDLEN=1;}/ I% T5 F9 m7 P; d! `
G J& x+ w: K. y9 F- L1 _
delay(dailyCount);2 |7 v/ R3 x* K6 f% X& j3 t5 y& |
yCLK = 0 ;
- i8 Y B9 Z) a2 Y; o: Y/ P% s& z delay(dailyCount);/ n0 R g# b0 ` h
}
2 I# r+ Q, _" `$ @: p& h% {* A9 z' s# R3 `3 t1 x" N- O) q+ e
yCLK=0;5 Y1 A2 X' M; ^( k* i
yData=0;7 g) y# X- j, a% V( i5 i
yDLEN=0;
" o4 e% _; }, H2 O/ _ delay(dailyCount*10);" m& r; s: x d+ s1 Z4 q ^
' ?- `! M, G1 r
# }3 r9 P- p: T* R
' g' j/ ~8 S3 I1 n for (i = 0;i<20;i++)
- {( p: c1 i2 K {4 x& K9 {& m2 E u. S
yCLK = 1;
0 k5 J$ @& V# `2 F6 C) F. P7 K" @ yData = dispB;
2 T! j m$ f0 |/ {" m* b delay(dailyCount/10);! l, I+ Q+ u& G# J3 X# s
if(i>17)
/ y6 C0 ^4 v4 r2 b {yDLEN=0;}+ i/ A1 m8 q7 J( H
else( m) r# s6 |; c* T
{yDLEN=1;}
! p! [# f) L$ _
7 z: [" Z: }: C, S. i delay(dailyCount);
" n4 p# R& X1 o! t# f yCLK = 0 ;' U+ p$ z( c/ _% D0 {+ g7 t( E) D
delay(dailyCount);
* | r, i/ [' Q) w! b }
( j a+ g$ G3 n9 r" d" d Q, E: z7 k. u. n8 s r2 D* I+ g4 f I
yCLK=0;( l2 R! n9 J' S9 c( ~# h3 [4 P- l3 T
yData=0;$ x* R; r' Y8 Y- C9 a
yDLEN=0;. Q6 h5 P* a2 L1 C( n- y, j4 B
delay(dailyCount*10);
) b- C/ E2 b" ~}
4 `0 h1 g* X% o% n. O2 M, A$ ?! ~& u F* S) B
) q, I4 K/ z( Q$ c: y
9 F7 N5 s/ L- w- y% h3 c* q, b# t( `( a+ t, g0 W' O& I4 ]
void main()
7 w- }. g4 m, U/ G{
9 }0 m. ]1 H! H& t3 B# o9 S while(1)
7 c" r2 V3 L2 t/ S0 X! ^5 _7 ^5 c {( `3 P4 W# o) a2 _; o& G- X
delay(4000);
+ C9 y& R3 K- x$ d0 ` disp(0);
* p; n3 C/ T1 _% b& `5 z8 l } 1 ?8 k0 O2 ], `7 t! U
}8 |% N9 h# J1 w! p
' \) V( J4 v0 n v& k
! `) V( Z: |8 Y+ H
|