搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
/ w8 i# r2 n, G/ D1 e1 c+ Y' w8 g& H
8 Z! L9 e/ F n! K6 U
% E% R2 ?8 I; [* m
: W2 _$ u6 h O$ l( Y1 i' A( A6 D
4 k' R K- T4 O' ^
, ?+ p1 A7 h4 ^
2 k6 i6 \7 m# a7 N P7 \, ~demo 的代码在这里9 W6 d) E; A2 A6 E6 p$ X0 b2 p! f
! Q7 T! N. Z! J% I6 p
- H3 n2 Q9 }7 r- N- @* S2 S( o
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器3 w/ _1 Z4 [1 n' b: O! k
" ]! k* ?. s" M/ s1 R
sbit yData = P2^0;" u! y/ I: n/ X8 e
sbit yDLEN = P2^2;# o1 {2 Q, N' c7 L9 |
sbit yCLK = P2^1;0 K+ B' N, m$ D$ ]
const int dailyCount = 200;
8 W: x3 A8 G# v0 C# G1 G# F2 @0 c: b4 z3 `* y5 `0 }# }; s8 t
. y$ Y z- A2 r& C" B, y& |- E0 u1 e
/ i+ A$ h& ~# Ovoid delay(unsigned int i)9 f' b! V* q3 i
{
; F% c* r6 Q$ Q, w1 v while(i--);
. N# f1 @) z+ H3 R: z}
) [# r. S# d/ ]+ n
+ _. f: Y7 q) r8 a( n- k) q- x
; G2 S# w8 e4 b4 A" T% ^# s8 R2 J+ Qvoid disp(unsigned int num ). w/ n9 L. B4 n4 |! G* X
{2 y. _" [% u9 u% x6 v: e# U
unsigned char i ;/ i4 Q6 ^1 F$ }* v3 L; t/ t
* h' z, [0 Z7 j4 ?, o9 M1 b
unsigned char dispA[20];; g' K7 s% n% i) s8 _
unsigned char dispB[20];. l2 D# m6 l/ p. X6 @9 m
/ B% u, i6 s) Y4 v unsigned char num1;: ]7 n2 a' N& d: l& l
unsigned char num2; " |3 z2 c: F/ G- s
unsigned char num3;
$ d% k3 R$ N& s* } unsigned char num4;
0 ^( E' T8 @3 t unsigned char segR[10] ; //右/ b; J, n; \! ]
unsigned char segL[10]; //左# w+ ?2 K6 _: c- d3 q. ?6 r! J' L
& Y7 o. \' W$ W9 y9 R2 e# F' H) @- L4 J //左
" m' H9 M" C4 q* U segL[0] = 0x12;/ u5 [. L8 q# J6 p2 d
segL[1] = 0xFA;7 B9 p! j7 t) I
segL[2] = 0x0E;
! E& q# K/ E/ s5 v8 i segL[3] = 0x2A;. n: `: }. S, A* g- Q: b
segL[4] = 0xE2;
2 F, x H9 Z7 G3 j segL[5] = 0x63;
0 ?( n7 R+ ] w( H/ x+ e6 T segL[6] = 0x2A;
, L, V2 n( G* K" k' v; { segL[7] = 0x7A;
$ t- `$ C* k F1 O8 E4 ]& C segL[8] = 0x02;
$ \0 A- ^2 k. M0 G segL[9] = 0x22;, W, q5 z H, ~1 X4 X- T
8 Z3 b( `; B" B# W. O4 ~% \/ H- q $ E' J/ } b$ Y) b# J$ X& E1 _7 }
& s5 ?/ S7 T) N4 S- I //右
' C" `) l: t! {3 x segR[0] = 0x88;3 c8 s5 l$ i* r2 ]: ^& p
segR[1] = 0xEB;
4 _8 c# y/ s& Q' C- Q segR[2] = 0x85;1 p% Y: L: f# p
segR[3] = 0x83;# Y. L' Y: z5 A8 N+ c
segR[4] = 0xE2;9 G ?# f# A. y% M2 w; J" W4 ~4 d: l
segR[5] = 0x92;
/ m7 |" J* L% m6 L segR[6] = 0x90;
- Z$ Y) n2 w" L2 ], u& r7 M& L* f. u7 M segR[7] = 0xCB;6 p9 C( B- J& U+ r7 F- e% n5 \
segR[8] = 0x80;( [0 T }6 Y- m2 K( F
segR[9] = 0x82;5 D( X: D7 w5 G( r' s, ?5 @
( V* I8 o* s, o4 t+ q1 D. _
7 e1 b7 T& q( r7 X. C num1=num /1000;( z% p! A+ f; h0 i
num2=(num /100)%10;;
% ?( ]( f0 ` [2 r2 g0 t+ ~ num3=(num /10)%100;;; ~3 G$ Q4 p& ]/ b# b3 O( c
num4=num%10; K* o! k/ z; _% g, |7 R" C
f0 i5 e6 c2 }; p" u
0 c+ r: E8 q- M# y9 l0 J9 P; Q
0 g1 S% D( j* V0 y+ {
1 K6 w% L$ y& a, ~2 s v' C dispA[0] = 0;) Z+ x& ~$ n* V2 c; b$ v
dispB[0] = 0; ?; @: c3 R* ]. ^7 m' w
: u3 _; ]* A* ^9 q, p: a. e4 r9 H- H; O, s
for (i=0;i<8;i++)
7 z9 d7 a* H- T( A& Q: c {
R: y+ G/ j- z6 _4 u dispA[i+1] = (segR[num2]>>i)&0x01;+ |, I" R& t6 x5 o* G/ U
dispB[i+1] = (segR[num1]>>i)&0x01; 6 F- p0 d* _+ K# x
) @5 W4 C! }& ?
dispA[i+9] = (segL[num4]>>i)&0x01;& J6 S) N' f# }2 ^( {# U
dispB[i+9] = (segL[num3]>>i)&0x01;
8 D- _. |7 @0 C' ]; J }
- H, q+ O' ~( r7 h( J
8 `& M2 T8 }- A8 j% n- M4 s( E' w* U+ a4 ~+ [' \
8 V" N0 S8 a8 }- j L# C( I
dispA[17] = 1;
7 U0 j/ m& z& S( n3 z: U! h dispB[17] = 0;
8 g6 U& d1 h* ?( ^" E$ W$ I5 ~: X. L, r3 y Z# j3 c$ n& a
dispA[18] = 0;( r q$ k' W1 S9 r5 Q
dispB[18] = 0;& ?9 n& c. Y/ S
! \& o$ h+ M5 S3 V/ A: v dispA[19] = 0;5 Z8 V9 d( n% C; o2 h
dispB[19] = 0; q# H6 N6 {& x& v3 |
& f0 u1 u4 i# N5 W9 W: }" u- ] yCLK = 1;
5 ?1 ^* F. O# E0 }! w2 Q& }; L' e# t3 G$ T. {
- |4 [$ ^' [; y2 {7 P
6 M4 J* q; D# _6 m8 J( f l for (i = 0;i<20;i++)) O8 |9 P! y) I& m: B/ r4 {0 G1 n
{9 r1 y) {; X. S- M# |
yCLK = 1;
( m8 S+ J+ j7 x0 s* R yData = dispA;
- {. }* d* b0 y4 R" `! ^ delay(2);& N* x' p, ]. X1 k P- Y! H
if(i>17)( ~* f6 H* I% g+ \; y, S
{yDLEN=0;}
& @$ q0 a1 v3 r! y5 m else0 F6 W" P1 }* p7 N3 k
{yDLEN=1;}: A2 Z) M4 j- u6 Q
9 F8 z! S \! {3 E, T
delay(dailyCount);$ }8 c. [7 R7 Z; [ ?0 @0 I
yCLK = 0 ;
7 ^' n/ Q8 [/ r! b; S delay(dailyCount);2 z2 D. k& y! i& ^8 ?
}
3 I4 O# c) ?2 d$ ^" p% \* S) T, X" a; ^9 L( `
yCLK=0;3 \$ F$ ^" G! V9 I `! Q# c
yData=0;
( c u J& Y2 F# f yDLEN=0;6 I8 Q* o+ L+ e/ w0 h& p
delay(dailyCount*10);* g5 ~5 i1 H& J& i+ g, }
4 b; x" A! p& @ d6 n7 F& \; _
5 C% i9 T5 q6 q/ u4 A1 X! h& W6 o. ?" c
for (i = 0;i<20;i++): z/ m' z2 J$ `' S' i, o; v2 I2 I
{
6 n- X3 K9 A* I yCLK = 1;
2 \2 i! x* y9 I s R0 L yData = dispB;
i6 d1 W8 r! x- E( i) \8 | delay(dailyCount/10);5 v- o% K0 Z5 U! L# v) X, Y
if(i>17) p. F: e& D! w9 ]: R5 q% C v
{yDLEN=0;}
" k g( g) R+ N( K: k else9 p7 X: r: j* ] S% p1 T" c5 q
{yDLEN=1;}
% L: e9 l; z- N! m/ K) {/ f% d8 ~' F' B3 n, E7 [
delay(dailyCount);1 H7 R0 p+ e7 X9 F5 F
yCLK = 0 ;/ p! h g5 x ^' Y; U5 S. X A) F3 I
delay(dailyCount);. M ~- N! j0 j8 l) G) Z
}
8 `4 L# M$ K/ @2 C" M
0 E- C2 _# t. ^. I# z yCLK=0;
) a* D" n* Y8 g8 E7 l- ] yData=0;
% M U7 u8 h5 f7 J `; H yDLEN=0;
4 `$ {7 v! j! s' H/ m delay(dailyCount*10);2 g; u' O) r" W" y
}" `( [' N, t( y4 B" T
% D$ y2 _3 E" I8 _9 i8 @0 _; D2 B" w7 D
- l g: ^# A4 r
* u0 q0 I% \; g3 z( `) n9 V
6 i2 V1 r( a# C3 Mvoid main()5 _6 e3 C% u, j1 J
{5 U/ c. W$ n* t) T: t4 A
while(1); x8 _( B- D3 S, s* ^' }$ v! B$ W
{# ` Y$ ] F$ H" C
delay(4000);
% ^% a& d- c3 K+ L disp(0); b: [$ q; ~/ c" p
}
& O2 ~- }% P J; f' z' c}
+ L/ X7 s# |- L8 q/ `# T( x% |! E; Y$ N/ B
4 h/ X' D# l6 S G2 ?% t" G
|