搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
! q6 i/ d; Y3 t+ y3 r
# A. }( n3 e9 h
5 f$ Z7 V8 m2 m4 |
9 r/ w5 d; A/ H# z. u i& B2 j5 X/ {
) z7 r# V. {# X/ z$ F2 C* v8 U7 @* q3 |. l
demo 的代码在这里0 K% m" J, ^+ p- B% w% o& `' g+ W- j
+ F6 k* Z# M0 K1 ~7 Y3 k
, D, l6 ^; w! t+ {
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器* n* S7 q) N, Z3 J3 D, Q; U6 [& @
6 y T& F/ c K: l, T
sbit yData = P2^0;6 ^5 r y+ [3 c# ~9 l- b% W
sbit yDLEN = P2^2;4 }+ ^/ F; L- {
sbit yCLK = P2^1;
4 `3 D, D+ k7 X, C+ L( Rconst int dailyCount = 200;/ d) y5 u: J, z- X. Y5 D. S
, `$ T* z* Q; W3 o: [; c
: E$ A: b: x* N) u2 r: H4 s8 I [4 E" R0 J k+ L) N c- r1 X
void delay(unsigned int i), j: n [2 k9 S; J$ a; O
{) j/ ]/ |& G" W6 V5 C; J$ A
while(i--); 1 m* O& a. D4 z1 f; w0 l9 S7 |
}
: {, r2 U& ]6 \$ @) F; f! J" s- q* z! n9 i5 r' u1 {: h4 R" C8 r h
/ S4 D% Y6 K3 P# i5 U
void disp(unsigned int num )
( O1 c. @3 H( ]5 N{
8 b( [% }4 m- y& q% t# T7 p unsigned char i ;
+ ?2 k. D3 c$ B
! L& z' Y$ l- K: j1 b unsigned char dispA[20];
% I0 P) J4 G! g. W& Q- c7 b* e unsigned char dispB[20];
9 j3 H, K. o' F8 B# j6 [# y: N/ t# `% K. g
unsigned char num1;' B- r5 g5 W+ t/ p) n' z
unsigned char num2; & D( c4 A6 g; i6 \+ C% G
unsigned char num3;
, \ _8 ^+ p" y unsigned char num4;
, W& q" n) A: m" ?; Z unsigned char segR[10] ; //右
1 ^3 n$ @" M7 q2 h$ A unsigned char segL[10]; //左
" K8 | c% C1 H, x+ F4 ~' s2 B7 d
9 n0 l/ F. V" y2 o //左 + J$ `9 R! M1 I8 s0 k) g
segL[0] = 0x12;
+ l" s2 m& v p segL[1] = 0xFA;
( N" l6 ^7 a% T1 ?% J segL[2] = 0x0E;
# ]! O4 N, T* A5 c8 O5 G segL[3] = 0x2A;2 j% w% [* w( f, E V$ F8 |( v
segL[4] = 0xE2;6 W# n3 f8 ]! p7 ~, ~0 g/ S4 R
segL[5] = 0x63;
$ C+ G/ x# Z. g* u) D3 ? segL[6] = 0x2A;! R9 K2 @/ O6 r: S+ u" U. b
segL[7] = 0x7A;
" M L! A3 ?) r( ^( s0 A4 u0 ~5 } segL[8] = 0x02;. y; r+ g R! t5 _5 v. |9 l$ n( s8 j
segL[9] = 0x22;
2 d/ H/ [6 A( E- j / g( B; I/ K9 r# F
3 U+ F6 y0 z4 G, q : }8 C( n1 U2 a
//右
1 z7 ?/ \; T2 @. `; d segR[0] = 0x88;0 c) f5 c( i2 ?3 r
segR[1] = 0xEB;& a6 @+ k$ i6 G+ ], p$ M
segR[2] = 0x85;9 y E5 _( J" g/ \* \
segR[3] = 0x83;
% ]" @9 P# F. j' j& ]' @ segR[4] = 0xE2;
2 Y& q3 P4 a# j" ^ segR[5] = 0x92;- T& H0 x3 Y: N4 v
segR[6] = 0x90;
) [1 v% V$ D9 S5 y( S6 D6 @% d segR[7] = 0xCB;
) K! T9 m# e+ D8 ?8 [9 [5 c$ r0 d8 ] segR[8] = 0x80;7 }% p" t# n/ U7 r
segR[9] = 0x82;& ~: j$ b: H$ c; p
9 I$ P. ]9 E" N' V. a2 o$ D7 A) l
- N% t @9 ]& c6 e$ H num1=num /1000;3 `, o- x$ L* t; _
num2=(num /100)%10;;
3 H3 m( y9 d; I5 r num3=(num /10)%100;;;) M8 r3 ]6 l- c$ E" |5 Z2 C
num4=num%10;7 W3 p% O* N, ?4 q! R8 f
+ `( j- ?# _; V2 `" W
' x0 k* C# y! i" x' E, I5 y
0 r5 b6 V( v! k" R. d$ W% i9 t$ ^; \) S+ W, K* x9 t2 @
dispA[0] = 0;! s: y1 p$ k; D8 w$ ?9 x7 d0 D
dispB[0] = 0;
( D+ l$ |, {2 v' ?1 N8 j, z4 W5 o% f: J+ m. ]8 C2 m0 S& X
3 R9 |# Q% v) k' \/ e# ] for (i=0;i<8;i++)
6 Y2 M, {" o0 S) Q3 J* {0 j$ k4 i {* N5 k$ @ J0 b3 \+ Z3 h3 e, E. A/ A7 l$ f
dispA[i+1] = (segR[num2]>>i)&0x01;* L- ^+ A/ T& y: w8 E+ p
dispB[i+1] = (segR[num1]>>i)&0x01; / Z$ P# p- ^- ?
2 ~* C, c9 V, _: Z2 a% I# }1 f dispA[i+9] = (segL[num4]>>i)&0x01;
: b# t# `& R: L1 u) y1 U dispB[i+9] = (segL[num3]>>i)&0x01;/ B. g8 `1 b' v6 |7 |
}7 o3 n Y8 h3 P/ `' x2 s
+ V5 ], z2 V% e: Y8 w( Q! n
' j7 }$ K7 m. U0 W+ V9 x7 }! Z9 k* k
. s% M5 e% d8 |. } dispA[17] = 1;* T4 ]3 m* }( J2 p' Y
dispB[17] = 0;( {8 k. Z( d* A2 d( v
2 _/ ]1 ~5 A; H' r/ i( S
dispA[18] = 0;
' \) N0 ?* n" K7 v5 V1 b: E7 ` dispB[18] = 0;
& H f: S" x+ A) H& ?8 G2 h% [1 ?$ [0 z- h/ N7 Z0 R! p
dispA[19] = 0;+ u9 N$ j# {+ \, n e. h
dispB[19] = 0;! [% j0 Z) l% q8 u
( X6 F7 E0 s/ m, W yCLK = 1;0 c! c2 h- C8 n- l+ E1 n: b
$ |; z% G) m1 b* H. Z# V; q) I2 w1 A
& o0 \! u8 P$ E+ y& L
0 P$ I5 Q( }# w% h& L0 ~ for (i = 0;i<20;i++)6 @5 k) q( @ M4 w
{+ Q; H2 y, R& G3 C
yCLK = 1;' ^1 _8 Y2 f5 ?! S
yData = dispA;
% v3 Q4 }3 t+ P( Q$ q6 T4 e# G delay(2);0 f) D; H5 X8 h8 |# b2 q- L
if(i>17)6 n2 ?4 Q& n1 L0 C
{yDLEN=0;}
0 d. u" C5 |! S5 D5 N else
1 C( M/ D3 f A5 U! a {yDLEN=1;}$ }% ^& l9 m5 N9 B% w& S
) Q W* C8 E+ J% F; Y3 v' Z
delay(dailyCount);
. M, S) I8 B) c) |7 e/ U* b yCLK = 0 ;& P5 a) g! o& K# F' x: c
delay(dailyCount);. Z7 r/ B# u) p; D! b# o) S
}
/ \0 I8 W8 {' |# u: N' x, c
0 \' x' \5 p7 m% |( o- ~ yCLK=0;
' h( h y/ Y6 V yData=0;- s+ V7 t; @4 v8 u8 t4 {! j2 E6 u
yDLEN=0; A$ D2 }' S) x) v: L, U1 b2 N
delay(dailyCount*10);
0 |( v+ L" v9 p) d) Y
# E. t6 _5 J( T# S5 M. t1 T7 b4 J' o# U. K e
4 V# B" s; q& q for (i = 0;i<20;i++), Q' e- r- [4 I% T& W( Y% I
{
' A2 C+ a# ~- C5 w" ] yCLK = 1;
! |. X& c) g) j5 n1 a yData = dispB;+ G7 n/ Q7 G6 q( `+ l3 h
delay(dailyCount/10);% h1 k2 A8 {' D! O( X2 r4 a
if(i>17)
. u7 T6 E( P& X* b8 U$ e {yDLEN=0;}3 a4 W2 t7 _( k" X2 a, m: i; J
else3 |; h7 Z% A% D3 O
{yDLEN=1;}8 Z* C* y! S: ]7 n* p+ x; K/ y
/ o. f# g1 x& L I' Q G delay(dailyCount);
+ _1 N# _9 L8 \! }9 H8 D' Y% \) k yCLK = 0 ;2 K5 c9 h' h/ }+ Y
delay(dailyCount);! a+ C! O/ J9 t9 c, i
}' Q& E4 D& u3 Y: @& y
# U0 v) @% D! j2 o4 ]2 U yCLK=0;
7 F! Q) Z# |6 Y0 I yData=0;
6 ~- Z1 c9 _3 W2 o6 r$ L8 b. D- } yDLEN=0;6 L- N5 s8 K0 i# A. g2 I( Z
delay(dailyCount*10);
; J0 K% U, _5 K}/ I- S6 s B7 Y# T- }5 p/ a) j
9 I( D3 V0 g! P, F: K! X8 k+ O- _2 b3 Y/ y5 @2 S
: J6 {- j- A' ~) ]. W# w, \9 n) t6 n+ Q, [
void main()
5 k t5 g; s7 j, l4 \. b{
, `+ \# Q- g \! w. @ while(1)
# E" Z1 O: D( ^4 p {
8 O- i9 t! D# h2 N* M$ U/ H4 m delay(4000);
; ~$ q5 ]+ }$ Y% V" s disp(0);
' e/ H. P! R% j1 _- [# h" N, K7 X } ! s+ k% m. ^7 z6 ]
}% x' D( L! M' R
# ^6 r, I, ?, e; u! l+ w8 |! U! g- Y# R7 J
|