搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。0 _0 D \: T" |8 }0 V) C
4 ]+ d+ o2 K$ `, f$ |+ u0 S
, E0 H$ o% w! k7 ]5 e3 V0 d) p
3 A' e4 i' F |6 a
3 J8 z. J' K3 J, L0 K) K: x( t9 `$ t8 k7 H0 E c7 ~/ [
8 K/ y" i! o/ M2 B/ ~! l. G" Ademo 的代码在这里
: w9 h/ z' w* V) M/ x7 S2 ?7 Y3 J% q) }. X5 n( C2 @8 U, W
1 Y) Z8 h' j, [8 a, X5 u#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器6 u3 O! o7 p# A7 _. J
. n- `( g5 b3 R' N# |1 e3 X; U
sbit yData = P2^0;( ~4 M" n U) o5 m x/ C+ c& Y
sbit yDLEN = P2^2;8 y& |+ ^: `2 H' s: S3 ^$ U
sbit yCLK = P2^1;
2 x. s A7 n) I! A yconst int dailyCount = 200;: X0 P0 M' Z5 v5 R
! {1 N% k: ^; }- R, {# R
* @7 S# r3 k+ p' k" L& W
6 `2 c7 M# E8 g0 S* M xvoid delay(unsigned int i)/ l' w# r. q Y! P% Y" h
{
1 K$ y1 ^9 e; z' {( r while(i--); ( ^* |3 E6 k% x7 @+ K
}
) B( P* y& D' F1 l; }5 R( S- ?; g$ l ~9 G( d3 ]
" U# U. l8 R4 n) b. q+ K! Uvoid disp(unsigned int num )
" J( c& ]9 L4 Y% d5 q' x{/ l* w H( H1 N1 P' q' l. R
unsigned char i ;
1 a N% B8 q0 m: r5 C, v0 n4 D- ]7 z+ Z$ d6 G- T
unsigned char dispA[20]; \! S# r* H6 W5 v
unsigned char dispB[20];
* [$ S6 ]% N# ]& R# L4 B
+ }0 {2 [& V8 t3 b) s) E9 b6 U unsigned char num1;
5 x6 d1 @+ ~) c$ h& q6 Q unsigned char num2; . g# q9 f3 i. e+ u K
unsigned char num3;) X J2 E% W6 s" E
unsigned char num4;
; L& t1 z) H0 w unsigned char segR[10] ; //右
5 v( h' z% @4 Q5 w unsigned char segL[10]; //左# c( q( z! ~& \9 }' Y) i& {$ s6 X
, x" y: D! Z4 _, ~
//左 3 d. u$ }0 {* x0 b: ?, e7 ?
segL[0] = 0x12;0 v; C5 n( p* [& q. Q o/ F
segL[1] = 0xFA;+ c2 Z. I6 @* S' m5 K1 j$ y
segL[2] = 0x0E;) k- @# P- ~8 f+ ^+ G- ]
segL[3] = 0x2A;+ m5 n6 P! I' F
segL[4] = 0xE2;
! y8 B' K& V" c( w+ Q8 L5 Q( j segL[5] = 0x63;
$ d% S- N/ o0 A' t) f segL[6] = 0x2A;1 }6 [1 a9 m [8 u- m
segL[7] = 0x7A;
( ?; t+ o2 T1 @$ ^9 D% { segL[8] = 0x02;2 B. I0 k) X [2 ^# D% G; F; p
segL[9] = 0x22;
F; X, J, t# g5 `7 }
' q* e% u( \7 Z# l % o0 r3 |$ Z2 X/ b" ]
' o7 [: }, U6 ?8 }5 P2 r //右0 O# T( c" S' y
segR[0] = 0x88;
0 n+ U9 |# M! X4 I+ f0 Y9 K5 f segR[1] = 0xEB;3 H- D% j6 e, s5 q; M5 B& X9 U/ ]
segR[2] = 0x85;
6 t& O! Q3 v% P7 n segR[3] = 0x83;
% v& |) Z2 q# ?2 p/ ?* w segR[4] = 0xE2;
! g" ~. t8 O, }9 ^' E7 h segR[5] = 0x92; c& s/ n7 e5 \: Q% h* B( W
segR[6] = 0x90;
( ?4 \" _ L# P4 ?& Y! @; p# p( d. R# m segR[7] = 0xCB;5 e% c% y7 J3 q. a: x8 R5 @
segR[8] = 0x80;
( `5 e1 T5 T: f! g segR[9] = 0x82;
7 V2 I) k! F$ G
/ r% f, S* d I! b% y
8 d6 t9 ?. Z1 @4 |, S num1=num /1000;
+ S& U5 s. R' O num2=(num /100)%10;;+ ?7 I1 X4 O* Q: @& O' p' s
num3=(num /10)%100;;;
% Z% j% D; `( t( E" D num4=num%10;
+ l0 X' M. r$ `4 F* l
# T% v$ Z9 R$ [0 W0 ^ W
" Y- z: L X: a3 n+ E0 D1 J# P" b% m( o
8 m! |7 @7 o5 ?) N8 r: O2 q dispA[0] = 0;
$ a' Q. |: P8 g- h dispB[0] = 0;
2 U4 P D" c/ D+ @; O: s9 m# N) j8 [4 s; G
| ]6 L; S9 e0 F for (i=0;i<8;i++). f) \) B. ]+ M: I+ c# t6 @6 m
{
+ L5 ^, x1 L) w. i6 x dispA[i+1] = (segR[num2]>>i)&0x01;* v% M5 b9 K4 w# a
dispB[i+1] = (segR[num1]>>i)&0x01; % t! u( B3 D. t: q7 y# M
/ G b5 G" f" G, v. T: a: R" j dispA[i+9] = (segL[num4]>>i)&0x01;
: V: D& J5 H5 L6 ~ dispB[i+9] = (segL[num3]>>i)&0x01;
9 X, `6 W/ v. N, t! k/ q }6 X$ @) b! x4 X: N" ^8 W
9 W1 H4 ?: q- Z. W
- S$ F! T6 o) i2 b3 f
* ~7 S9 u- @: m, {- P dispA[17] = 1;0 }' D( a' u% i U& z
dispB[17] = 0;
( R7 N& n* |1 T8 I, W
3 u$ z) i- F* G" ~: D dispA[18] = 0;. c6 B- e$ G, S( i( u
dispB[18] = 0;! P) K! l: W- T2 n) e
4 O+ B- [3 D8 m' J dispA[19] = 0;5 C# {/ E8 `( b. h7 {- A
dispB[19] = 0;' j: ?+ I5 R3 g. A% D6 o9 m
, _2 C! F; [$ g8 |/ ]$ J2 W
yCLK = 1;$ R+ W& x. D' T& ]& O Q( g
$ v- ~+ `, f/ Z
% }; n( p, O7 \2 J* ^ H
$ C ^" p! J: y4 n for (i = 0;i<20;i++)" Q. O0 }% U$ G* ?. {" r! T, Y
{! x7 ]; \ }+ y0 w3 [1 S# F- l
yCLK = 1;
b. K0 H) J G! U, t yData = dispA;" K" @- Q+ ?; b) J+ t2 [1 W* h
delay(2);
% l5 b/ K+ C* u! ` if(i>17)
( K% l E) J/ i {yDLEN=0;}
0 e1 f5 E7 B! J! K0 S0 h else4 |' q$ p0 n6 f. h) F: n5 @# g' G, e
{yDLEN=1;}
7 P6 ?& Q$ W1 C B7 _5 j( \5 m! h$ _" q5 d* U1 p( }7 v# j
delay(dailyCount);% R( C9 c0 T0 F
yCLK = 0 ;
1 I3 @1 ` w2 ?1 Z) e4 ?" P delay(dailyCount);* m7 P4 H7 t3 Z. K3 _: S
}
1 o$ z1 S' ^; @: ^$ {; }' a
; C0 R5 e) I+ P+ O, b yCLK=0;
$ |, G6 T. N+ K$ ? yData=0;
, F" b8 ~' L3 K& R! f yDLEN=0;! w5 M4 N( H. C' e* Y
delay(dailyCount*10);
) A- }* ~) p: l! O) `/ H+ Z0 I 5 h i% k0 q6 O
7 S4 h4 e5 |! w2 L6 V. x4 o; E; ?% l* w0 f
for (i = 0;i<20;i++)
) H1 i; b8 O# p1 J) r {# |+ }) j" a/ L: e3 n9 c
yCLK = 1;$ P. D# J' T! _- a- {
yData = dispB;
" n" q0 \: X: C delay(dailyCount/10);
' P3 B2 b# q1 i, Y$ q, S if(i>17)
, Y1 H5 B4 O: H# d$ f2 `, [$ Z {yDLEN=0;}
z8 o$ i* m; [9 N7 T else
% ~; r! @; S! o0 d {yDLEN=1;}$ h3 \0 D" E* r0 [, _* V/ _3 v
* y; W; f/ M. ]5 o' O
delay(dailyCount);$ \) ~7 z0 s" D G" ^, `6 `- N* U
yCLK = 0 ;
( [ S" l9 ?# g8 W delay(dailyCount);
8 I8 H4 P- ^ ^( j' [4 x }3 J3 S6 p* T: H* s# T2 u8 x0 w
. r7 M( J# U: p+ u6 j
yCLK=0;) N+ } D+ Q. F1 c
yData=0;
) S& T4 `. K @9 _ yDLEN=0;" @) l" l# A# O) D, Z, K+ ~
delay(dailyCount*10);! d3 r7 {5 Q& f/ d9 N% ^
}' V3 S% f/ l0 n
' [7 G3 y5 D v5 |) a+ `6 m3 F
" x' W9 z2 W( s( y3 h" c" ~+ a: m/ D8 z0 f
- l0 q6 Z2 U$ N4 r/ O" y- `! Ovoid main()
* r5 [4 f ^; C, S$ Y{$ [5 c- }( N6 X8 j" u I) C+ s
while(1)
% v( P& K! u" {) Y9 Z( R8 r$ N" Y {6 X" g2 O. B5 t$ ?
delay(4000);9 m+ M& h% \% |. v; H! u
disp(0);
) r$ D6 f8 ~9 E5 s/ L# x O# I, X } - G* M: i* _' O9 ~
}
9 q0 A) X" ~5 {- M5 c
& ^4 Y" E( U& e. R5 O. t9 ]/ R+ D F- ]6 F; f7 J+ z. P% I
|