搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
' _' l6 Y8 Y8 s% g% e- x" h' ^: K' ]* n: | i% {
* ?1 G3 @+ ]( S8 r: O! e
; @0 B/ ]8 c. e; E2 j
) z G" Z2 l2 C' {8 T$ D' @5 I4 Q( P3 R- v
; O0 [% _! W; E4 e: e/ {1 k( f8 U
demo 的代码在这里
7 }& r% @% j" M9 T' |* z/ r0 x" t. g) j! |' Y3 w
' {& p4 @% F0 [& n+ w
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器& f+ K7 `: Q1 z$ S6 \- t& W8 V
8 P) R, O% ^! E& N/ dsbit yData = P2^0;! l% s1 M. w3 S' M) m; c/ s
sbit yDLEN = P2^2;6 S; k: s8 l* U* h: J
sbit yCLK = P2^1;
9 F( T8 h% r+ m9 I- rconst int dailyCount = 200;
, u7 f; F U& V! H& n1 r4 u, N' K7 j! f: _* T9 O; }0 g
1 ^7 }8 E. P5 a# x9 V( x* o u
! r& U7 Z- y% N) h1 B8 P ?void delay(unsigned int i)
# R. m7 y1 G- h2 K{
& b' n& m* H6 I! y7 v | while(i--);
% ` i7 B5 U( b! Y}0 [/ c( D0 p% P/ c9 T
% \% E$ ^: B: D7 z; w
?5 v- _7 h' Z) j9 N) [' kvoid disp(unsigned int num )
8 A. c4 ?% {, x P& u4 h, {$ g{& j' s! O1 _ q2 {4 i! g+ d" v( a! O
unsigned char i ;
" S& r$ b% s4 J: L c6 q$ B" z
" e$ N/ t7 E7 j! Z unsigned char dispA[20];! ], w' I9 t) D7 T0 [6 k
unsigned char dispB[20];& x/ ]0 r/ f. Q! \. Q% N C; w. A
4 L0 Z7 }+ |: f2 e4 j5 ]* ~, N& ]
unsigned char num1;
8 u& i3 O( ]& c: t, M6 q unsigned char num2;
+ H. N) W" s; B- k+ F unsigned char num3;' \5 O2 W: }1 b" T# P) Y
unsigned char num4;
5 X, I" |/ t$ l2 f6 F7 L1 }2 P5 C unsigned char segR[10] ; //右; ]/ l4 b5 f- x8 t% z: b
unsigned char segL[10]; //左. i" K9 Z( ~! n
. F, b' S- x; v
//左 0 o8 T9 ]7 e: \1 {( G5 @
segL[0] = 0x12;# T' T9 y. U( T- G8 i) j
segL[1] = 0xFA;
- c+ N i4 j- S5 p segL[2] = 0x0E;1 x- G, h* ~# E, w5 t, d- l
segL[3] = 0x2A;
. r# x0 f& U. _* ]3 x6 H segL[4] = 0xE2;
# Y' }8 U( l9 i L! } segL[5] = 0x63;
7 _7 J) S6 E6 P8 Q& | segL[6] = 0x2A;
5 }9 o4 O6 [6 i* Z' h segL[7] = 0x7A;4 h' O8 I. Y8 k: {& X1 H4 l
segL[8] = 0x02;9 R, \, A0 m8 a
segL[9] = 0x22;
/ d% y& @7 w. x
# d. j; B, P/ b& ]; F 1 [! ~1 G7 z# k
) e: g' C6 f2 [ D& s9 C //右7 S& z" h4 [6 Y. S. U) @
segR[0] = 0x88;( ]3 y% j- ^' I1 }! m8 \+ G
segR[1] = 0xEB;2 x1 Q# M5 z( C3 ] Q
segR[2] = 0x85;. a% |% O% [' ^. M8 L! p
segR[3] = 0x83;
/ @ B. a9 ~' O" T segR[4] = 0xE2;5 s! k$ W" {/ y7 b
segR[5] = 0x92;2 k: O! W2 k" }' ~ y. z
segR[6] = 0x90;/ K' k8 s4 `7 c# b" }
segR[7] = 0xCB;1 R2 X0 K$ Z5 m4 a; Y' p# C
segR[8] = 0x80;
0 Y6 M$ {3 r0 Y+ b2 r4 U segR[9] = 0x82;
6 l; x: b8 J4 X7 c: n" n) T4 M) @2 d2 x O( J
6 S) i i- j, D( S( K4 ~" m0 D
num1=num /1000;
- k$ n( F: T4 X% f) ] num2=(num /100)%10;;
/ L% x( _$ d1 N" I& e num3=(num /10)%100;;;
8 p7 l/ j) i( D num4=num%10;3 ?; ]' _9 ^+ J8 E0 Q: t
. a3 d6 {" l0 z/ s* r
& \. i2 M# N4 g: l, L
( m8 i2 C" V. u) v+ [, [$ ?7 a# Y" p9 o8 `" v, y) Z9 L) m0 j* T9 _$ C
dispA[0] = 0;6 ?' o. f- [. Q$ Z: E5 U
dispB[0] = 0;* g7 B; @& a3 _# t
: z' ~" p& z3 ~" `% a* K# }. Y7 R
9 M! P7 j4 }5 X for (i=0;i<8;i++)
; O6 _' i0 m) k2 W B7 ~ {# p& C: u" b) A( x
dispA[i+1] = (segR[num2]>>i)&0x01;
1 {1 ]9 C" t# d! b- M, w& @ dispB[i+1] = (segR[num1]>>i)&0x01;
$ k" a9 _$ ?: ^: M5 W' A- q9 L5 @) a: Z% L; G5 v
dispA[i+9] = (segL[num4]>>i)&0x01;2 L* Z5 w8 N7 Y9 h X2 [! R
dispB[i+9] = (segL[num3]>>i)&0x01;* |( `; M5 n; S- X3 k
}2 T, z# S5 P" X/ t! D* \2 Q! ^9 T
/ _. U( u7 T" w) T- [5 C& _ \: h4 M- E
! L1 Q4 T# y d dispA[17] = 1;% x4 @" U# i! |5 e3 p9 K3 T, k$ C
dispB[17] = 0;
! b$ m: | d# ~- ~* @8 y: o; Z: b) V2 `, ~3 f( r, M i. D! ?
dispA[18] = 0;" w4 `3 h5 g d
dispB[18] = 0;( T3 G6 X! h) }) R0 f. W; q
2 n8 B8 i! h8 D( N6 Y/ o; z
dispA[19] = 0;8 f3 M, S& v) h" t; x
dispB[19] = 0; C5 t- | G8 o0 t, b
5 z" Y* H% j! ?2 Z# |/ ` yCLK = 1;& f7 } `2 ?1 b" f# z& D- _
' N0 Z( h4 I$ _) N* K
4 \3 ^. q& N. ?: N
) A2 j6 g) [3 a for (i = 0;i<20;i++)
& t7 Y% j5 R1 ?0 X/ `, P; \) P {
2 w( O2 G- a8 @% f0 Y' [" h B yCLK = 1;1 Z1 D/ `3 ]1 z# J9 d- F# e
yData = dispA;
5 g8 N2 |; d, g' m delay(2);
+ n {# g7 B2 X9 G* i& e9 M: N1 I, ` if(i>17), p/ T, p# c9 ~/ A9 Y7 W
{yDLEN=0;}' o% W, r* s! G- y# e1 D0 I9 i
else
4 d( e: Q" a0 m; M7 f. I. ] {yDLEN=1;}
" l% P; b, I6 Z* o- s- m
" B+ H5 ?) w; Q$ O& o delay(dailyCount);1 s/ X- ~) J" l% g' z6 X
yCLK = 0 ;
# A+ P5 u' u( `* @+ j1 V& n delay(dailyCount);( X0 Y! V4 L2 c; c. j. ^
}2 @6 k3 Y/ K j$ ^1 T
- V0 V3 V2 C, `' p& H yCLK=0;
1 G# f. J$ m$ b; F yData=0;
& L7 Y( f) H2 K2 y- ?& _" T# g8 `) V8 n yDLEN=0;: |7 V# b$ K9 @; n c' C# s
delay(dailyCount*10);8 F! [7 \7 ?" g2 L0 [
) I. M0 Q# G" T- G2 o! P! \! M
/ L5 U y8 |* [, @5 Q* e" M" e' N+ _' S8 O3 L7 A! k
for (i = 0;i<20;i++)
% z! o+ r g% y {
% Z6 \3 X4 U) q" F) g0 L" \ yCLK = 1;
( P3 }# d9 ]; L: v6 K% `3 m/ j% B yData = dispB;/ v" X" D* F* i+ U9 L. V1 l
delay(dailyCount/10);2 T5 J0 v" u7 M; y( H, G0 R
if(i>17), P. A+ W: f6 z& x& m
{yDLEN=0;}1 E/ {! I* M! B5 m( R
else( T8 y& s" u5 f0 A+ G2 T
{yDLEN=1;}
3 V+ z+ Y+ I: G1 v |' b6 }1 D; ~8 D; Q6 c, w! C; P9 a/ d: X
delay(dailyCount);
8 L0 t( W( z5 y1 N yCLK = 0 ;
! H3 O B0 }8 E; q4 x delay(dailyCount);4 W7 A @9 k& Z8 X2 j" ^
}/ Z# ~$ D3 M0 @, G* v& b
/ _/ i" `/ F9 E: d
yCLK=0;
, H" r6 m8 h) d- W4 G yData=0;. o; S1 h& x$ [, L. I: t8 k
yDLEN=0;) r+ g8 j8 W6 `3 {
delay(dailyCount*10);
" O' I% q& [4 E/ ?}
5 [6 y1 I; f- p! m* l
! T9 D6 t) c2 @4 |7 b' y; ]+ x! p) n5 }5 K
. |' i+ X) \9 a
$ n: \& |$ x; b+ ` H3 g( xvoid main(), A; ~5 S9 S7 C7 s$ b
{
$ V" T, t7 Z$ h. W, }$ H7 y s: Z while(1)0 @9 l+ s1 Y6 a" M
{
) D' n: K+ n; l4 y delay(4000);5 [) j0 M6 N" w" k4 m) Z
disp(0);# j3 i" [5 `5 @, S% }6 ], L
}
+ y' }% K9 P$ x" v}
0 u( K' s0 K* `/ {. R7 d' G+ v! E- {
3 |% Z- C8 X/ N, {
|