搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
4 M* Q0 g6 k: @0 p6 S5 l
7 L9 w# Z: ?5 |% R2 f5 w$ y% x1 b6 B4 F* _" |9 J0 }7 I
5 I$ l% {: o( y3 Y
1 ]6 P; J0 ]" s9 G
" ]. @& ?% s' T; I! ?
4 Q! m* Q/ J. a7 f
demo 的代码在这里5 g+ e! `9 J& U/ y4 L
}- h- v1 x. C) q- ~3 J2 ^* C" ^: r* I. f0 N
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器: ?9 i9 {; ~# d
. v9 e+ ~4 a/ u. _4 K( Xsbit yData = P2^0;
5 g2 \1 H7 y5 o" L* z+ V: R2 fsbit yDLEN = P2^2;
9 @' T9 d, p+ p! i4 o% A# H0 C3 isbit yCLK = P2^1;
" A# f* v* D, |+ E3 q+ e3 o/ Xconst int dailyCount = 200;
4 Y8 ]5 `% Y4 c& T4 q a& E- f G
% F9 g7 p5 m' H
9 R7 p: d6 z7 Uvoid delay(unsigned int i)) ?( e* z& D! M
{1 s% h, r! N( b* x7 @
while(i--); + b: F: N% E: N: V! Q
}' r, T! l8 w; y+ g9 F
+ u g( z h8 G: z: S" l
- Y: E% k8 A! Vvoid disp(unsigned int num )
4 J6 i! b0 m; y7 y- g' I{
5 z' j5 X/ C8 r' |7 X* o% A unsigned char i ;
4 h- ~4 H3 T! J! J( L2 c& L" O- p2 i- |6 e J
unsigned char dispA[20];
, e; X9 `8 B6 y% n* j9 ?. K unsigned char dispB[20];
4 d- z, T8 W8 S) D/ v4 R: t6 r. P4 l/ L# g2 s3 ^
unsigned char num1;" q' P! }& T: V I9 X5 J; u* T
unsigned char num2; - s4 R( w- ^: j! ?' e* D' V
unsigned char num3;
. r4 W) s, V! @7 B0 i unsigned char num4;
0 h/ k5 m- Y1 e# i3 \ unsigned char segR[10] ; //右
+ W! u1 s* Z# @7 E unsigned char segL[10]; //左6 `0 F* T: |! ]# }
1 L8 z$ A# O8 F. i# U$ ? //左 8 f0 R& V8 S0 ~7 {5 S% [
segL[0] = 0x12;4 y3 V: y% o. r6 N0 M2 E" `) Z
segL[1] = 0xFA;
v: D; @, ~! E* ~, s { segL[2] = 0x0E;/ ^4 J2 b+ r3 r8 B2 Y
segL[3] = 0x2A;0 |! Y6 u! S+ w4 W' g
segL[4] = 0xE2;& m- P$ }4 L, `, l
segL[5] = 0x63;
# ^- u% `/ |7 D6 B( p4 E" U$ F. o segL[6] = 0x2A;' @1 q' S" w* T0 v3 M) q& V
segL[7] = 0x7A;2 i4 _: Y+ R7 a2 r) }) R$ v
segL[8] = 0x02;4 G+ s- f; E7 c# g @/ c, N
segL[9] = 0x22;. H9 Y+ m5 ~4 M, i7 M3 }4 V
( o9 R" ~# K! j5 j5 R# ^$ A% w / x) L+ W: d5 I0 s d0 i
) c' y7 X6 E- @& q //右8 [2 f% ]& d ~2 f( e& j; G3 A' L
segR[0] = 0x88;
0 Y6 j- F. c5 H& ]6 V4 z# M segR[1] = 0xEB;$ Q$ o$ i8 n2 m2 {7 ^' T
segR[2] = 0x85;
, O8 `, N+ g$ ` segR[3] = 0x83;( w0 Z& R" F! ]- D% }, @" c" L
segR[4] = 0xE2;
4 n. R. ?& f. \( X' e9 T& A segR[5] = 0x92;2 m' L/ O7 H' c
segR[6] = 0x90;, ]7 j- u8 J7 I$ n
segR[7] = 0xCB;
; X) e6 g$ K, Q: P: i segR[8] = 0x80;$ B2 q9 G. y \. v
segR[9] = 0x82;) p; W9 C3 j$ o
0 i( S8 q, l# o/ w$ N1 k! _ 7 F' ]$ n; A; m) z" V5 X
num1=num /1000;* q# m* H" C$ O
num2=(num /100)%10;;
6 h% Q# r9 x- M$ k7 | x num3=(num /10)%100;;;
% @5 ^1 d: N8 p' j0 e4 G num4=num%10;
3 v3 q* U' {# g8 N( M( K& g9 v- M
3 A$ u2 _( |' b ~: \ b
5 E# Y% Q# ^, }$ v$ y4 M# l- W& H4 E) _6 S
8 O) L( B5 ?+ h Y3 G* a
dispA[0] = 0;
4 ?6 q- G1 R/ _& ` dispB[0] = 0;5 L& H+ S- m, f! u {
8 J- _( A5 ?1 e- E. H# W! D0 G2 m5 _
for (i=0;i<8;i++)
7 O+ k0 z0 B* U* s I {
1 i5 z) D! X$ T9 Z5 t dispA[i+1] = (segR[num2]>>i)&0x01;
8 o4 X- Y E9 r3 U" d dispB[i+1] = (segR[num1]>>i)&0x01; , Q! C/ X2 T) `
, v3 W |; Z& q& n- N dispA[i+9] = (segL[num4]>>i)&0x01;
, c# t- Y, Q! `1 R5 g dispB[i+9] = (segL[num3]>>i)&0x01;. t+ {$ g6 R. ]* P
}: C9 f1 d/ B5 J
* i" w- P7 s$ R$ y* y7 u& `) P
* y T; m4 i* U0 d; I, Y
1 x3 v" f) U4 a$ ]. l2 m
dispA[17] = 1;, w- y# b% Z+ l& C: z# z" V
dispB[17] = 0;
3 R2 g, d+ _: [8 [0 r
5 {; y, V, h) w+ y2 E6 }. i dispA[18] = 0;0 d9 T( ^& j0 |7 G# E Z
dispB[18] = 0;9 ]7 a' e5 ~. z6 m+ D/ W8 B
& r" {3 B6 [. } S. `% N dispA[19] = 0;; }- [6 j6 `1 w/ y% k
dispB[19] = 0;/ Q8 A7 N& d' `$ f6 M( ^. r
7 [+ F0 u8 S1 r% U y
yCLK = 1;) L3 T! O% i! b `6 O! N
O- l; S! [; c2 h' Q) G! }
3 c, g7 F) J* X% j, @7 T# \& C( K. F: f' }9 e- _
for (i = 0;i<20;i++)
/ ^! |4 t; \0 T8 y9 W4 ^0 a {- S" J5 S- h0 i7 c
yCLK = 1;
1 c! i, |1 c: p+ `$ S6 w- u7 ?. u/ I yData = dispA;- ~% M$ p) v f" L. o
delay(2);
$ j& u1 |* g0 o0 ^, L5 ] if(i>17)
8 I9 Q" ]8 ^: B {yDLEN=0;}
* _, j" E3 N# N1 ]9 B else
+ u1 N' v& j! `% V1 q {yDLEN=1;}
0 p4 ?3 S* K( F0 j: e4 _- j; M! J; B$ b/ C% }
delay(dailyCount);
0 N; t2 D! X! k) a, [ J/ S yCLK = 0 ;
|" K" N8 R/ D: [/ s delay(dailyCount);, ~, I! O( _) J9 u4 ?+ |
}
- z" F3 _, G! O6 N E7 x
7 F. K0 p: ^, E2 N+ F! D" c yCLK=0;
6 D9 o3 Q* s& }7 N, t yData=0;# J( s! h4 w- v& P: ]" k+ y
yDLEN=0;# ]& A* H+ o3 r2 K
delay(dailyCount*10);( Y; R9 k, b5 p( q, j8 M# y, K2 R i
2 W4 Z( I' k+ W2 m) t# C: S* G
1 ^/ }0 b; {- A8 o5 |# ?. x
! ]9 M5 s; X% w6 z5 w& _ for (i = 0;i<20;i++)! n5 s/ k0 Z8 W% W* |
{
4 m8 y+ d- B# b3 C0 ? yCLK = 1;6 h! ^$ A; a; N
yData = dispB;9 A! M* P; m- W. r! @. C
delay(dailyCount/10);" v: P' G' I6 e o$ d& x) b
if(i>17)
) O, S+ }/ d/ n3 V6 P+ t1 b {yDLEN=0;}
4 q. k/ Q, A% x$ }9 Q! C else
K: f( C1 y# z4 V7 @1 U% O4 q {yDLEN=1;}" g; Q4 P* |4 l) M! I
! F/ A$ ~! l# a
delay(dailyCount);
; T( G* C! b* B5 t6 N2 g yCLK = 0 ;
$ T5 J t- J+ r/ f! X6 Z8 w* W delay(dailyCount);( j/ a* @: Z. |, @0 j, i) i
}1 j6 j, r3 A& E9 H2 l! c1 J
1 H: \) s7 k8 q& r/ L" y' x yCLK=0;
/ {& m- Q0 J# k) h" D yData=0;
2 k* D/ M8 M/ K6 C( B yDLEN=0;
# U$ W' a5 B; W* _, z6 A. Z/ c* b delay(dailyCount*10);
( _2 s" J" i6 [* W}' ~6 |6 z8 }5 [ |! F
. ?2 H6 c4 E7 d- P7 Q; j% c; J
6 ~+ D0 p1 ]( ?/ U' K6 h) Y/ @, p! J2 n2 }; a) u
W5 [% e7 u( M
void main()
6 K% _' c$ y. G# U% q{' b5 e- @0 n B- _9 h8 {3 o
while(1)
) f* ~8 C+ o. R# H% S4 h7 G' j: I {6 ^( T7 h8 x( A( J8 q
delay(4000);( s/ z0 i) J) E/ e
disp(0);- g$ s7 A& Y- Y2 L
} 1 B! l( x4 E' F& z0 D1 b- @- M
}
. K0 M) _% p( s! Z0 L( Q
$ h j* t5 `2 s" E9 f5 G; `: f2 |: A. b# E
|