|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
, [6 Y- y0 v: y9 S% m) \: M V7 W9 I# i1 I
: K; _6 G3 M& M; O+ Y% a
7 @- m- y9 U( X1 c9 n m
0 b: J* j- Q3 D- R- C. Q8 x3 Y" X" O1 @) h
4 N5 d8 j; s: f. B8 V, h
demo 的代码在这里8 b( U4 M4 z0 m8 F( c. t( ]$ v5 M
, N% q! z/ ]9 Z0 f
! {* @' }5 X- |9 v$ p! r
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器( b/ s+ [% }2 y5 V, Y5 T* U2 T
% D" s& U. u* ^sbit yData = P2^0;
; [* [, u3 l- Fsbit yDLEN = P2^2;
4 ~ M( @ ?6 N$ ~2 r2 gsbit yCLK = P2^1;6 C# |) F# _; u: Z
const int dailyCount = 200;
9 _4 i( u& E! `0 v) o
1 C% C/ g8 o$ z0 e2 B G3 y ^' Z% U; A
4 e' \# e: d: y: }! y' X W; Xvoid delay(unsigned int i)9 ]' R3 Z, K! V& z) I( c& V
{4 [( p' n4 \& ]3 b
while(i--);
) B4 [4 @" @5 v- p9 V}
0 [2 i3 T5 L! K5 [5 S/ a1 ?/ ]$ a( {9 w. m6 O( C9 Q
. m6 {4 \3 c1 i3 _, Kvoid disp(unsigned int num )' N- V& I& I3 J7 [: u" G
{; n* {8 w0 C3 ^" W
unsigned char i ;
! n% k3 B; {# i) f+ B
6 B' Y7 h/ Q4 Q) l unsigned char dispA[20];
, U; X4 w. l* v unsigned char dispB[20];
# f g+ W/ P: Z& S& G. y/ k" J5 x7 I0 F9 h6 ]6 j. k% S
unsigned char num1;# W, @6 ~% D; h4 r5 u/ x4 `- P
unsigned char num2; " \7 V# Q% t: \- E- N' ^, Y9 D7 U6 @& ?
unsigned char num3;5 Z" n4 W5 m# F M9 [) A5 O
unsigned char num4;
& A/ X5 T$ k9 g0 o unsigned char segR[10] ; //右
6 I/ Z/ E: b" a unsigned char segL[10]; //左; O. p# R) ?& I! @) G
: u# v4 j$ O# f8 f //左 / y' v( B4 M' v# j- r" m: }# ?5 j
segL[0] = 0x12;
# U# W- y e0 z) H segL[1] = 0xFA;
& u% W- w# `) ]. f6 i- \7 d9 N segL[2] = 0x0E;* h/ `) {5 n" q: T5 B7 `
segL[3] = 0x2A;: o# f$ r2 y& q1 J/ Y
segL[4] = 0xE2;
, { E5 R& C' p3 ^0 o segL[5] = 0x63;* y# s" ~( E" }
segL[6] = 0x2A;
( P4 C, X/ P4 C9 \- h segL[7] = 0x7A;
$ y, }6 t Q0 `& E0 C segL[8] = 0x02;
1 A5 U5 t1 i" c7 L segL[9] = 0x22;0 b9 N0 s$ ?; G# O, y4 i
# }! h5 p: \$ T ^4 ^9 M- E% t
- V+ u3 x8 V! f0 z/ d8 b1 M2 D 5 v' F+ ?" p4 J9 F! s* ?- f
//右
4 }4 ~- _6 y; R8 H" G* x segR[0] = 0x88;: {# E9 @' h9 { T% a0 `
segR[1] = 0xEB;" j2 ]; B* e8 E* [* k" c
segR[2] = 0x85;
8 P! u3 e& U7 [ segR[3] = 0x83;
6 G. x2 P( |7 l$ n6 a segR[4] = 0xE2;
- @# I; z1 }8 A% O' ]2 Y# Y! _ segR[5] = 0x92;
; Z8 R( j t2 \' g" S6 ^& x segR[6] = 0x90;
3 Q: a Z' a' Q; I* O( X# ^ segR[7] = 0xCB;6 l. K* N1 i5 Q0 U. y: P Y7 F
segR[8] = 0x80;& }! c% V7 v& @5 U- L* r
segR[9] = 0x82;4 U- O: c0 | V" K
* ?+ \; H8 Z& |- V+ D# Y
3 \4 ~, A- O4 V O" R' N
num1=num /1000;
2 E7 `- N+ s% U* B num2=(num /100)%10;;
3 x& H' e0 `: e+ b% s0 D6 z: d num3=(num /10)%100;;;& Z& C( J3 a7 t) a
num4=num%10;
, `* a X. D- C
- G+ o% Q; U9 x/ X9 S1 _7 e. G3 G9 a i" C4 w! B1 c. V9 ~
P7 d1 o# u, i! k, N
: T8 ~8 F$ p' N% A0 P- {' q: R. B0 P& R
dispA[0] = 0;
. Z( `7 I. V6 m6 `. g; a dispB[0] = 0;, ?4 r2 ^" g) e( V: h2 W; c- ]
8 H* d( D2 M! {& I6 r) G- t& K- C6 G) i+ p
for (i=0;i<8;i++)
/ a' I8 J4 |) _& L) ^: ` {- a+ I) c3 X2 s% Z3 j
dispA[i+1] = (segR[num2]>>i)&0x01;
# ^) ^0 l; g8 F; G dispB[i+1] = (segR[num1]>>i)&0x01;
$ y( U- p4 X$ y/ E3 l1 W" O9 |# c3 ^' }4 x
dispA[i+9] = (segL[num4]>>i)&0x01;3 ?. }; K; K! p) K( Z
dispB[i+9] = (segL[num3]>>i)&0x01;
) Q, c3 ]$ Z+ A) k' E9 J' D4 j3 { }0 z3 J, K3 n0 `* ~ ?: L7 X
4 Z8 P2 ~# O- ~/ R1 m* E, q ?8 r/ g. X+ p) m
z6 n, Z4 d7 D8 d* f8 O* a dispA[17] = 1;) q3 Y* e4 r6 n- J6 Y
dispB[17] = 0;
$ D: ?, A: a0 T$ B* P6 P
' O2 n' E+ O, c! M dispA[18] = 0;
- h# K/ G: D F1 t* o dispB[18] = 0;
# M+ V- k6 X+ D0 @0 n
- _$ ~1 M- N2 S* ]9 l! {- w& ` dispA[19] = 0;
0 F6 X% E) U+ e7 \) W dispB[19] = 0;6 m) ], S, [8 q% T5 v
6 F0 g- A% E4 g9 t yCLK = 1;! t7 G8 B5 n* u2 c
* k, T" ]4 o, x
9 M3 `1 c" x7 D( ~" n. c' d8 y `( P: v) C
for (i = 0;i<20;i++)$ ^2 t, r( F; Y+ J6 A6 f) r5 }
{, R9 t9 M6 O- N+ ]/ K# {" H% u+ P
yCLK = 1;9 {. q9 z( {" l1 C
yData = dispA;
: A4 `8 l6 d" `7 i9 T! \! S delay(2);; F. z+ z/ V9 ]1 V8 D' s4 g0 D
if(i>17)
8 \5 A# X& E3 ~7 d" D& R4 H {yDLEN=0;}/ S0 R5 @; y# Q/ V$ p0 _# j
else
1 y3 }+ { B/ e( W) |7 q8 k' {; h% K {yDLEN=1;}
, y/ G3 {# F: l" E; b
4 Z/ Z& L" m/ \$ W1 o: z delay(dailyCount);9 i& s" v7 B/ {& G/ Z
yCLK = 0 ;
, s/ ^8 H) w* r3 d& L delay(dailyCount);
4 P7 P$ F" O7 R5 p }
" g4 p3 x+ w: L/ |! m4 w. }8 a) D
yCLK=0;
- l% f# s9 {* s" G* | yData=0;# L2 C" y/ g$ R
yDLEN=0;3 O! a. y8 o5 l+ p9 u4 H- H9 e
delay(dailyCount*10);; R! R. b& A) R, d$ H$ ^
) N, B# ~( F1 Y" I% I& F2 K R/ v4 E* r1 k) N2 F' m) H: [0 ?
# [2 T( V8 n3 y6 I1 S% j( b& r3 z' ]; j5 ~
for (i = 0;i<20;i++)# k; }, k/ ~# i! H. }" Q( A* Z
{" U } K! o$ `" {( A8 @: C
yCLK = 1;1 F% Z" v. X/ m2 L: W O
yData = dispB;5 Q0 w F# D+ ]" B& J2 f* o- v v* o
delay(dailyCount/10);
" R1 [7 B H0 K if(i>17)
- V/ g% f% i4 @5 S B {yDLEN=0;}4 D& m; L+ k7 g1 [ }# g6 Z
else2 a0 i; z0 z D5 B) Y
{yDLEN=1;}
% V0 l$ {3 _0 O6 Z r b0 c
0 G8 b) f( \4 F! F( J0 I delay(dailyCount);
$ d$ U- e! Y3 d yCLK = 0 ;
1 U' T* V/ B! D delay(dailyCount);# }5 C9 N* z: N# ]4 `9 \
}; h0 ]% ]2 r2 g* R, t3 g4 j4 k, C
8 F" m2 F s! l$ d1 P yCLK=0;" W4 D4 g" C& b/ t/ o3 A
yData=0;
- a3 z* T6 ~4 A! y7 P* N- s2 u yDLEN=0;: m4 H% F5 ], T- T5 h
delay(dailyCount*10);3 Q& K* f* \/ ]3 a0 {4 m
}
% W; @3 j" b, M; k! C- t0 t% h+ {4 c: p2 Y0 B1 z
6 k9 A: r+ J& M. ]1 i0 O& N( \7 v' b- H2 A4 b* G4 I
! |( k9 I. p* l
void main()1 Z5 r9 @- y, ?, V' }. }
{
. Q% X8 Q5 C1 f while(1)8 Q' P9 }& f1 O/ ^+ n
{
/ P' \0 p+ M# q) `- n delay(4000);7 B. P9 g# B! L! q M
disp(0);$ i6 E7 z- Q/ M2 _! R7 q4 \
}
" @. ~1 D2 S3 g}8 W6 I2 j3 [3 G2 P* ]
3 v8 f9 w/ ]. N) s: p
6 Y/ `! h7 ^* ]6 v. k |
|