搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
6 H0 }' n# |8 T8 M3 K3 n) L) i* r. `% I
) f" q- ~8 m7 s: {! p' |
0 A" \: ~2 a. _, G
% c& G4 J$ ]% o4 h
7 _' U4 Z8 ?1 U, E: j* |, ~! \# |
. V0 T) b- y {demo 的代码在这里
/ t( b; X" q! G* T. g
1 b, q+ E5 h+ U0 V- v0 n# e, b. u, @2 S$ T- ?* ^
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器, o* f/ q+ J) N: M4 {" \& g0 @
) H# K" Y. Z3 A! q" T) ]7 r
sbit yData = P2^0;% p2 r; g2 [% s. U2 s/ l' u
sbit yDLEN = P2^2;
3 y$ q/ M: b0 i: ?: J8 Xsbit yCLK = P2^1;) B: A4 H; u2 `/ ~& v; @( k+ O# |
const int dailyCount = 200;1 F) ?+ Q$ Z' n' R
: t7 Z+ y6 M8 @2 u+ j* K" M9 M" Z7 l& I: U0 l' s
7 p/ L/ `8 _) [0 U% ^void delay(unsigned int i); S+ Y' f" K# X; {# A# I
{
0 ]* M% {- \) x& V) E while(i--); 2 I) f. o6 z, B! l% t, @0 a
}
: O5 L4 h' t/ v" x$ D! h5 J5 t& D+ H& R/ j/ X5 x5 R: _! J% w2 ~
+ B7 ]: _; Z1 s" jvoid disp(unsigned int num ): k( \# i2 Z1 Q( w9 V
{
, o7 r5 l) G* g unsigned char i ;3 E; g |3 D- }; T3 L) f
$ [% N. [8 O' a$ _ unsigned char dispA[20];7 P( E" `" N3 Y- W9 m
unsigned char dispB[20];5 J6 ]( P* V( i/ ~0 c7 ^% J* B
- J+ l& I" F; z' u3 Y9 ` l4 X unsigned char num1; B' o; Q @) [
unsigned char num2;
6 w, g) C y, M6 Q unsigned char num3;" c$ s, M' O# Q! Z3 }7 b
unsigned char num4;
4 z! ]! x8 f* N$ E6 L! P. ` unsigned char segR[10] ; //右
! {5 [( f9 t( W3 Z3 G0 j3 z- d4 Q1 N unsigned char segL[10]; //左
Z' _; D, N4 M' m7 q, N0 `7 k( Y5 {$ q- o V
//左
4 e8 q6 m* x' @5 Y6 I5 l segL[0] = 0x12;
/ M( d2 h( S# H) V segL[1] = 0xFA;
: F: U( M& C' g. H$ z. ? segL[2] = 0x0E;
' o! I, ~. W \8 R1 x3 B! ^ segL[3] = 0x2A;
+ J5 x2 H5 t1 N* ]+ ~8 ? segL[4] = 0xE2;
( E; P" J* r( M% p5 N- ?) c; p segL[5] = 0x63;) ~0 b# b4 G& O+ n
segL[6] = 0x2A;1 f5 J1 m) G$ g8 x' n6 ~8 s" K
segL[7] = 0x7A;
3 p' s7 v( q# j% g0 U1 f M segL[8] = 0x02;5 `$ K+ `8 y; M7 t6 {1 q+ U
segL[9] = 0x22;
- H3 P/ a" ~- ~
9 v; n9 c( p' }7 L. P0 w) R* G ' R3 p( a2 A9 c' T* X0 h0 t4 p
% _. q+ E# G/ O* X0 b
//右5 s- [; j* E$ g2 U
segR[0] = 0x88;
% U. ~3 \) h5 s# _1 E$ K segR[1] = 0xEB;! S7 _3 U' i- X% A
segR[2] = 0x85; Y9 }5 P' j2 I& P9 L4 P& X
segR[3] = 0x83;
Y( p4 F( \4 P( u! V9 } segR[4] = 0xE2;
6 L0 W0 o, L8 A segR[5] = 0x92;& O& H$ [. i8 `! B5 p% h2 @
segR[6] = 0x90;5 M$ B* }. }. Q" x N; k
segR[7] = 0xCB;
+ F0 F5 ^2 U" K8 P% d ~# k segR[8] = 0x80;% E( I; Q( V* q8 b( C
segR[9] = 0x82;; x! o& a n! p' _. j' I! T/ \
3 q H$ O# I: Q
. e9 n7 g9 a4 N+ d num1=num /1000;, T5 }" @1 g2 Q0 v# ]
num2=(num /100)%10;;8 P, `9 S/ I& h2 o1 |
num3=(num /10)%100;;;: C ^% H( V0 s
num4=num%10;8 L; y# n8 a1 B& s9 K: p
0 c0 X$ x ~! S2 w* u+ R/ h7 H/ B) Z4 s3 S& A3 C" }. j4 @( W
2 q l9 R9 k3 F( ]( t9 N/ r/ ^
8 ]* U- `- A" e/ W9 O
dispA[0] = 0;% o( n* P$ n7 i$ J9 l7 F
dispB[0] = 0;7 d& r2 p" e" N" g% b' W+ ?
% Z' C& a/ c9 f4 x
' e9 i- s- f* V( Y for (i=0;i<8;i++)! H7 w% d D Z( r2 X
{: k# S! o0 r6 w
dispA[i+1] = (segR[num2]>>i)&0x01;
+ {2 H( b9 m. s# k3 D$ F dispB[i+1] = (segR[num1]>>i)&0x01; % t* U$ o: M3 d
# ]: m9 x) Z& D
dispA[i+9] = (segL[num4]>>i)&0x01;+ A0 r0 R( p- U! K
dispB[i+9] = (segL[num3]>>i)&0x01;& A* p d% e2 ^9 W" z
} G6 C0 J1 P+ }& m) \
6 _4 f; f% W9 Z1 v
* i5 j$ Y% b3 E# e* D y5 k
* o- T' `5 a( N9 Y, w& {% \( W dispA[17] = 1;- A6 m% b# |6 v8 r- [. ]! r
dispB[17] = 0;4 G: D) Q! E! n0 b
& t: h) Y. b; \+ |, x; A dispA[18] = 0;
8 k& t' H# ^1 F' a3 R dispB[18] = 0;
5 ^. y9 \ W# B+ b3 }. V& I- {5 y; h/ H" d1 E5 _
dispA[19] = 0;
- X1 J4 a' y# v/ ~+ D dispB[19] = 0;2 p N$ A+ M: y' Z- y$ |$ m
6 E, `' g8 ] W* z yCLK = 1;4 ^2 Z+ y, u0 h1 [! N' u3 B
" i; }9 Q1 e; B0 e
" ]" f- R/ k' q6 S
6 N) M; k4 t$ o# ?0 ^ for (i = 0;i<20;i++)
) O7 }! b3 `+ F1 P8 S' z {$ A# B( e+ k0 k7 `. X
yCLK = 1;
2 Z6 S' X" _* H& R3 w yData = dispA;
& G3 u- z) M& G( ~2 _4 V delay(2);! p2 h6 x* d1 m4 E' a
if(i>17)6 @- h& I7 ]: X4 h
{yDLEN=0;}
9 \! y6 T( y5 Z$ x9 a else& p" O9 O( e, j! v# I4 j
{yDLEN=1;}
+ d; f& t7 c4 o5 q( }7 `0 A1 ]+ W
0 |2 A6 x# } | H delay(dailyCount);
5 l& y+ @% W+ k yCLK = 0 ;
" r8 X; r# {' q delay(dailyCount);
% w& A/ }* l) z) S }) F& N( e3 `3 ]2 }$ c, m& [
5 D7 t2 C: i" S8 e4 ^
yCLK=0;
( ^9 H X0 X; f% s yData=0;3 y9 a, C' R. _6 J0 w9 E
yDLEN=0;$ T' _0 H$ q7 c. r3 g
delay(dailyCount*10);
) J9 T8 ]; R: k4 C+ P1 v " N$ B6 K% p: e
) m& u& Q8 m: t9 o8 J* e1 E. k. [. k' p" b' N& e- {9 _% ?4 ~+ M
for (i = 0;i<20;i++)
$ I, B" r2 G1 T8 V& L! K* y! M* k8 J {; {) y1 _; z. d
yCLK = 1;
[6 @7 ?/ U* c yData = dispB;
6 F" M1 R1 ]1 X/ L4 p* H delay(dailyCount/10);% I+ Y. F3 @$ {! \6 C6 m4 O1 h
if(i>17)' b; \- k9 K8 v4 s1 z* B
{yDLEN=0;}
; e2 G4 B! x2 K; i8 J2 n- ? else
4 b8 R* ~+ [# a) l% V+ {$ r {yDLEN=1;}1 a' O3 w* q8 k/ m
5 {- i) J) @5 G, k, e delay(dailyCount);# A, c- J; ` }: j
yCLK = 0 ;
* Q9 P: F8 S* i2 ]: B. g delay(dailyCount);
; \- ?6 M. X# k( X: [ }" O( v# W( A' z2 h$ V; P) ^$ r
1 p+ Q3 J7 r' ~/ } l
yCLK=0;8 g* I7 d' [0 U& C- Z
yData=0;
' b5 h/ _1 A+ |5 |8 n6 s yDLEN=0;9 @# {/ }- D9 P' z4 S, X/ q7 ^$ e
delay(dailyCount*10);
0 b0 X+ Q' v, ~; r8 X! V8 |; y) r4 h} Z$ _7 j. M$ H z
. I/ G7 x! o- M a3 q/ f F
3 I+ ~& J) m' |( C7 u
" d& S" a0 B3 q( I( T& R5 y% i0 V) Y* J% J( { @& `% x
void main()
% e+ e4 f* q$ i, I5 i8 L" X{% Y: }- Q2 K/ q: y/ ^
while(1) t# t) @5 o- ]% e Q
{' ^+ r3 p F; j# U5 f
delay(4000);
( `6 k% s# K' ] @ disp(0);# ~2 U5 [3 c% P4 C. i3 u6 E: Q& B
}
W% ^" ^3 ]- u: j( X}% D7 l' D# t+ |9 e
7 z4 O, M1 E8 [. H8 ?$ P* O7 @( M- F7 m' `# f
|