搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
: i) n* A9 a# t8 v. Y- _( ^$ k7 v* r
( r" G6 C8 i; h, g2 n( }# C) Z
( s! ?9 r' }, v' i
9 g3 }( [4 u$ H2 A9 }$ l: ^1 x3 z" s1 U: F! V5 H. ~
: T8 x. V% ^: T! a" H. R% k
demo 的代码在这里 L& W$ a; d, p1 y& A( s
n7 t+ p, S" [" d% [
. [& ] u& f. ~" e( |0 \ ~# R$ L
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
% s6 l$ W5 u3 ?* r4 k8 O7 A B" d7 n$ N/ l
sbit yData = P2^0;
9 H9 f% g, g0 N# C6 {/ Csbit yDLEN = P2^2;& M+ M7 i* U' K
sbit yCLK = P2^1;
7 ]( [4 n: _7 s, o+ p8 l! s( qconst int dailyCount = 200;
5 ]- t2 n2 T" N& B" E% c9 U" G( ~1 p: x) D: @
* v9 q/ j) M8 G' e: z3 x& a7 q7 [
& T; [8 X" }3 }. bvoid delay(unsigned int i)
% H9 n* D9 v. E5 I9 a9 i6 y{
$ R9 `) y# p! r2 ]' o1 F' ]0 }/ D while(i--); " i5 u; y f* u$ }6 x
}. u$ s5 u" t y0 ?; Q
' y% z& a0 N6 _$ g3 r9 o m, L7 a7 p1 X7 w! k
void disp(unsigned int num )) A u: E+ H) H8 f: j; X8 s
{
3 q9 t. j1 S! Q( `9 x- K# R0 _ unsigned char i ;
H# b7 D1 |- T
- r1 z. Q/ P, H$ v! d: M unsigned char dispA[20];
. r. I7 v2 c1 d9 {. v unsigned char dispB[20];) E0 R/ G! b3 y
% |3 k9 B! H; D# x unsigned char num1;( ]& S3 z( R* I: Z G3 Q
unsigned char num2; 7 j+ F3 y0 E6 }( _7 F. D5 l! G
unsigned char num3;
3 n% r. [' t" T' j- h/ O: G8 u unsigned char num4;. k! O9 U3 H5 W' j3 m4 m! x# K
unsigned char segR[10] ; //右
) W: [' s* l- ?8 g8 i6 a- z5 Z! f unsigned char segL[10]; //左* {1 E" u. i+ P
& I/ F8 d$ ?8 N# } I
//左 3 @' G$ r7 g; w J' h1 e
segL[0] = 0x12;
# h# I( |: G0 e9 n4 ` segL[1] = 0xFA;( P& M' a2 v6 {
segL[2] = 0x0E;+ n R0 c1 r- G6 _8 w0 n
segL[3] = 0x2A;
3 a/ }3 ?+ D6 I segL[4] = 0xE2;
) z* m. t. P- I segL[5] = 0x63;
* k# @! m9 b5 i segL[6] = 0x2A;
! u# ]. R0 |4 @; Q! N! ` segL[7] = 0x7A;
+ q* U. V, ^5 w4 D3 g% o& p* a: Z segL[8] = 0x02;! K& V& g F6 j& U9 p
segL[9] = 0x22;
3 j" Y1 K5 x/ v/ ?' d- ?7 I
6 ?* _ T. b2 g" V2 ]) ? / i* j' Z1 H9 c& N& d0 L+ F
, S4 `, W/ O4 n9 c //右$ p* ?: ~* T, e! j$ _
segR[0] = 0x88;6 ]- s" m! a9 e% n$ O1 F+ S
segR[1] = 0xEB;* L9 l% H3 ]9 O2 X# M) _
segR[2] = 0x85;( x h/ ]1 o _$ |1 y3 c. J# G& \6 ~
segR[3] = 0x83;1 i- N' x4 w% A3 Y: { {; l% U
segR[4] = 0xE2;6 g% L! c/ x. _
segR[5] = 0x92;% N9 y; k' E# S6 J" t% w
segR[6] = 0x90;+ x8 H$ x/ r* F3 i* @" \- I
segR[7] = 0xCB;! B# G% e; {$ O7 W4 c5 o
segR[8] = 0x80;; c# K. Y1 W4 R3 s' {
segR[9] = 0x82;+ Y0 y1 h3 o/ M0 U. \) ~7 H' Z
! K# s& E: C Z2 R# o
* ?+ ^' |2 W: `) w num1=num /1000;; K7 n1 f) b0 I* S- I$ i* i+ N. l
num2=(num /100)%10;;. q, Q6 b6 O( |- Q8 S( E+ w
num3=(num /10)%100;;;9 q0 h: D0 T# |
num4=num%10;) j0 G, A" J' j6 W! X
9 [* V t7 Y' V0 ^ T
- t7 G, V$ B% T1 }! Y% U3 n3 L# {
1 f; U2 r8 p6 V# c* m$ v
4 N5 v5 K1 S, [. F2 F dispA[0] = 0;3 r$ E, P5 I7 r% a- m0 Y8 {! s* W" C
dispB[0] = 0;
1 y) p6 t6 ~9 h- T# {3 U. c) j1 c( ~
' a! z c/ i/ [1 ^ H) G for (i=0;i<8;i++)# l) `& D5 B0 Q. s5 @
{
5 Q4 b8 `9 @ O. X( g dispA[i+1] = (segR[num2]>>i)&0x01;
+ v) z8 l& I' Q dispB[i+1] = (segR[num1]>>i)&0x01;
: A+ M; q; T$ j. u* J$ i6 \
4 M+ _* Z! g9 B) T) m dispA[i+9] = (segL[num4]>>i)&0x01;
3 _) Q0 F3 O6 E6 u* L3 N) z: V dispB[i+9] = (segL[num3]>>i)&0x01;+ e, Q( w" `$ S& ~$ `
}
" ]( h& y$ F \+ \+ h % s% m+ S5 }8 M9 P$ M
& y! M+ b$ x2 T y8 f$ x& N$ @
( B+ B* s# D6 Q8 o- S9 ? dispA[17] = 1;6 g! p$ Q- q/ ?+ m+ ` S3 }, C
dispB[17] = 0;$ R m2 @( b3 U* V1 j
0 t0 e5 e( w" @6 c- @) K, `7 m
dispA[18] = 0;7 w! [. N2 f) H! e1 F
dispB[18] = 0;7 j6 o& q. T7 b' Q
( U2 g' h4 ?% j. s9 R( n5 s2 J- b dispA[19] = 0;+ C6 b D& {: G, n
dispB[19] = 0;& ~$ n; C5 Z* d) B9 Y& f9 L! C8 ?% ~6 F
+ U5 y: Z% f' i7 M; M- `' M yCLK = 1;
4 {1 W4 Q& u, g8 U3 s R0 I
o3 D' t& C& m+ F/ i" P2 b% N H6 A! A
6 O4 |- d6 R- ?* b* C for (i = 0;i<20;i++)
" }0 i" ]; k b" ] {8 p/ a' o Z' ^' k1 u1 s/ N
yCLK = 1;$ P2 a" r# n$ W! \0 ^
yData = dispA;; Q# q' z6 r) p
delay(2);
6 |& U5 I! p" x9 M* K, ?2 ~8 W) f if(i>17)4 C8 T" U6 Y& n' f$ w+ `! A
{yDLEN=0;}
2 o) Z5 c3 u/ [- t2 E/ S else
; [ A: V" [* D3 j) Z {yDLEN=1;}
% q: M/ R" U4 F) R8 X/ j) _, y1 }, G, X3 V8 D( T2 L, T
delay(dailyCount);4 L4 ?5 r6 n2 b& c& K
yCLK = 0 ;
! K3 M' J% x; b6 t! d4 ]5 ? delay(dailyCount);. h% ]3 w( @' c; V7 C0 z9 _% v
}7 [/ b3 z0 N" N0 Z4 P% R
1 b% t" u7 Y+ n# e& M4 q
yCLK=0;
8 i" T4 R5 w" `5 a9 z yData=0;. |# Y' X5 k$ m& Q6 y# O6 V
yDLEN=0;' ~! D7 I- J, X) B
delay(dailyCount*10);( ]% ^& {( z0 o8 @% D
/ {9 k9 U, ` w; `6 X3 L1 p8 Z: t- P8 i5 @6 T7 R
0 I. M# i3 n W# P& Q+ t7 C for (i = 0;i<20;i++)( m- c1 S8 I$ s5 S3 N3 S
{5 }) R% y4 e4 r9 [& g; d1 B
yCLK = 1;
/ s5 `2 m ?0 K- a E yData = dispB;
$ P8 ]3 O, d( i: k5 ^ delay(dailyCount/10);/ T5 K- P) b# G" g) N
if(i>17)( k- G! E/ R& n. b2 Z2 l b* R) Z
{yDLEN=0;}
4 P$ l1 d" v- o3 `9 k else8 i) d# k, T$ H+ i \ ?5 _& {
{yDLEN=1;}
! q4 e3 C. j/ p/ T! A4 ]1 l
) s$ M$ l, j0 \. c delay(dailyCount);
6 s* i& A: h: [% c- W* O yCLK = 0 ;+ K1 }! C1 w- @; ]! }& o
delay(dailyCount);
# U1 ]& P. N. P* y% u1 p }6 k7 Z$ S' \4 i2 a$ x* l% d
$ a, R6 n0 \: @6 T6 K* U yCLK=0;
5 U, w/ w% d2 [$ u% n yData=0;
3 E, B' w* @ T+ y0 G( Y yDLEN=0;
' [- s. s" h& k! [ delay(dailyCount*10);
- h, r, \/ s2 K6 O) I# S}% E* W( l0 o) H) k0 s
3 `* ?4 }( G# r4 S/ S. i8 ^/ i! L
% ?4 S6 }( a& ~: b( }. p( x( r
2 G) ]& j8 {# W, J: R% B8 j9 v% d" \, K8 ^8 A3 H& X
void main()
) V1 D8 y( ^/ u# u( d& h{
( S% N, c" ]: i6 z. H# ?0 a while(1)
$ c8 F$ v, u% G& z. a2 r2 n {
9 Y W2 ]8 `* ?! E delay(4000);. m# W D2 A! G/ P
disp(0);; U) _6 e9 t. O9 d4 |0 O5 \5 f* R' X
} . Y @) h: {, T- X" J- V4 u o
}
) Q: @) D: W6 r/ h0 T) a0 e3 @4 z. {
6 m: E7 D- s0 o9 N# L
8 Q; Y! t" R7 b% ?: s. C |