搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
7 {* q" i; _% T1 q9 U; h0 L6 I; A: p8 u# a
' d6 ]5 m7 ]1 f( S7 K9 O; e- e4 C9 l9 Z5 t
7 g, A8 R/ V% c
- A# z2 w6 j& m D. @8 G
4 E9 J# q4 m, v
! w G* \9 H+ Z& Y/ c5 [# V& h4 M6 T4 Vdemo 的代码在这里
% r. g$ } f2 s+ D* w. Y, g7 _( b7 ^$ l! Z0 A
! C% Y: V( X3 h; |5 H4 i' H) C
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
0 h7 S: H P% \8 e, Y" `+ R) x4 r1 `7 t: g" b
sbit yData = P2^0;
u% u: l2 C: Z3 hsbit yDLEN = P2^2;# ^& o* J* U0 r+ _
sbit yCLK = P2^1;
- f" ]4 I6 o" m9 ~4 iconst int dailyCount = 200;
; Q9 B3 `# V S t5 {* Y
+ g/ H1 |! c9 P2 L
2 @2 ~7 g% q3 z8 M1 J/ i- i: y7 g# Z4 ?& B. B& c: ^
void delay(unsigned int i)8 ~. ^) t w5 T" `
{: q0 R6 E7 `5 X& f& P( y. Y
while(i--);
* b9 g/ a9 U8 j5 G" M( X- H}3 ~" D0 D8 j; c! L
' o: R' }6 M2 @) _7 ?& c
( `& c3 d6 ^, H0 r/ w
void disp(unsigned int num )
+ q% p' D/ C$ i- U& w{
$ D3 U g( M0 B: d' z( Y. Y F unsigned char i ; g; y5 K$ R6 g9 ~ N
& \* Q& G2 n( l& @; }9 s, g5 m' P
unsigned char dispA[20];+ k- Y) Z/ K% E% s3 i
unsigned char dispB[20];
- r. ] v4 j" m# ^2 f" ]) d/ N- y9 c# p) Z/ |% p- r5 Z
unsigned char num1;8 o) j: W6 \8 a* r+ L
unsigned char num2;
* }; Z; @% V. [, t9 q unsigned char num3;
0 Z% M6 ]: N5 E# H unsigned char num4;* T' ]* w" h X
unsigned char segR[10] ; //右9 O( w, D B1 z
unsigned char segL[10]; //左5 y5 c2 [$ l1 k9 P0 g: q+ A
% x8 i+ k( Y/ }, _ //左 . Q0 H H: S8 N! T% s# G! z
segL[0] = 0x12;
9 l+ }$ T8 ?. D' U- w, ` segL[1] = 0xFA;' m. a: A7 `3 `, M
segL[2] = 0x0E;
5 r, V3 v/ f/ D1 P segL[3] = 0x2A;: `. o# \+ h+ E$ j, ^, F9 S
segL[4] = 0xE2;
1 T9 p9 O1 z1 w* ~ segL[5] = 0x63;
, ]( q9 Y: O' X% i4 j8 q6 ~ segL[6] = 0x2A; R* W. ~% i/ ^& z" K& B
segL[7] = 0x7A;
( q, U8 t6 N& ]# Z segL[8] = 0x02;
+ N: Y7 a2 s; V* y segL[9] = 0x22;
" g* }5 E) d! R/ C: g7 ? ) W, D8 \3 U; Z6 Q/ d6 V
$ C1 u! i6 r6 c 9 m2 E, i2 l7 k5 T
//右/ o8 x% w% a, h+ j T: x5 Q k3 Q2 ?
segR[0] = 0x88;
: R- c( {1 W, v; [0 [- j8 o( i segR[1] = 0xEB;2 T( Y7 H( m2 K2 {$ O
segR[2] = 0x85;+ ?7 [, r! J: |
segR[3] = 0x83;1 O/ B- [3 X4 }* v. J: F5 [7 D
segR[4] = 0xE2;+ U3 D- | c& ~2 {
segR[5] = 0x92;
) i+ _& } e5 d( T& l2 D/ z segR[6] = 0x90;4 `) v1 B) |( E+ b: p
segR[7] = 0xCB;
/ ^' x v/ u9 P9 |) P7 u2 c, P segR[8] = 0x80;
& d! C4 N% O; P/ R segR[9] = 0x82;
5 _6 Q4 b( ^/ A+ t
: O r" z9 \! b1 R! V
6 r0 @) G. j r% v; ]+ e num1=num /1000;: g) t3 o6 Y4 I( D/ j
num2=(num /100)%10;;
/ L, R( Q z" P% Y- u. R num3=(num /10)%100;;;
. t; G Z" y' B+ K9 y num4=num%10;! z' Z" U% }6 r9 _- j g% y
5 V- y! K! F1 r, z6 `
' `" D+ x. ~6 N0 R
. ^; _$ H$ ~6 ~ J
5 T7 T% [+ }$ Y/ O4 J3 Y( l dispA[0] = 0;" I3 `$ c( V4 c7 \$ j2 E6 |
dispB[0] = 0;/ Y% e4 \1 y9 c O
% O U$ `5 ]# D: l
/ h+ [" L: f2 [ Y7 I for (i=0;i<8;i++) @5 w+ l# {1 _& _. y: m4 s; r
{
7 S' R2 d* Z2 \; L" b: h dispA[i+1] = (segR[num2]>>i)&0x01;! T |/ S& ~& U9 F
dispB[i+1] = (segR[num1]>>i)&0x01; : X3 v! n( |( ~% ]0 K. d
5 C" S% |# n# S& G; x dispA[i+9] = (segL[num4]>>i)&0x01;
9 v6 s/ F# j" y dispB[i+9] = (segL[num3]>>i)&0x01;
/ F( C( V) t, Q9 {3 H8 a# q }
$ s% c2 G3 F9 V' b3 A 0 B8 l( [8 q4 Z0 X/ v7 s* {" |
G9 P( f: U+ l6 N. {: F8 _% |% N% u
dispA[17] = 1;0 D: w2 ?' p: _
dispB[17] = 0;) A" R: J" {/ I! g( @( n
! S+ b/ {% b6 z9 G9 @* j g8 e
dispA[18] = 0;
9 I# l8 o- v h; \4 T dispB[18] = 0;
3 R- ~/ c0 d) G- i6 }: f( l( a! T# a$ H0 I: w# S* k
dispA[19] = 0;
0 Y, @1 M$ d, `5 y* K; e7 D: ] dispB[19] = 0;! F; Z0 r5 l0 y$ s- T
% c+ y5 e/ |# P B( v
yCLK = 1;+ B7 S% P5 m. X+ g! s& H2 g
( b" p& A5 s: q' r( Y4 r# t# G: j. k1 @
+ B3 R9 {- }; X8 n! a for (i = 0;i<20;i++)
( ]2 }8 m, ^1 t, w" ~ {7 [+ p. b5 E/ Y/ R% g& G
yCLK = 1;2 }7 W! v# u! O/ v: Q
yData = dispA;
* d+ G% }% E* X4 ? delay(2);! q7 _' u# n: v# ]; s3 J8 _2 R
if(i>17)3 D1 Q$ t# C! ]( f
{yDLEN=0;}
5 I: f; q, |) C6 x3 {# t! p0 P else" d8 H5 [; r. y6 |/ s% c1 M
{yDLEN=1;}
/ B s/ V) P7 Y/ T1 {6 E( E# _1 i7 w2 ?1 j& h
delay(dailyCount);
~# M" y3 a. I yCLK = 0 ;
3 O) v, |! q! |; k) k delay(dailyCount);
@7 h7 I5 R" L; W) Q" \. X }
3 q' }2 U% _" d- q) C$ }; [) u$ [% V" m5 I7 X) I4 J2 s. x5 H
yCLK=0;( G% J t' Q4 `" Q1 O# r: P
yData=0; J! t7 v T& K5 g
yDLEN=0;% A( m1 t9 v, a# d; T
delay(dailyCount*10);
9 `$ s, m* i' S# \! p
( n+ j0 n- ]+ ^. _% s; R# C# ^
. m8 B5 f- O5 G) l
5 X* s ]& l2 L }( I for (i = 0;i<20;i++)
/ D; x/ Z6 l$ p/ ~& o {. \ m" s5 T$ D6 v, ~8 z
yCLK = 1;9 P5 ]' C; G) ]* s, f: R5 G) W
yData = dispB;' s: Z) b u6 C j, `% X3 D4 f
delay(dailyCount/10);$ s$ e5 z6 t2 h: n, E3 Y x& h
if(i>17)5 A: O( @' `9 |! ?! G" v" l4 D
{yDLEN=0;}: p( t1 O d* g' B
else
8 F( \, U+ h$ u1 i/ w {yDLEN=1;}+ J+ v( v: Y0 ?- G" D
, F) u: B4 m( i O: {( _7 O delay(dailyCount);$ |# L( f' @7 p# W/ ~. J0 o& g( `
yCLK = 0 ;
, \1 n4 O6 I" U O7 ?8 f delay(dailyCount);
( N, H2 |( F& D/ h }2 o, S4 Z2 r+ I- P, k. G6 C
( e+ F4 `* f! |2 f+ e* F" m; m) S yCLK=0;; |+ r) H3 `; P) V* D" m
yData=0;) ~1 J6 q0 V) [* p- [8 K5 V
yDLEN=0;) J) R! F2 ] p) m* q/ T
delay(dailyCount*10);
, b* b+ }! W3 v}
F, `1 z& _4 w' D7 y+ y1 N% E: q$ K$ j
6 ~( d/ s. ~' n2 W8 x4 o+ f: s% I* d
4 Y8 k- E2 p1 m, e1 ~. D8 gvoid main()
5 P5 y+ n: u& h8 [{
; b7 s5 h Q8 z9 N: E9 P while(1)
6 ~/ |3 i1 I- p; I9 Q% w8 o {2 u7 D& S. H* E! w* W0 j
delay(4000);' `4 l- D- z2 k: A0 E: i
disp(0);
/ c# S' U; _8 h/ W }
: v3 z: q/ h" ]# U: {2 B}" V% o' k% T% n, i% j( h: M
7 |9 [6 ]# r/ l, ?
2 C7 O1 j" w0 M, n |