搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。7 f: |+ J8 X" N6 W1 l* [3 v6 k
$ f! L0 M8 F& s- ~8 W3 X! `. S9 }6 L) a. ?
2 X( D# P. T, S1 I6 h2 e4 Z5 u3 V8 ]3 v% a* n0 S' ]8 ]
. ?; j8 A1 z6 q" x8 x
3 _6 T2 _) Z) U* [demo 的代码在这里: q+ }; j7 c% ~; I9 m( c% o
. ~ R! y7 M) Y* \
/ u* Z/ z4 k: T7 E+ _' h& o% ^
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
4 |! O- m; P4 O8 ?: d1 ?( c
9 y% O. }: T) A2 ]2 ~sbit yData = P2^0;, y' ^/ k8 ?2 v; o* B
sbit yDLEN = P2^2;
# c' x+ I0 L. y" J7 _- F6 Esbit yCLK = P2^1;1 C1 v, E, X) J) j1 P% G+ ?
const int dailyCount = 200;2 l( n9 z. k0 b7 b
- S! Y" |% B7 @7 {; m6 E+ z1 O9 Y. ~: ?) a
$ v. Z4 F2 Z' _9 V- V
void delay(unsigned int i)
! @7 _/ O6 Y, k: J8 |) D{
# G1 z- w- L8 l8 A' J+ N while(i--); 9 E6 K6 i8 X. f" y T/ T( s% g
}
) ~" S+ A ?) ~7 @6 }% k( z
+ O8 [. X& j% Y4 L- c! Q( E) B" C% p, a0 \* a3 k6 S
void disp(unsigned int num )$ J5 Y0 \' A3 V7 L! H' p( E, }' \
{* I7 e0 R* w0 I3 D/ o" C
unsigned char i ;/ V( R# S% L4 e+ }2 T6 l* s1 C% V
8 q1 i) ?3 Z) j3 S- d( z9 g! O
unsigned char dispA[20];
& i- @' h1 Z I6 u; l! i unsigned char dispB[20];$ t, G" c0 t' h) M+ L7 O/ m
7 q) d; K2 T* f8 b2 T3 D# j+ M unsigned char num1;9 K0 Z& \- s/ i4 |/ }
unsigned char num2; ! ]* f) {4 h8 L
unsigned char num3;
" _3 {1 `) u# v8 G! x# C unsigned char num4;
7 x/ X9 C6 t" T. g* p unsigned char segR[10] ; //右
, \5 I, ~* L" N$ j unsigned char segL[10]; //左5 V$ {0 q! w% R# c2 I" m( p
, R; }3 C( M" S% s //左 ' V! @" D; R/ {. o
segL[0] = 0x12;
7 Q: L* H* b/ u2 D segL[1] = 0xFA;! R i: i4 S( M8 E* `
segL[2] = 0x0E;& S# L5 Q! ~0 X
segL[3] = 0x2A;
8 D7 g; `+ P) L segL[4] = 0xE2;3 u7 k6 ]2 F. w) ]8 h5 @) ?
segL[5] = 0x63;5 @. ?8 l8 K1 n7 L2 j
segL[6] = 0x2A;, E2 |+ H: h0 \7 W' C. \ O) J1 W, o
segL[7] = 0x7A;
! {, R6 D; r: [! j" c segL[8] = 0x02;8 a6 x& D* H/ m6 z: b: u
segL[9] = 0x22;/ S) f1 F. U5 g! n
, l( o- R7 m+ B, f4 X+ B) D + E w7 M f; K
+ @- G2 j0 B% C1 O" v5 J9 X0 V; C3 R //右
' Q* y# i/ H" R: l. n segR[0] = 0x88;: s- X5 f; M! p& y% c8 }
segR[1] = 0xEB;
5 I3 h( Y( x4 c+ e* ^ g9 l# A9 ~ segR[2] = 0x85;8 {) D- u8 h* |/ F% o# G' n% f
segR[3] = 0x83;
- @+ n* } x2 z segR[4] = 0xE2;9 `+ D; `/ V/ a# k3 \" h: a
segR[5] = 0x92;
; G0 c4 j, c( x segR[6] = 0x90;0 ~9 O2 n. F! A. ^. I7 ?
segR[7] = 0xCB;
- g3 b9 Z6 J2 }+ G segR[8] = 0x80;
5 x0 R# O8 X: S& H$ x segR[9] = 0x82;
; _6 L7 L( y9 x5 F/ [$ S4 _) v( S; q- y, M4 y$ c# ~# n- Z" B" ~
- }, J% e4 E% p9 O3 G% [
num1=num /1000;) m$ \# @! `- m6 Z
num2=(num /100)%10;;
/ ^( \4 D( e; |5 f; A num3=(num /10)%100;;;
& L! ?( q2 g* P6 u" L num4=num%10;
6 [. y4 i8 Z+ Q5 B
/ ~/ o! ?, r4 C2 K8 j) X% o! X/ C- D: W
+ a( A6 a4 Y* g9 D- c! ?& z9 I5 k. c* j( J0 j3 W% r
dispA[0] = 0;9 Q1 U3 X* z% }# u0 Q
dispB[0] = 0;
% Z( L& v6 A* [ w* f# A$ z# ^: D5 e, g
3 I/ s+ ?0 k% _
for (i=0;i<8;i++)7 J# f" F, ` y
{
# }0 `8 ?' g5 @4 T R dispA[i+1] = (segR[num2]>>i)&0x01;
5 ]! E' H$ v) S* v; C& b1 ?- C5 U dispB[i+1] = (segR[num1]>>i)&0x01; {7 V) U% k' K: F' a+ N
- j7 {. j v" f, e; s* p
dispA[i+9] = (segL[num4]>>i)&0x01;
7 q* Z. h5 v* |/ U( | dispB[i+9] = (segL[num3]>>i)&0x01;2 z* E5 L' V3 @$ {
}
! y1 A1 p+ t6 i& @4 t 7 F, z1 m& @0 T4 N1 B
, O. J5 _- G6 @! p4 t8 a0 } H7 @
* i& M/ Z/ T2 x( ?" F4 X dispA[17] = 1;2 H, y. Z. J- j' q
dispB[17] = 0;/ a/ h/ Q5 I7 A! W) O) W# y6 z9 p( |. Q# X
3 U& a/ `* u& G dispA[18] = 0;1 D- `; A$ i7 T, g( ?( `' `/ v) P
dispB[18] = 0;
0 q0 G [- |* j$ R# u- \ b$ e
7 J- x. I' f% Q) q! }# h dispA[19] = 0;
3 L8 X+ @9 E6 h s1 d U8 T dispB[19] = 0;
' I" Q: I7 A( J9 L& _' u0 {( x
# u/ d: c' h8 b8 t9 C: x yCLK = 1;
+ j! h/ a* c s5 J7 B, r
2 I9 y) p) X; ~. ~; ? Q- z5 y5 _8 _- q1 Y% [
8 }/ {! f0 b: C/ O for (i = 0;i<20;i++): V& ]1 Q' a+ q
{5 t* K! g/ m- w# l. |, o
yCLK = 1;
9 ?8 b$ `' K- m3 h: l yData = dispA;8 v( k/ [0 a5 O g
delay(2);
_( B& S" y9 E, k if(i>17)9 F' B9 T O3 v+ y
{yDLEN=0;}- Y2 j& J! ? G2 U
else
6 d" i' l$ `/ Y3 x {yDLEN=1;}
) G8 _# V2 F, c, w
+ K3 j2 W4 a* g2 S1 m# \ delay(dailyCount);- p8 v. A) m8 Y& n7 z- v0 A
yCLK = 0 ;
% ~: T( Q0 J6 I7 n. S, N; ^ delay(dailyCount);$ R. k: c5 p+ Z
}+ T$ Q4 c3 V1 `8 v& j7 J
3 U* l1 O* x' R2 F( l5 ?% O yCLK=0;, b3 m1 {2 N+ }/ {% H2 c
yData=0;
- B# D n8 n% B1 R' J* O2 I; ?& y yDLEN=0; C& N. U5 W5 D: R
delay(dailyCount*10);
4 w' U9 M( j) ?' Z 1 L' s2 j D. R8 o6 o, X
7 z! H4 @$ C4 k* a0 p
g4 D: I; N( D3 ~: [# X, k7 \ for (i = 0;i<20;i++)* r3 x0 x3 r- D, {' C- j1 G: D
{+ s t4 o- _4 Y. c- \
yCLK = 1;/ }5 a4 j' A& D" W5 g5 _3 _% g
yData = dispB;1 A3 I: r, _3 P; |
delay(dailyCount/10); W# Q/ h2 s& D: j1 o8 v# R7 t# E! n
if(i>17)% n/ Z0 b& n( @# T* s0 n
{yDLEN=0;}& N7 ?1 v3 [+ O
else3 k# _" w/ P+ |& A1 u
{yDLEN=1;}
' D8 @0 ]* S! Y; t; ]/ | \& \ }0 [$ }; h
delay(dailyCount);
2 _5 p/ _. y, v1 _& T yCLK = 0 ;
+ U+ j& ~3 @/ k3 y2 ]$ B P delay(dailyCount);( K& @: x6 c" }2 t3 x9 O9 x# ]0 j+ r' [
}- n! v* L+ n: `& G4 a& ^5 \: b; L4 o
5 x. P# r) a5 G! ?$ Z$ Y
yCLK=0;& y2 Z% W% K. }
yData=0;5 U% ]9 J# e/ w: B
yDLEN=0;3 U& T( E* p* o# i
delay(dailyCount*10);
5 x& ]$ p/ r" l1 c}
: r3 b4 P0 _6 R) `9 J
7 S5 J% S# ?0 L. x; K$ K/ y8 n# |4 m$ K$ t
+ Z0 }0 I8 [3 R5 K3 K
& M$ @9 H3 n [$ ^% W5 Y& O
void main()
, c! s; ] S/ [) H4 W: A{$ H' b" C8 v! `! S6 n: w
while(1)
& K1 c: |0 f/ P8 b! Z {
4 J. |. c; R U4 M( a' @2 W9 K" e delay(4000);# h" Q$ F8 y* ]2 e: N
disp(0);+ A! I0 v2 q$ i) x4 h
}
1 n6 W) t3 z" S}* o4 C4 f7 K: Q; g$ J4 F. D
) @5 H2 A0 n& H" m. m9 U4 X* C+ n3 u0 \# Z: @7 ~
|