搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
% D! z- r1 U. c I: G% A4 Y( f# L1 ]* G9 `* u; Q" n9 B7 }
2 Z3 e7 R+ c( |' n/ A. t' {+ l
2 _0 Z& G3 \# u. J, e
: k5 ~% t/ D1 V/ u- v; P* C3 W
* y- g: E# B: q7 r0 h
2 q) C( x. b- w( j3 z9 a
demo 的代码在这里- x/ I, q D8 ?8 t! I# M
8 s2 k+ J1 p* L, d; a$ K, _1 Z* J( N, w M, k
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
; o$ W, B7 R2 C4 W2 x
) d3 A# k; `! O% c; v/ gsbit yData = P2^0;
! C) u! G1 f! t1 q- Ysbit yDLEN = P2^2;
+ B2 {. Q! c2 Q7 J' asbit yCLK = P2^1;: N# K) j2 t2 ^5 r$ Z5 {
const int dailyCount = 200;
7 g( P/ d1 K. ?) P1 }( H! ^/ ]$ L7 L) h F$ y0 v. O1 B$ D. p& t) x
p/ i; t$ I3 h
) E* [/ |& O4 {( yvoid delay(unsigned int i)$ {7 M% E7 f, |5 h
{
$ q# J8 u/ [, h+ A$ B! { while(i--);
$ {7 R4 {7 y( H}6 ]; Z( ~7 [; K0 ^0 x M5 E
" y/ E$ \& a% a0 R8 [
9 u+ s3 m, Z4 ?+ Q% dvoid disp(unsigned int num )+ u; K6 F- S6 G' Z q
{5 W5 U: o1 R5 n4 z# [" M/ U
unsigned char i ;
7 _( [4 H' v( o6 r+ R3 T: h
( h" d9 S, |/ Y* U unsigned char dispA[20];
8 h8 G0 [+ v$ }. n7 D unsigned char dispB[20];
W7 Z+ s+ N f& e3 i+ R8 m6 X3 w2 H; ^3 P0 [: l0 ~
unsigned char num1;7 M; P) [8 |" h; u! D/ e. ~7 b
unsigned char num2; 8 {0 D5 v g4 v/ t5 M
unsigned char num3;
/ R2 a+ `5 n; Z+ m9 Z unsigned char num4;
2 G! D: ?- j6 e E) A8 Q, { unsigned char segR[10] ; //右
, i# W' k5 Y! E' v& f4 ]0 y3 ~ unsigned char segL[10]; //左
! o2 c0 j' ~) I( l" p' b8 Z* x* f+ k4 A
//左 5 {3 D3 I# M* x# z$ ^1 O
segL[0] = 0x12;% A# G: h+ u( m* u9 L/ C( c1 j
segL[1] = 0xFA;( S. J" N( x: n0 N/ q
segL[2] = 0x0E;( F# G: K: _9 W# S" a; F
segL[3] = 0x2A;
$ C. j1 j- E1 C y segL[4] = 0xE2;
. {3 P3 W; h8 Y9 ]5 b segL[5] = 0x63;& U! ^/ E7 T* J# ?0 M* x
segL[6] = 0x2A;
9 W2 Z' u6 o- ^& v segL[7] = 0x7A; v8 J4 k0 R# @
segL[8] = 0x02;
8 }' D9 [" e* ~) r G5 F* z- H8 v segL[9] = 0x22;
7 q4 k* O# x6 \) L
* v3 t* l6 u$ K
- w" W8 L" |7 { , q8 W: i+ x$ e8 l
//右
1 z7 o M7 x$ t9 D8 t) H segR[0] = 0x88;
2 |$ C8 ~8 S1 B: |% G segR[1] = 0xEB;4 `+ R2 {3 E; Q# c% k
segR[2] = 0x85;9 U: K) V3 V- \$ a: s% V" ]- M
segR[3] = 0x83;2 _. F" x+ o, N: f( o1 N& G" Y8 y
segR[4] = 0xE2;
$ t; T; Y, t: n4 ^- }) e segR[5] = 0x92;
9 D, _1 n' T+ X# n8 K1 I segR[6] = 0x90;
4 C/ n& Z) U& q, l! |7 T" ~6 K segR[7] = 0xCB;6 O; }4 e( n5 c; R
segR[8] = 0x80;
& E+ F, g1 O4 o/ F5 R( s/ V0 \ segR[9] = 0x82;& _( k6 r6 f: X8 M4 Z* C) Y+ u
7 h2 R: T/ ]: U" F8 n& Q
& n2 L3 I! N8 B# a# Z9 l num1=num /1000;! j" F+ [! \8 h) L1 B: s& a
num2=(num /100)%10;;
, T- @/ I7 ^& V4 X9 G+ Z& W num3=(num /10)%100;;;
( I J* g* |) w) A4 ]7 Y num4=num%10;
' p$ r7 O/ q! ^; \' \9 g; J! A3 T8 C* E4 E: e! }( z
3 B3 h5 m8 t) z" m- y8 b( \7 ~
0 Z7 w; k/ u% b. l/ I- F9 @
( Y9 F% n6 g/ g+ E E dispA[0] = 0;
" K" x1 O, v: y; K dispB[0] = 0;6 G3 ]# Q7 Y) @% w/ o+ S, {
5 \ a) |; ^: _1 ]
1 W; l$ b) d3 U2 z5 Z; N for (i=0;i<8;i++)
# u5 v3 n8 P: _ {
) g, h% F' [" b0 ]6 e3 O4 c dispA[i+1] = (segR[num2]>>i)&0x01;
+ a: C; W# Z: @7 C* w% z& w dispB[i+1] = (segR[num1]>>i)&0x01; 6 ^3 @" Q. a' _, }. _7 d7 w& H
# R8 s- a! c! s/ _
dispA[i+9] = (segL[num4]>>i)&0x01;
$ |6 u2 J3 G5 S3 ] dispB[i+9] = (segL[num3]>>i)&0x01;
" m- P( \5 e& @9 Y1 j8 |" r$ {/ s3 a+ P }
; l; D4 }# {# B, ?6 D 3 N+ F9 r# ~8 H
2 S p0 W/ o8 g/ ]1 j x
7 h% }7 m+ |) `" B9 j' T% f
dispA[17] = 1;
5 g2 i3 D' r3 J$ m: H* b/ w dispB[17] = 0;5 H F3 y( v& x8 J- _
( n u* {3 Z/ Z8 }1 t dispA[18] = 0;
( I/ w* t$ e0 F. v6 }& b% S dispB[18] = 0;" Z6 D4 a$ o; P
8 Y! k3 b3 [1 c7 o/ x
dispA[19] = 0;+ H! i3 s: ~. [- g7 L, j( C6 k" n
dispB[19] = 0;
t b% k; ?$ l, t
; P" ~& b' _! L( g1 } yCLK = 1;& P/ c' H$ C, ~1 R; |1 ~
$ R/ w! n, t8 A v) E5 B# `
6 C- S' x' a. ]- z0 c! e% \" D5 @: R5 {9 Q
for (i = 0;i<20;i++)/ l: q* \3 A0 l. ^6 E
{# n7 p. k# |& k0 ^% D
yCLK = 1;6 Z$ @; Z L9 i3 b
yData = dispA;
- A3 O% D) F8 r7 a8 o8 s$ Y8 D delay(2);6 T& v) o( e1 W' d. o
if(i>17) n3 L) M3 _( [, R, i
{yDLEN=0;}
! a5 d2 b7 d1 H0 [; k else7 b s! q8 K, e, x$ d. j
{yDLEN=1;}
+ j" q h& _" D1 P( T& I9 ~! j; [
delay(dailyCount);! v! g0 k* @) z% ]" h" Y
yCLK = 0 ;" i2 X/ @$ w4 E$ Q" I+ ?0 }! c1 Z" U
delay(dailyCount);
- R4 ]) B3 o3 s: k7 Z }
. S4 y0 O* g/ R# K! Z
9 x* d& o* n% W+ ]2 W* m3 Q+ ? yCLK=0;
+ }# a- E( S2 P; s" {2 R2 A1 g( [ yData=0;& p+ Q- x7 [. U
yDLEN=0;
+ A+ |. T9 ^! `9 F/ X) u1 U delay(dailyCount*10);5 O* D3 L) ]* e3 p- n
# b3 | j* ~) o h
6 L7 L- Y' M0 R4 _; ~* a. J7 t4 F' Q( B: i
for (i = 0;i<20;i++)& g0 ~. Y9 F$ U6 o
{1 ^2 E" ]0 Z5 R
yCLK = 1;5 a1 C2 ]! t$ z" y2 V1 d2 p" q
yData = dispB;, V7 ]1 A* r% _7 u+ Y* Y
delay(dailyCount/10);. }) T; s- S7 q0 x) i
if(i>17)0 Z( h0 ~3 Q' [% P9 G7 N
{yDLEN=0;}* j0 P9 K Y, K' u
else
+ p" D- t0 L% R* J! ~4 ] {yDLEN=1;}
0 H& I0 C, k/ C" T* O1 t9 c$ [% z; ^0 a
delay(dailyCount);) ?0 J% ~# E" }6 g' ^0 F
yCLK = 0 ;
) ^# ?6 r& r$ z. m$ W delay(dailyCount);
+ o! I; s6 }7 z- R- ?! ] }, o' k+ \! m+ t( Z* t `! n* f: m
) `, [$ U3 f% P, X
yCLK=0;
( Y" Q/ u. \) z5 O! ` yData=0;
; i- f& {0 c4 i/ G yDLEN=0;
0 p9 H- K% p. `2 ^ delay(dailyCount*10);7 \. b$ G) Y0 D- o) S( U
}1 x: W* Z, ~% J: u6 Y' J
+ n7 {3 a# [; p/ }
6 ~* d: {+ {/ r+ }3 K1 }# }& P
3 v) z; ]/ h- u0 J/ U
, f; L) Z4 o3 r, F4 Fvoid main()
, H0 u$ g3 {! n2 K. j) l% a{1 H" n5 j. U! J- t! t6 X- i5 J
while(1)
/ n# E8 O/ g# f5 @, R) {- z {
- [/ w7 _, U' U3 P delay(4000);7 ?" p) C" ~* x) K; k: A1 q# S" v# Q
disp(0);
! ]" y# S- h! h0 y* e0 H } ' o, ]% P# _% m$ ], u/ y% E3 }3 ^
}
F& q3 ^) t4 t, I1 y1 V* J+ L$ N: d2 x& o6 [' t* n
& _, X" M U) }. k9 u' M; `
|