搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。$ p0 g& n4 a$ s9 ?* J
8 `3 c6 A2 p* F1 V! A
4 x2 c3 W1 l5 R4 d1 G& u& y
* n* y! H' ^# E3 l2 `8 K5 p
2 T3 Z. X5 D4 m: U% V8 W
" Q9 g3 u9 F- {% ]! a& ?) q( T$ y; F2 Y* i! {5 k1 S+ i
demo 的代码在这里
5 z9 f2 \' n8 O" W' U3 H7 g( V: b( z J
; n- ]+ S0 N) n
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器8 l' j* n: k8 N6 t$ o+ ]6 x( p
2 R0 i9 O$ U! M" ^
sbit yData = P2^0;' n8 s* K# ?+ w! {
sbit yDLEN = P2^2;
5 L. k4 t6 i3 a9 V) m' r4 j, _7 dsbit yCLK = P2^1;
! l6 X2 h! S0 Bconst int dailyCount = 200;- V3 C+ K/ n9 u& X0 i
% G5 Q8 w+ o* }, l: m* W0 T
3 s: D: ^3 B8 ]
2 ?/ f, U; L. D4 i* ~3 q# j/ ^void delay(unsigned int i), {% `+ u9 I* S5 I
{7 Y3 G9 t# b( G
while(i--);
+ g0 W) ]: D" M2 m1 h A}
0 o" U& w3 {# S( F* a) S# X4 ]: A- R* m( o8 m) d1 B$ c
, N4 C$ w9 k' u! v( b3 [
void disp(unsigned int num )
4 x0 w" A! A8 N7 K( F% A! w; @{
/ j; U& Y/ i& S; }4 x- [, Z d1 s unsigned char i ;
/ }. X& U) A4 W6 o+ ?9 F2 x) k5 W# H
unsigned char dispA[20];* I3 V" L, P- s' M/ g S" @) H
unsigned char dispB[20];: S# p6 N" T% ~# M `: [' B/ @
& ]* ~+ |( w3 D1 N9 X7 F
unsigned char num1;
$ ?: h' A# j. {7 o4 X8 B unsigned char num2; / s0 z8 r$ J+ M; X
unsigned char num3;. ]6 g+ e8 M- G1 U+ ^
unsigned char num4;, l9 J' U0 M# v0 G f- S! d
unsigned char segR[10] ; //右( W6 s3 {" H; V9 g) q
unsigned char segL[10]; //左8 T' D4 Q, c0 J g6 H% k
9 \; G3 D% r0 N4 ?& K1 o7 h //左
7 u$ N7 \3 M T% }2 @ segL[0] = 0x12;7 V$ |8 `' y/ C1 u- \4 l+ g, h7 X, a
segL[1] = 0xFA;
2 B3 |8 k! `# N* q segL[2] = 0x0E;
* l* ]1 _ u" N. a segL[3] = 0x2A;
; B4 h& H& s$ b; m, m3 Q segL[4] = 0xE2;
- F% z' M5 A- g) n( `1 C# Q segL[5] = 0x63;
0 ]$ E: [+ @+ x9 O5 v segL[6] = 0x2A;1 w! t8 \5 u4 @3 h9 b- n8 ~
segL[7] = 0x7A;4 u, s3 e- ]; j/ t5 @
segL[8] = 0x02;. ^6 S: l& e8 ~3 v, S) k, H
segL[9] = 0x22;& {9 k; x. y" t0 ?1 ?( i" V
$ W e) F. ] S2 v( D 9 I) O. Z, G& }
0 T% d. T( Z3 d7 s //右7 S, [2 @ S: B7 b* y+ `
segR[0] = 0x88;# K' a: E4 `* |+ E2 K% X$ Y; P
segR[1] = 0xEB;
" V" M0 M' u( g# ~$ k5 i segR[2] = 0x85;
7 F |" H, V: M; {! c segR[3] = 0x83;
3 I9 p9 V4 s0 L. d segR[4] = 0xE2;3 g# J/ M. ^& J3 e9 A0 L
segR[5] = 0x92;& [4 f/ o! \9 D2 P! G
segR[6] = 0x90;
4 S# f' D- y, t8 u segR[7] = 0xCB;
$ M+ z# e) V7 \ segR[8] = 0x80;7 E' g* R( ^0 k, _ H; {+ v+ [
segR[9] = 0x82;$ c [( K, J! Q. ^- W
; ^2 a$ y0 n* P, B8 B' I
* N5 [; }6 |5 n; Y, B num1=num /1000;+ X! V* W% J4 c0 Q1 G% O$ T5 @2 b
num2=(num /100)%10;;
: E4 n |) o8 r5 L" d1 e num3=(num /10)%100;;;' [8 o& N6 n; t
num4=num%10;
6 K; ?/ u6 E* G& A9 f- E# X5 l, ~ t% M
1 K* O* [4 X( g% p" c
; z( ?( y: ~' L5 k# u
5 e) I& b: r) `4 |* e' y dispA[0] = 0;
- R9 W" R& v9 k) E& p dispB[0] = 0;
" e, w$ b6 T! [7 s8 [5 c: p$ E8 h9 f" h5 h) k* Z" m5 {' o. ~
1 r3 d! I. |9 {
for (i=0;i<8;i++)* s' x$ l6 ~6 O+ Q8 f4 @
{
/ p' X; {& i3 x& m5 } dispA[i+1] = (segR[num2]>>i)&0x01;
2 i' N8 C2 A$ z; P" ~ dispB[i+1] = (segR[num1]>>i)&0x01; 0 \! P9 F: e5 F
2 {* e2 ^4 g# k9 Z/ r( q9 ?9 ~, D! {
dispA[i+9] = (segL[num4]>>i)&0x01;
8 S' T' O% p; G" z! m- Z dispB[i+9] = (segL[num3]>>i)&0x01;+ n: T3 d% a# _5 ~( L7 `
}
6 E- A( G2 `7 r) B" L( @
: Z! q2 R P* |% k* y( P1 d' j+ t+ ~
; s7 O9 {4 {$ r8 f dispA[17] = 1;% ]6 D/ J6 e2 z
dispB[17] = 0;
9 V+ a5 D- h) D& g3 H
( e# _% k& k5 C0 m! n+ N L7 C, @( } dispA[18] = 0;6 |! `. t1 {/ z3 f/ L
dispB[18] = 0;" z1 B+ q/ L7 _' L0 t# @6 R: |5 E" ^
4 g O( a' K! f/ z
dispA[19] = 0;& [* X$ q+ }& l3 f
dispB[19] = 0;& s, n: k! ]8 h. {( a' e: \
; @( {+ ]3 @2 A( `+ }) [3 n" j yCLK = 1;
C1 ?: t9 Q1 q5 O8 E) a8 V
( X2 K' |" G. P+ q( `
) b: d0 Y3 P3 c4 c4 F
: N9 h" V9 W6 J4 B9 q( H for (i = 0;i<20;i++)
0 n |! X5 g. Z {
. V# m! r( W3 B: r/ S yCLK = 1;# E8 ~6 b6 {+ T& A8 o: T* i
yData = dispA;; l, F$ t, G) q
delay(2);
1 H2 P7 c0 D T, H4 I- [ if(i>17)+ h4 E8 G5 j b! S+ H& G
{yDLEN=0;}
# g# m" r G0 h8 W: d1 A3 y else
9 O5 g4 j! l9 o9 E {yDLEN=1;}
# G/ ~6 q4 x3 V U! I' c+ w, [
, q4 e' ?& H, z, W7 P delay(dailyCount);
9 B ~ G8 ~- Z8 m! J yCLK = 0 ;
9 s3 w7 q: M9 i1 C" V+ t delay(dailyCount);$ h' w1 c& ]: n l: g. I6 M4 U t
}
2 d0 P# U# J# \
( Z5 z7 Y7 l, z4 x" A+ V4 ?. q! J yCLK=0;9 `; A" L/ Z' T. ~* \0 {8 y
yData=0;9 x- J& ?. X- ?* Q
yDLEN=0;
# t* K# _7 G' y& B8 X0 `5 U delay(dailyCount*10);4 f' ^3 o4 \( m4 r( v& L
1 y! A0 [. w g7 q, A9 Q: O2 W0 e' @, C3 O: e6 e& J* d
9 L) x* u) B5 a' ] for (i = 0;i<20;i++)
# g. ?& {2 b7 A {; ]( a+ L0 F! y2 g' Y
yCLK = 1;& A% _; Y0 Z6 D
yData = dispB;+ d1 y+ }3 V# C Q/ @9 p. V
delay(dailyCount/10);6 t9 y2 `2 e3 J1 y8 T1 J/ z2 {1 G
if(i>17)1 d% [: e: E; @0 u, i7 \5 q' ?
{yDLEN=0;}
. O5 J/ a2 y. I7 X6 l else T ?0 E$ i" M! R
{yDLEN=1;}
9 X! M& n7 @1 O1 S0 }& Y' V$ N4 x- M
delay(dailyCount);3 c) n3 N$ `+ V
yCLK = 0 ;
! n, H7 E3 V! a/ U {" _8 v9 r9 ` delay(dailyCount);
: m8 n o" ]0 j$ h7 r4 T/ e }8 I7 y8 D) X, K0 _) m/ p( f9 I9 y
. }* c# G/ e1 \2 ?( m
yCLK=0;4 h5 s# C0 i5 }; m! F3 w, L
yData=0;
7 S- ^ { i3 B yDLEN=0;2 b; N; ^4 D+ P
delay(dailyCount*10);
' |( U& `2 Z- }) e: B2 ]) k}
9 P% D+ g" j j3 U" c; i% }: q8 F9 @$ C) k! h4 i- y: S
; X; `$ Q' x/ i$ Z
' o# z- \' V. x" Y4 L; |9 T+ ^6 E- d3 ]
void main()
. q7 [+ G& |; s; r1 V' m{
/ m; l4 D, d" ^+ T while(1)2 B- B% s5 x% I
{
^1 v [# e* }* T# d3 _$ P delay(4000);! v& F. Y8 }9 o9 S+ b
disp(0);
/ N2 `# P+ |+ |& T7 k% U3 G } $ O1 \/ Y# f0 O4 k( A, t8 c" k
}6 x7 C _2 X( B1 v
3 {5 Q7 \! K$ ]) |* t" C- o# J: s1 y
# R% C5 O3 }' q; j1 y, N1 ~# f6 D
|