搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。( T& W3 G5 o ]% i B( m+ B v
2 O" f) p( c1 t0 ^' R
7 Y5 I' d0 N& O# }, ~( T
% w( u) T" u: n- S' K$ t, z
1 H4 A# Y4 l C6 ^9 F: U8 S3 ?
: X# I+ L/ C$ }. k( \. i% [2 y
0 p5 K7 a: Q" Edemo 的代码在这里+ o5 A$ q% K- [( A6 k
/ g6 @- _+ I; J5 {; I
2 t- m5 z+ ?5 O# W, j4 T#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器% ?# Z9 s9 G4 Y! T4 z* L3 k. y
4 I# f+ e7 X3 O7 r! S: M
sbit yData = P2^0;
7 m$ ?+ T f# rsbit yDLEN = P2^2;
* \1 k8 Q, V. [3 Bsbit yCLK = P2^1; ~3 p v* f: n* W
const int dailyCount = 200;
" d* M1 k# o- V+ ?8 `
- A8 C; ]3 Z( @% z- B# ~0 i+ b2 F6 j: z; L' E. `7 I5 }: e
0 u1 w: H, ^$ e$ Jvoid delay(unsigned int i), |- `9 K! ]4 V7 t' a. c
{) C8 O& S6 Q$ Y/ a u5 n$ g
while(i--); & U% j# k" \8 m0 `6 l; z
}; l' X% h5 [" h$ C4 f, {
3 Z% M) S6 B" ]6 O, `: p
2 w$ ]" G. l% L$ E* R8 L8 {2 ]' ^" \
void disp(unsigned int num )' h" ~1 c# j* f
{
& H) M2 `/ y4 v: A V3 U9 m unsigned char i ;
' D6 e, F$ U8 N* f4 V2 H, C! M* h% d# ^2 F# O
unsigned char dispA[20];7 \9 c" z4 k& P' s8 p$ Y
unsigned char dispB[20];
& x% J( r, o: h2 ^
, U2 E/ S, {6 h) d2 C$ c unsigned char num1;
+ a6 \/ F+ m g4 O) V w# n0 o$ v unsigned char num2;
9 v" V% P/ P! X) M$ U# l3 Q7 L unsigned char num3;& R! W! b' t" R/ \" u6 k
unsigned char num4;
" k* ~ \! |3 W4 p# | f. n' H unsigned char segR[10] ; //右
2 K0 ~$ ^; Y1 I2 d3 L3 B2 T unsigned char segL[10]; //左6 a1 c2 M; O3 N& j! F0 c
4 }$ }! l s7 p4 b& i! Z
//左
0 m3 Q' n7 x/ n4 g segL[0] = 0x12;: {, S3 s# A0 C" J
segL[1] = 0xFA;2 ?# r+ p2 [9 G' Q/ l
segL[2] = 0x0E;9 g! F: k3 o; @# M2 B) N
segL[3] = 0x2A;: I0 T) I$ T {* o- Z
segL[4] = 0xE2;
2 A& z+ V# Z+ A: O% t3 `( b segL[5] = 0x63;
7 Q0 [1 h* v- l1 A: R segL[6] = 0x2A;! }: ]" `5 t8 D
segL[7] = 0x7A;$ R* O* N3 L& |- i$ i2 z. Q
segL[8] = 0x02;( m+ [8 {! X& b6 \- y) n6 `8 s% |; Y
segL[9] = 0x22;
* a7 x. O r8 ^) q/ K
8 b: A/ h( u6 \, g 0 y( t& d( {: T1 I2 w
3 e D) h3 ?$ O5 j+ V' k) e* f* e //右3 N; }, C- |4 }4 ?+ G& F8 k
segR[0] = 0x88;
1 w3 \, G s3 `% U& k+ ] segR[1] = 0xEB;4 y" P$ M9 V6 {7 C3 K
segR[2] = 0x85;( r/ V4 X9 k T/ k$ F3 b% b9 S) f
segR[3] = 0x83;
' L, Z* D2 O3 z ^1 K! s1 q& H# f segR[4] = 0xE2;
' G9 R3 O& a& b segR[5] = 0x92;
; l1 \$ X# p' P8 b segR[6] = 0x90;/ Y9 w3 d# K9 r C
segR[7] = 0xCB;
- s$ N' a/ z5 Q& \$ y: c# b8 g segR[8] = 0x80;
- ?1 n/ F% l. L$ p C2 k segR[9] = 0x82;
( ]3 O9 U" L) C5 c. o* Y+ z. O" ?* O9 a! ?0 p
; W8 f0 {! Y, P; C- [, E num1=num /1000;
2 Z+ @ i- o0 Q" ^ num2=(num /100)%10;;# D/ N. C! [% `
num3=(num /10)%100;;;
7 `- }) ]7 [; Z, L) V# L" `+ T num4=num%10;
) C% l1 w B! f# e/ k* T/ y6 {0 D" r
" i# S8 m" S: c6 [
; s8 G8 F2 E* s" k+ y
& r0 B$ i$ W! }" _' q dispA[0] = 0;3 k* O1 q) ?3 @( H U8 S
dispB[0] = 0;
7 L1 K* [: a! B3 P5 d; Q: p2 S, y& Z# k2 ]' p% A3 Q3 r
& O; O" _1 p2 ~ x for (i=0;i<8;i++)
{+ P7 Q9 i8 {0 z# |- U h {
2 \. x7 ~# B4 c! B dispA[i+1] = (segR[num2]>>i)&0x01;& ^ n+ ?) P/ v4 H2 }
dispB[i+1] = (segR[num1]>>i)&0x01;
8 F+ f. r K1 Z6 _- \$ t& w5 ^) \2 Q1 i
dispA[i+9] = (segL[num4]>>i)&0x01;& G5 A& f7 l( J% L4 a ?
dispB[i+9] = (segL[num3]>>i)&0x01;
$ E& Z2 Q3 m( P) ^! j }
" ]9 `2 i* T/ L4 r2 z5 O% a _ ' b9 a1 e/ u6 F! o( N! m
5 R' E0 d0 O S" V, S
$ g E) A# y4 v1 \ dispA[17] = 1;
' Q' J' L+ e' a: h' T, Z2 k. ` dispB[17] = 0; ~7 v: o# F7 c& @
" U# W5 f1 g9 V9 E+ ~- i dispA[18] = 0;- p! [5 }7 b: Y! U$ m
dispB[18] = 0;: g# F. r2 H6 ^0 r" X: x6 a' Y& {
5 ?3 U" I3 a6 c% x) M. M
dispA[19] = 0;' G8 m$ @: s1 S5 ^
dispB[19] = 0;
5 b5 F' L* `! j6 V
1 t+ z9 ^0 p7 y6 U4 K- Y% f yCLK = 1;
a# _! B2 w; ^" h, t7 j. B& s9 o, i8 k o
" W. k1 W+ v/ `; i5 j. o8 S3 {5 @) l
% B- |8 U, S* L4 q' i
for (i = 0;i<20;i++)
4 I$ `+ l6 s' n* T; E3 ` {
# T0 q! e1 V5 ?3 \ X3 f% Y1 v yCLK = 1;
$ K- E& G! z& D; R3 ^' u yData = dispA;6 g" d- i: Q* l3 g0 o5 ]: i4 E: C
delay(2);
. G- b7 ]& W* U ?3 c/ { if(i>17)# A/ }6 c3 [1 j- `/ V1 X
{yDLEN=0;}/ h) x5 |. A7 L/ _( Y+ @
else, @9 p6 N* v. S) p1 w
{yDLEN=1;}3 d: s p- ]9 d& q' G. E
8 e) g8 F" \. T0 K: ~4 N2 n% W delay(dailyCount);) c8 |! y9 z* Q0 T4 O! L" P9 O" l
yCLK = 0 ;& A6 j" S# J( A; Z% {& X
delay(dailyCount);- P( ]8 Q" V$ a! Z$ O0 z, s; n6 P
}$ v( N5 S8 [, L( D# B1 H
& o$ G# ^$ s/ w y yCLK=0;4 J( p% [- q- _. i" ^5 g* \/ U+ o: x7 T
yData=0; O# r% l* K, R$ P, A
yDLEN=0;
& k9 u8 |) A# l s- H delay(dailyCount*10);& ?' D- j( F9 @" c Y
2 c. E5 t, Q" _/ x: M0 U" x2 T$ w2 l' s: }( r8 U3 ] Q7 J" o6 J% i( o
* [# g9 Q1 s w X( _: A4 C$ T for (i = 0;i<20;i++)% e0 g5 `' I4 D6 b8 c/ I
{# _0 ?0 n8 u& r4 e
yCLK = 1;
5 C- E! e4 U* I9 d" K6 y yData = dispB;
Y, S6 q! |9 ~8 l- F delay(dailyCount/10);
+ I2 p, H: G1 g4 ~7 \' U; ` if(i>17)
) ~ b. {- E- l {yDLEN=0;}
( w! v* d: Y% @2 t9 L3 N else
: |$ K/ Y* m& K! W. h- e {yDLEN=1;}
9 I% j& U4 z% F/ f' A1 R" u+ V# \; J* X F* n7 N2 v, }
delay(dailyCount);9 J4 O& t3 k& q7 Z- o8 X7 h
yCLK = 0 ;" o* O9 G" g2 g& Q+ T) P/ B* N6 a
delay(dailyCount);; r* I8 ]$ [! i' F" f4 _& N2 H t
}5 c& W! U1 g/ r; R
1 D8 x4 J; v- B; Q0 i' C yCLK=0;
2 E% X. R3 R& N& I7 v5 z5 b yData=0;% {+ Y7 s: C/ x+ P7 L% H4 _- D1 O9 }
yDLEN=0;& _9 ]$ b! i, ~2 Y% F4 J/ i8 B
delay(dailyCount*10);
8 H% I1 Q2 N" h} }, L d* Y4 P: D, E# w' E
( _9 ~9 B" W: F4 n$ d$ x: d; F1 C
6 Z1 ^* p. @4 J$ P) U
4 y( O( t# E1 t( j, O8 K2 `
: B: d) p3 _: l9 Qvoid main()
' T/ @5 h* n1 J. `$ T- W$ ~: b/ e$ h{# F! c$ p! J3 V) G% Z% M* p+ ~+ O
while(1)0 X2 q e/ B' t! A$ c
{
. o% U' f4 `2 c t delay(4000);( Z) a2 }. E$ Z9 M
disp(0);6 _/ M2 ^+ H4 }1 d% }) ]) ]3 x8 }
} " ?2 I) D" n6 E
}4 @# _9 k5 q; y/ D& Y
8 `$ v/ K: |5 S
( Z5 a/ A# o( s+ d |