|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
2 ~" G' f1 G' i; r7 C* R% K% v- w
) w9 R4 h @% n# B U! M. S8 R+ g& r
& X( q0 N* J# V" C4 ~3 w3 r6 w: Z
' V% x' m5 C i* h9 w9 B- {& _( Q0 `6 \
9 o2 l1 n/ Y9 W% E1 y' h+ N2 ydemo 的代码在这里, q5 r/ \/ C' ?* d& G
: A" `) _3 h( f2 ^+ `
# }/ S+ v( I) |. ]' q9 m3 ~#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
$ I0 C* L3 m9 J3 m- Q
. V- N- K' ~; Y5 Zsbit yData = P2^0;- W* h$ V& D% w
sbit yDLEN = P2^2;
' j+ @2 K$ n$ S- m- Usbit yCLK = P2^1;9 L8 O; S) X6 K# w% F0 C' n
const int dailyCount = 200;# R# u$ o3 ~) V7 k7 ?: T
' j% B x6 i" v' c5 M: ?
4 c5 t6 K1 k" i6 M4 e
, R5 ^2 [" O- m( w2 r) Evoid delay(unsigned int i)
& }0 p7 \4 f Y) b6 R& ~! R& W{. g$ y3 V. z" q6 ]4 L! S
while(i--);
' v; M9 i. p% B. @) O# m& |. `. h6 x}4 @1 F3 p" b- j. b
) p$ p+ t; m2 E! F9 U+ D; m9 F; D$ s X( u- Q
void disp(unsigned int num )
4 g6 S Z( v9 V7 V, ]- p{* ^$ Y# P% I) e& g/ Y$ r' j
unsigned char i ;
" j& t; V7 N3 `: n
) i: I1 P1 r, E9 t3 r% C$ Y unsigned char dispA[20];/ }5 M/ U' {1 }3 G2 a
unsigned char dispB[20];1 y, Y1 \2 _9 @ N, U5 J
: H% j y3 V8 y: ^ unsigned char num1; E; {- @) m5 h9 m( m4 y0 w
unsigned char num2;
1 h: h8 @0 P( f, r unsigned char num3;- m" z- d a' V
unsigned char num4;) s ^* r) ~! G4 P$ Q
unsigned char segR[10] ; //右
/ i( q, D0 L5 d' y; a& T. o2 v unsigned char segL[10]; //左
( z/ `0 Z$ h! @5 \" Z9 U: i+ K3 K$ a% ~& }$ h+ l; j
//左 $ z2 Y6 M& o0 W! J) P* V/ m
segL[0] = 0x12;
- ]" J% a- ?) |& V- [6 l* ~ segL[1] = 0xFA;
7 c m/ x$ M, t* I) s* i7 {* Y segL[2] = 0x0E;
6 m8 A0 s- m# K. J4 p segL[3] = 0x2A;# I% ~9 \; @% l! d/ T
segL[4] = 0xE2;
8 O! Z# n& v$ n, h7 x0 G7 `* b# J+ v segL[5] = 0x63;1 H9 O% ? U7 U! o* `; h; W6 S
segL[6] = 0x2A;( P4 k! V; Y' c! O8 b B4 C
segL[7] = 0x7A;0 P/ _% }; q; p9 S4 M8 ~2 i8 {
segL[8] = 0x02;4 }) S( c+ {3 f' ]- g( D- o5 I
segL[9] = 0x22;5 a0 S8 T" H( K+ r6 l, r
+ \* ?/ e U! [ % z. k5 K# E' D, E2 B3 y
5 _8 E2 J( z# H( z2 J/ l' C0 D# i //右" a+ o1 f) ^2 B0 }9 h. O- ^
segR[0] = 0x88;
4 m; j& N& d3 ]" F segR[1] = 0xEB;
; ]3 z3 ~: g; e' M/ d, m0 T. U! y segR[2] = 0x85;6 N/ \+ q" f$ [* Q
segR[3] = 0x83;: o: X* u5 ~$ b) O$ b
segR[4] = 0xE2;! f, \/ c) k3 Q5 l c! r
segR[5] = 0x92;. z/ G4 m! H/ L& o9 s7 ~
segR[6] = 0x90;& K# Q8 G8 M4 t i/ K r
segR[7] = 0xCB;" Q7 r! O4 l+ D ^: ]1 o% n$ X" o
segR[8] = 0x80;, f8 } ]9 r: _0 P/ q' B4 d
segR[9] = 0x82;9 F& e% w5 {' U$ F8 b8 W8 j( j
, ]! w' ]0 W. p ]3 B3 [' o0 s* m
3 v0 l I: q+ F& l num1=num /1000;
9 M/ o: Q3 q% D$ |# E1 }, m9 v num2=(num /100)%10;;
( h- m; k7 H2 f7 { num3=(num /10)%100;;;$ u9 j, ]0 P# c8 }1 p9 {9 ^
num4=num%10;
$ J. n3 k, \2 l+ j# y1 B2 _: D5 n0 c2 ?! s# u; Q
: f* M& J/ K- W+ }' W" M: n
) X/ B* @3 e, p W9 _( a6 i r1 @
1 t/ ]9 s0 [1 V" z: J+ n3 {) x( c dispA[0] = 0;- S3 E3 u9 q& @6 U! _
dispB[0] = 0;
6 s/ d/ V% w) q+ }* t
% H7 x; W; y4 S/ ]1 O8 B; }$ b7 m! g' \8 c
for (i=0;i<8;i++)
& W( R d0 L: k i {- S* H# U2 k( R. a% x
dispA[i+1] = (segR[num2]>>i)&0x01;
8 r/ v, o2 n B3 \" S dispB[i+1] = (segR[num1]>>i)&0x01;
- _- Q" m' v: u+ H8 x" n) v/ A/ Q1 C W+ D$ Z( e
dispA[i+9] = (segL[num4]>>i)&0x01;
* j1 `: X: U Z' `/ V) I dispB[i+9] = (segL[num3]>>i)&0x01;4 |3 P3 {9 W$ e! I% O& ]
}
9 n0 B: Q( S" ]; U4 q( h$ J
2 { t5 v+ ]2 C& e0 d" W/ K* j2 [8 L7 V9 H+ v' @
" ^: q+ F% D* b3 t# {/ O# T( Y5 K
dispA[17] = 1;
# ] B) W0 J. v4 L' L" q3 P2 m$ E7 ] dispB[17] = 0;
, H: y" p9 t( G% Y" y7 C4 A8 Y# i) _- W
dispA[18] = 0;- Z3 h0 y% |" w8 _2 N" t: V
dispB[18] = 0;3 W4 E/ e4 X( x) P3 h7 F" l4 \
0 X3 i( j* Q1 f5 _ I5 w! l
dispA[19] = 0;" Q- [" c- d- ?2 o. N
dispB[19] = 0;
9 j8 w* v8 k4 R; | J5 _' {" K6 I7 Z. a4 ^3 ?
yCLK = 1;4 Z4 J3 R8 X2 v; u6 o
9 J* G/ S" N9 L5 I) j' B+ b1 J
% } }' b# w2 n" `" q
$ O7 \+ e/ ]0 a6 V! f7 X; `' m9 `6 i
for (i = 0;i<20;i++); s$ }! n& o# Q# v
{
3 w1 z% ?! N& D; R8 k# g yCLK = 1;
5 s! c# s; u+ Q8 n& A yData = dispA;
+ f( E+ d) \* _ J9 U. [ delay(2);
% s f8 k) J3 F/ C" i9 J0 Y2 S7 l if(i>17)' Z7 T; v q6 u% l4 x- S
{yDLEN=0;}
: r7 S4 i) G, y) c# U else! J3 G2 ?, k( W% z
{yDLEN=1;}) ]' i' k5 V/ G( \8 a A, \" S
! a; U( d1 @ q; n3 g+ |3 g4 N3 I
delay(dailyCount);
# D; s3 x I1 X, i9 d- z8 d yCLK = 0 ;( A$ ^+ e. [) O3 |" k9 _' K
delay(dailyCount);
2 i Z3 ^* ]. i: H* r- L }
# J: q/ G! W+ U7 R
2 }( ?7 C! ]/ v; d. E1 r$ C1 c3 x yCLK=0;
( o. p$ e. I' f8 H( t9 d yData=0;4 C) n, {' c! g7 u1 d
yDLEN=0;# {7 V3 i+ _2 @ k
delay(dailyCount*10);
' o1 R. s7 B2 q j
6 Q) D& y' P$ y7 g# @8 _! \* n, n9 W, A$ M
. Z4 b/ a; d$ R/ L9 ? for (i = 0;i<20;i++): K7 Q l$ X% a+ s
{$ ?8 }/ B+ A0 x7 r, K3 z
yCLK = 1;
/ ~8 \# l* T& }% u yData = dispB;+ P9 m9 g+ o+ b p3 K! B$ R5 M; S& O
delay(dailyCount/10);* H, U6 U% f2 n. U( J' ]3 i
if(i>17)
2 w# i; R. U8 a3 ~! A& U! ^ {yDLEN=0;}
$ I3 q( E- b+ d0 ? else/ a9 t7 u1 _! N) P6 Y
{yDLEN=1;}! j8 r* l( E8 x6 g5 x
5 Y! T' `$ S; c# H5 R) v delay(dailyCount);
& M! [! F1 J# z [ yCLK = 0 ;( j' n* g" G' U
delay(dailyCount);
3 D3 b+ ?+ b: |) P7 v! t }; |, t( W( T2 J$ W8 q& H
! D, x8 ]; ^: ]3 v6 [
yCLK=0;7 s6 W" a! X& h8 P
yData=0;. b4 b( k! [/ J
yDLEN=0;& n+ F- h" [4 f1 B- D% z D
delay(dailyCount*10);
" y5 l6 h4 g7 M4 X) Z- s Y5 j}
+ @/ {6 \ _7 T& q& I' i
1 R3 a. D7 R8 }! i' I2 x2 t b& ? ]7 w: l
% X6 r8 I$ g1 E: C. W' m$ l* s8 w) K3 o; q9 V) |
void main()# g; K2 I. J1 W: X6 h" p
{$ |8 F* H& f! u
while(1)& _7 Z6 Y' z9 k# Q, b0 [
{! \% k c1 @+ t. A0 u2 [
delay(4000);8 q) R4 T- |' B1 P& g
disp(0);' x( N" v" l( S2 d w, S' J
}
0 b! G4 E _8 M! @; E$ |1 a}
; ?5 Q4 m9 `/ h7 j
1 I) P A7 i4 `+ Y9 ], n4 M4 i
9 b4 v5 N& @0 q5 h9 Q! P# Y |
|