|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
' Y% V4 a/ \& N' o \: g) |% e5 o2 _* }) t
) g6 g# g# D, @6 F. P7 m
# n0 H% A e& @+ F( h* X3 A6 l% U8 N1 i. r+ w6 K
: z4 P1 o$ ~- D2 K5 g
: E( a2 _* K0 N1 Z, d6 w3 o) k
demo 的代码在这里( `' w& g+ w. L- d' F2 l- @, w1 n8 d
! Z9 S0 C# p( R) e, b
7 U8 f, z. {) ]5 o$ b, A
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
' ~5 C, X! e! V9 m
" J* ]# ?4 g. T* l+ G5 J# Xsbit yData = P2^0;# H. s; K( d0 G5 E7 j* [& C
sbit yDLEN = P2^2;, |* r" y: ^; y# Z& n! ?, A: j
sbit yCLK = P2^1;9 K3 y8 R2 y7 e6 G) i/ H0 t0 {
const int dailyCount = 200;
% }. R7 g% ~/ Q4 ~1 b8 O- B6 ~: X5 J0 {- e2 Z6 y
A3 N. c8 ]+ \8 I% H; G
8 l9 `, F$ Z! A. K7 @. Fvoid delay(unsigned int i)' C" `; E3 M4 R
{' ^6 y& k- B! j" X
while(i--);
9 j/ J7 T0 W A' m, |}6 M O/ X+ }" e1 F2 D/ U
- S" u; Q8 W: n2 i! I2 H
$ p# H8 ^( T) _- a4 dvoid disp(unsigned int num )
3 V" K& f4 ^+ l3 y% n{. M l( K2 T1 a
unsigned char i ;# c: T! o, D! M; @/ ?1 y! `( _2 v
9 _' R! m; k8 I: \0 u9 U unsigned char dispA[20];" R, ^) Q. Y: F8 X% E) r9 \
unsigned char dispB[20];
, b. g2 G# {6 m2 Z' J% O- l2 U p, q. H7 E9 R+ [$ F) o
unsigned char num1;/ ^! D: t/ }, D8 |7 K* d
unsigned char num2; , i: ?1 q, F! i2 x1 W+ q9 Z: }
unsigned char num3;
5 d& o2 F* U8 I: Q% N d9 O unsigned char num4;7 @$ J! ^. i" O: ?/ I
unsigned char segR[10] ; //右/ q3 ]& C. X; D/ r3 ?; L
unsigned char segL[10]; //左
" K' \6 d( o4 p/ M) ?4 ?! Q2 m# ?3 [
//左 / }( t7 Y1 {/ }6 Z# D
segL[0] = 0x12;4 A' x' i6 A& M% n+ L- [/ X
segL[1] = 0xFA;4 P5 d2 h% O9 F1 O4 x$ L" v' b
segL[2] = 0x0E;* d* m4 h7 \" w& C: n
segL[3] = 0x2A;
- g# H6 ?* z4 ?4 m/ D, m6 g) a+ t segL[4] = 0xE2;' g9 O E1 V- d- [" g. L
segL[5] = 0x63;
* Y0 D' x" J* I4 z' r- ^7 l segL[6] = 0x2A;
* o v& h8 o9 s2 }' P segL[7] = 0x7A;5 c$ ]% B; g2 [9 P, q
segL[8] = 0x02;
! d8 L* {# r7 p segL[9] = 0x22;+ d) @- f7 c; ?6 e3 J
T1 G2 V% ~3 p" ~7 W
4 _! u* A- ]9 e2 V
0 K- F: q3 M1 [+ v% k5 l9 ^: o //右. Z2 [8 L8 Y" U7 G2 H
segR[0] = 0x88;
; e4 f7 ~! g5 G segR[1] = 0xEB;
! x" Q/ D" K' D segR[2] = 0x85;! d9 z+ }- H' l1 @: R9 v8 ]/ U1 q
segR[3] = 0x83;
; ]1 w/ Y X' h* }: Y segR[4] = 0xE2;6 O7 R! @+ `2 d3 i) d9 D0 V, A
segR[5] = 0x92;1 a+ P4 Q* }4 D% N9 @
segR[6] = 0x90;
: I7 q6 ^; U; F( B6 x& X segR[7] = 0xCB;
( k0 i, M2 @: U w3 k5 W( k segR[8] = 0x80;
* M: X# x: ^5 Z1 r- N2 R, K( t1 k# O segR[9] = 0x82;" [; J7 A7 ?8 O) d) N0 ^! p
/ n: x; C3 `2 K9 ?- n `
V/ K% [: g6 E% H num1=num /1000;
y2 V' f# p; C- B1 {' k% D num2=(num /100)%10;;" A: {+ I& u: T, W
num3=(num /10)%100;;;" a, H; B/ A, p
num4=num%10;# L6 y h8 N X
# M: f+ T* ~& b6 m" A0 ?' Y6 n
; a6 C7 R7 X9 V
1 g9 }* H2 n" }* N/ ^& J- M& ~4 W6 i5 p/ z) v
dispA[0] = 0;
1 m! g x" [( X3 Q) c dispB[0] = 0;
$ l; f Z5 e4 N' \* f# j% f- I0 w, d9 a, }1 [" I
) c6 n5 a# H: Z# T N& j
for (i=0;i<8;i++)) @+ r6 h) s; e5 t) X' C l
{
, j7 d9 T# `+ q$ i dispA[i+1] = (segR[num2]>>i)&0x01;
7 p% f- I; @% b$ \ dispB[i+1] = (segR[num1]>>i)&0x01; C; h2 e! }1 m) \- J, _& b
* m- M- |% D( V; `) R; X8 t7 H dispA[i+9] = (segL[num4]>>i)&0x01;9 C+ e" |9 n, j' |* ]) I+ {# h( G, ?2 N- Y
dispB[i+9] = (segL[num3]>>i)&0x01;
; o& m( Z. U, ?, L/ ?! W }
& a; Z2 o9 k4 c
, k5 P! t- P5 y/ p
% @; |+ O: ]% Y
& x9 o5 [5 p3 g/ w' A dispA[17] = 1;
; l& |2 @ s# q E dispB[17] = 0;2 K. @/ M: `$ _; p% Q Z
2 `, Q6 B9 C( L) E# W
dispA[18] = 0;
1 e0 Y5 Q( r9 o c+ X dispB[18] = 0;
& i1 E7 q4 G. k* K
1 u* R, z0 t. d3 O @$ t dispA[19] = 0;- G' j/ ~+ j6 j% h) o( q
dispB[19] = 0;
6 @# f3 m5 g8 C. A8 S) @" |
& E3 d* @* N' J5 G0 t4 _ a yCLK = 1;
4 b! B; h$ ^, h! B& J, v# e1 _+ }4 N0 N# {$ @
$ D, E g/ C1 J O6 `0 u9 W
0 l2 `: C' _/ ~$ @
for (i = 0;i<20;i++)
" t0 X$ S9 z, Z3 D2 N; Q+ q {
8 a1 ~; v# a; r) C9 J+ e yCLK = 1;' i4 Z, [4 O5 d+ w' f3 z
yData = dispA;
# [7 K: Y0 j( x D, r3 k delay(2);
2 e9 t* x8 R9 Z3 a2 Y! D( g if(i>17)
. @7 J5 I0 a3 \1 N) a3 r* _3 m {yDLEN=0;}* q: H# f/ I# ]2 d$ \
else4 q$ x% _# Y' M. z
{yDLEN=1;}
1 {5 j: ^% j- ?+ n$ m1 e& V$ G1 h. q ~* L9 t, h
delay(dailyCount);- O0 u; z( A7 X6 _1 s. H; B
yCLK = 0 ;6 n" @! y# ]% ?6 G! e5 W7 Y1 r
delay(dailyCount);
. e# |4 y+ j4 m a! {8 t }
8 Q7 }/ d8 b2 U) |# ]! L
- \" E F- Q# W. | yCLK=0;
: q8 d; B! F- z7 K Y; H' p yData=0;( t6 i4 Y" ^" H, M, J+ [5 u
yDLEN=0;
, D7 H) z) Q6 C- H7 v @ delay(dailyCount*10);6 c6 B1 O" o* a/ W2 d; \
: S" K' N0 W3 a' x- [( |& v. N6 n8 p7 z+ z5 ?- o1 q- r( W
$ w+ h) I9 g) T7 d; T
for (i = 0;i<20;i++)
: s7 A4 O1 s9 }4 ? {. a2 l' H, N& ~0 B* |7 J
yCLK = 1;
. A8 K& R8 C% F% r( M yData = dispB;4 X) \4 A0 u. f/ U+ {- ?
delay(dailyCount/10);6 ^1 h e7 `' T6 J& E" e
if(i>17)
) B; t8 ]) |, |: v4 k% T2 F5 h) d+ Q {yDLEN=0;}
4 H p3 c6 A! V, ? j else
q* D# K: n; x0 x0 f {yDLEN=1;}
, Z! G" Q9 G$ _* x3 ?7 i" g/ P) w1 A% c
delay(dailyCount);
- y. ]9 m; z' U3 J6 h yCLK = 0 ;
' S% @, B, R' {, n# t5 `; c delay(dailyCount);
% T! m( K _* L u0 D }
4 o; E. |% a2 }8 d! Y. C$ U& q0 K" a& k
yCLK=0;
6 T: ]; i" }* o" N yData=0;
5 U$ L2 j `/ Q( n2 ~/ { yDLEN=0;5 H. G* L* \) L
delay(dailyCount*10);: D! D+ ?( z. H# e; F
}
6 I* R$ v { `
9 W& b- A5 m6 k, _4 T3 H& C) V$ q3 _* v* j: @* R$ k) w. n$ U
4 |4 c. V. D% \$ _( b$ [8 I* a
' e; T! ^. n' R- c# _. `/ bvoid main()
4 h2 ? ]% j* n4 Q2 b( }) r7 F{# I2 u2 z3 P' m: ?7 `" E
while(1)$ H$ \1 X7 s7 o" Z
{; n! K4 W6 s0 _3 t! p) f+ y
delay(4000);- b0 J. m4 s* |3 M: q9 o
disp(0);
. S0 W: W1 R7 Y$ `7 e6 R } 0 A1 C) F7 @7 C
}- _, P7 Y4 i- [ o8 w' _$ y
! N& @4 `* _) B G+ Z. Y
4 q; _- S% c4 P# n6 q I |
|