搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。' T4 A/ t2 \. s4 P( f& Y
! u6 V) X0 d; P4 ^0 g; N1 @$ e8 o! V
/ o9 o4 F+ ^/ w
2 `& J" w( w9 x3 ^6 `
% l- v4 F% `8 D
4 d. M' B( z, f. p7 @ @4 L. r# B
3 [6 x' p+ e# v# r) B& e- fdemo 的代码在这里4 y# {0 ]) }9 b- o- t
( a0 a8 X$ D% T% a5 n, u8 m; d, p: @, y4 f' u) J
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器& i7 |0 `. ~$ C
5 \: u6 e" Y7 D
sbit yData = P2^0;
4 N: e0 ^0 m4 T$ ~! ysbit yDLEN = P2^2;
) T, B/ |( |- O3 \' x( Lsbit yCLK = P2^1;+ {) A, |; X2 m7 ~( P6 z; q
const int dailyCount = 200;
+ E% s3 o, U6 l3 a8 O$ U' _4 t3 Y. [. l f( F; d1 ^, Q0 [) V! Z4 c5 r/ I
8 _( ^+ R4 |: e& h5 W: t' i: f4 ~: k, |- i
void delay(unsigned int i)
( m+ D! @! W/ u$ u( Z' p; N% H{( x. E& u# x1 p. L. m a+ w- t. \
while(i--);
, b( Z; T D2 |! X}1 L/ I8 H- ^9 r* n% k
$ {2 u7 l- z1 _4 s: b' v
9 T; v( C% `, k7 U/ Cvoid disp(unsigned int num )& U% l( k9 J- x3 V P
{* p- s7 q- x" W; [7 B) E
unsigned char i ;
8 S$ q8 J3 X- ~3 p, z3 l2 U% }. g7 L0 L
unsigned char dispA[20];
a/ b/ d& |8 [9 l9 y" O& S unsigned char dispB[20];
; v4 m/ G3 E- }" w& U, b9 x. l q" W7 v. t1 q
unsigned char num1;9 a) T2 |. ^ Y4 t+ u1 C6 C7 T8 h
unsigned char num2;
9 B& L4 d( _6 C. y9 ~/ U unsigned char num3;
0 r Y6 z2 y+ z6 z, D unsigned char num4;) m0 a6 k( [$ G W- j& s
unsigned char segR[10] ; //右9 B( w( S% P: p6 [: P
unsigned char segL[10]; //左
8 i8 F1 d6 Q/ a6 { @
* ~$ }1 w+ ^7 F+ }1 [ //左
/ U/ \: ]1 X/ f0 p1 T) Y segL[0] = 0x12;6 y* I: @$ w4 z
segL[1] = 0xFA;% K7 Z1 P( `6 x+ n! R
segL[2] = 0x0E;0 v& @! m# N. r' }
segL[3] = 0x2A;, ~- r5 _7 M( v3 v# q2 i
segL[4] = 0xE2;
" Q0 A5 ~* P6 T5 O1 Y segL[5] = 0x63;
8 D7 G: W, g9 ]! X2 M segL[6] = 0x2A;
% B3 r" s2 B3 l: W segL[7] = 0x7A;+ | r5 Q% S9 M N. n( A. H" `
segL[8] = 0x02;
( R. Z: N/ @" V9 }( n1 `0 o segL[9] = 0x22;
( T- j5 e1 S* k6 \7 `1 @8 D
4 C1 |7 ]" {8 u9 T1 \9 N$ g
' F% F( I; a" r2 {: a7 @( r) f ) N+ ~! b& ]+ P7 c
//右
: o( e' m% D+ v- c7 _3 T segR[0] = 0x88;5 x C) F. q I$ G5 K9 b/ R# `: @
segR[1] = 0xEB;8 f$ y8 K2 C! T0 `! c3 Q& K
segR[2] = 0x85;, W g) y8 ~0 z" K7 _7 m
segR[3] = 0x83;& u3 f4 _2 O% \" G3 g) N
segR[4] = 0xE2;
; {, v3 o( o+ P8 M: s X$ b. m segR[5] = 0x92;
1 g! M; O# y, }/ r$ Y9 O: U S) s+ J segR[6] = 0x90;! a# c, ?$ o9 t
segR[7] = 0xCB;
; z: o. R) B x! r: A2 w& e segR[8] = 0x80;& ^4 T& \9 {; h9 x
segR[9] = 0x82;
% F2 H* s+ X s( T) C5 ~
5 b: F$ n! @& Y& f0 F9 [3 | e9 v : B" g. i A# G, W
num1=num /1000;. a2 @& k* i, a2 X
num2=(num /100)%10;;
1 D: R1 x: E) Z$ z num3=(num /10)%100;;;
; e- Y/ v2 f' g num4=num%10;
$ Y2 j# ?6 k& z3 L7 b
9 w9 \" L1 r0 U5 T% S, J$ |6 s3 \+ A, R4 X/ @8 C# g' H4 ]
6 [, | N( L! w* @% B
7 N9 P& M" I% B8 m! ?
dispA[0] = 0;2 ?% ~! X, H# O. M- s+ \
dispB[0] = 0;% R. T( w6 r2 a! z2 C$ v1 T6 w7 `
5 r0 u0 Y0 T+ h8 J7 A/ L' w5 t& a! j8 \$ o3 Q, D& |
for (i=0;i<8;i++)
! x3 K7 Q7 p8 a: F* i- ?- B {2 K1 n( G. E5 Z/ I3 v4 B2 N4 H9 b
dispA[i+1] = (segR[num2]>>i)&0x01;
' e+ j& x) T0 z* e5 I0 T- Y- A dispB[i+1] = (segR[num1]>>i)&0x01;
0 f& J# y1 R8 p" o; @ {8 T( N" }7 [1 ?% s% X3 _2 k! S% y
dispA[i+9] = (segL[num4]>>i)&0x01;
/ d! U+ n G& d2 x' u1 E5 P dispB[i+9] = (segL[num3]>>i)&0x01;( S; ^+ W& k9 ?0 B) H4 h& a
}
- q( Y* w8 K5 s( K% Z3 U' N
2 }& l6 j3 ]0 f M1 c# E, }- i. z6 b8 S4 I
$ C5 j# V! S2 H" O2 m dispA[17] = 1;
# G2 C+ O" P9 C3 T, B, r1 ~1 K. U dispB[17] = 0;! E. |* M0 k( t+ \+ N, W
) O/ Y" A3 r% A2 Y" \
dispA[18] = 0;
; ^$ | V' o* d) n6 ~ dispB[18] = 0;- [& I" `8 \- a) R
5 l1 R" L, Y- `1 S, t4 k: ] dispA[19] = 0;1 [8 ~& z# S' L5 S" F! e3 Y
dispB[19] = 0;9 L+ X* i9 M! C2 T
# f" M$ v6 |9 j- b" Q5 E yCLK = 1;
; k; Q& K' b0 h( n4 y2 a& Y' |2 X9 i# [, G0 K8 v1 N
9 a6 O( w. s) g( e
9 L8 h; {( f* i% j8 S+ ~ for (i = 0;i<20;i++)
- x9 T8 [9 d! s5 O2 i {: w b! h; d' B1 x2 y w0 S
yCLK = 1;# m8 S7 K; G" {- l9 j
yData = dispA;
' y* o6 D/ g8 u delay(2);* c, l' }4 s! U6 [! m! J' ?
if(i>17)
o) ?. @% Z- ^$ X# V {yDLEN=0;}5 O) p. u% R) f* n* G. ?
else
+ A) }) o1 K: C' F$ i# b {yDLEN=1;}& H7 ~% M8 [# t* j% ?
1 h2 u0 t# ?) w$ _' C2 `* |0 B7 J
delay(dailyCount);
- a, R0 a( n7 L* @$ U. b yCLK = 0 ;
, ?+ [6 l9 _2 G delay(dailyCount);# u8 @) H5 ^ G0 W. G: f
}
& n0 k7 w4 r& J' U2 L+ {7 p7 Z9 S& } i9 [$ R! i
yCLK=0;
" w" H) e0 w( E, x) y yData=0;& M3 X3 d8 n- B2 T8 R
yDLEN=0;6 r- B& y) x, ?
delay(dailyCount*10);, t. `9 Y4 z# b8 C% A
^- T, j1 e& |- G8 f
* b7 [; N a# o: }- e, O
* b4 R ?$ e( I' J7 r, L% {/ d for (i = 0;i<20;i++)
. d2 w2 n7 Y! J5 l {
6 G9 o7 Z* r* d) P0 l5 g yCLK = 1;
) t [# W- J4 \ yData = dispB;: T( S6 ]* H! e/ a( V3 N# o) x3 Z
delay(dailyCount/10);
- F: m7 K0 p7 I8 f/ x# h" w7 c( M7 \ if(i>17)
/ {. I) F9 j: Y7 _ {yDLEN=0;}
) E7 Q' A4 p2 v" g% c( X. f7 Z else4 x: M# J! M+ n O* T- z
{yDLEN=1;}7 e; `9 t7 ~$ L: H7 W* J9 h
+ I7 ]2 M; i3 J" ?
delay(dailyCount);4 m. P/ `9 H0 r8 S( n
yCLK = 0 ;
% D: Z/ Q: t) d4 C delay(dailyCount);7 w( D! n& t* ?" F3 v4 e
}) ?: o4 V( r. t" l, U
2 w/ \+ X6 \9 H- R( E yCLK=0;
* z9 Y `% K, w8 ]1 C9 A yData=0;* R1 {0 H, S0 p2 Y
yDLEN=0;
% x- [/ Q& n+ j. T delay(dailyCount*10);" i. d7 ~: r7 f. J4 K
}
4 z" E( }1 {4 N/ @; a! u `& u* a
3 s2 ]( y+ j. X* o
+ c9 h) n7 ]3 A$ t% }' p
! E/ m+ h: s, \1 z* n, ]void main()
! w3 Q6 F2 R$ {" {0 U+ [, a w* _3 t/ L{
+ z) a* {2 w) E/ L& A while(1)8 z" b5 n5 _9 M" P6 z' K
{
+ R1 f* O# M$ z i: d/ ~3 r delay(4000);
. ^ `/ n$ I n: q# g disp(0);
/ n" S7 A/ E3 L# b }
8 @+ S. u; B: n) n" K}& @1 f' x& Q# B; W6 a+ P0 g" n* ^
J" r% n2 R2 ^" _5 K3 Q
+ k# _( u' }- w
|