|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。4 b) w- E y; k- \
0 P/ O* N- O/ J6 w/ u
$ u4 p% O8 p5 G6 e7 h7 S6 \* V
c. o! S) F4 l
: _2 t& j* y& v# t3 z% h3 i* j$ W+ O+ h
2 Q( d+ L/ g# J0 L2 t% S
demo 的代码在这里( P! }% ~ ~& T1 V( R
% o5 a& q: M0 B- E( ?* s7 J; V+ N ?5 W
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
; a, \+ I7 O8 T; |) D4 Z# r8 ?- f$ l
sbit yData = P2^0;; k# g. k( b4 `; j8 a" H# [
sbit yDLEN = P2^2;/ b6 i/ n2 h" B: ]2 f' l
sbit yCLK = P2^1;
) `; T% v* a! z; \" N7 Rconst int dailyCount = 200;
' W0 Z( F/ D3 Z, }/ d+ O6 v& F+ p7 [
8 F8 ~: o9 |& F( E5 G4 J
h2 ], ?: L$ b5 i' d' ^- gvoid delay(unsigned int i)
/ p& J- ]1 X, Q# W& O+ L{
. |1 [( l5 @/ P/ Q+ [6 B& W while(i--); 7 ]) B. X! @0 r9 B
}! {; _7 L/ F& [. p: ~$ P: n' y
. i) k4 [7 `: f' U! h% [4 F8 q* l9 O5 g0 r: j
void disp(unsigned int num )( b* I6 w) R& K- v
{
. ~' c/ M* H0 e; Y C( U unsigned char i ;
. L2 E$ V$ ~' U9 [
5 F! p. G \0 f1 Z; c2 j unsigned char dispA[20];4 n& f- ]' n/ o( F4 U+ H/ I' ?
unsigned char dispB[20];; g: b# }) D5 F0 V
' ?' f: ]$ Q! ^: f8 H# j) M unsigned char num1;( c+ W7 S+ |. S
unsigned char num2; " y& }3 b2 }- i+ _
unsigned char num3;
; E# r& h& Y! X* |7 f unsigned char num4;
7 e- }0 r5 R0 z( h unsigned char segR[10] ; //右6 b7 i: e A1 C9 B: b/ R# Q+ w5 g
unsigned char segL[10]; //左+ t$ _/ U3 k- p! M# ^
, C! D+ W( u. u+ Y. G/ a0 @ //左 5 ~3 o) a# t5 s6 d! z( [
segL[0] = 0x12;
% y. [) E9 m1 {! I* w segL[1] = 0xFA;; Z( e% B! w9 c6 T* F5 b
segL[2] = 0x0E;# i! s! G R$ \9 p/ |; O
segL[3] = 0x2A;4 y4 D+ f$ i* n" t# Y: t
segL[4] = 0xE2;" r/ `$ `2 E6 c6 `0 S
segL[5] = 0x63;/ {! g4 [8 @& P1 T H# ?$ a
segL[6] = 0x2A;& \6 x/ ^+ r2 A* H0 r
segL[7] = 0x7A;$ q6 b* X1 _" u3 b
segL[8] = 0x02;
; c6 n( i/ V! L) H2 {# [& W segL[9] = 0x22;. {/ v6 O, c6 t$ C1 Z" L- [- M
: Q3 Z6 m4 s: \- G8 d6 {2 X2 x; @
/ ~9 v) \) D/ |+ u: f
( A4 `! P6 E$ x" a% h' p( v
//右
- w8 o3 D5 k. V! }9 Z% N3 A. R; L segR[0] = 0x88;# g) a3 l: x, J
segR[1] = 0xEB;, e8 u y7 L; x6 l! Y. F
segR[2] = 0x85;
+ c. @$ }1 c0 E9 C segR[3] = 0x83;
+ o2 o8 q7 O, v) `1 H segR[4] = 0xE2;7 a" O4 X) l& P' j
segR[5] = 0x92;
6 a2 r4 x2 t+ r* h8 `* w0 h8 U% g6 ~ segR[6] = 0x90;. W: w( r1 A% s; J
segR[7] = 0xCB;& {2 V4 [& I% P1 q. f1 L# `; W* q
segR[8] = 0x80;
* m- ?% w. m* z segR[9] = 0x82;
: [9 z0 G% b5 i
9 g5 C4 J% F2 I; a 6 C5 O+ w. F" G# j6 L% h, `
num1=num /1000;% m. u+ j, E! ]( n# `, a
num2=(num /100)%10;;
- O! W& [$ l; Y" d' Q% E9 ] num3=(num /10)%100;;;: n" x: c$ {2 c! P
num4=num%10;
; a- U5 N7 w+ {* q/ e, Q/ L1 l, o0 _" Q5 x+ S* _/ e: T, D
# V3 v( Q: I, X1 b. j% ]
3 {' }% i3 P. \/ s6 N
9 X1 p8 V$ J" Y dispA[0] = 0;
" t. W! V: _9 w5 D1 s8 T. s dispB[0] = 0;
5 I) R9 ]1 h/ @% i. q$ l
# z8 @+ O1 [1 c3 |$ L! ? U, t7 q
4 K2 m4 v: u- N3 G$ F for (i=0;i<8;i++)& b, R* f1 W' w! w7 Y1 P
{& P$ D- l: o+ h
dispA[i+1] = (segR[num2]>>i)&0x01;0 `$ |+ {! W+ D
dispB[i+1] = (segR[num1]>>i)&0x01;
4 B& ?6 y, E: P- @, u4 I( f' Q( f; u
9 E9 {5 \# c5 E, C: ]" L, ?! _; j dispA[i+9] = (segL[num4]>>i)&0x01;8 ]5 a( M: C2 j* ~6 \! _
dispB[i+9] = (segL[num3]>>i)&0x01;
8 z% g9 K" r3 J, m! R- x' j) l }
8 o8 F, C( Z4 D* |
' P3 c( ~7 q, f' p4 D6 w4 m9 {
* l) G1 ^" }& N! Y2 t+ o0 O5 \, _; B7 Y# t' W! \
dispA[17] = 1;9 c/ N0 P! s. z4 |, |2 p
dispB[17] = 0;
3 D4 Q3 y. a1 a: O2 b7 m4 G. f% B) Y. X$ J
dispA[18] = 0;3 l6 y+ H9 y. E N1 d
dispB[18] = 0;5 Y5 l% Q6 ]/ K$ i$ `5 ?6 { Q
: T7 s' z6 {9 e1 z
dispA[19] = 0;
( O* b1 G6 k9 `! g9 c dispB[19] = 0;3 K S4 D8 [* e U
% Q" ^9 X# j, B. n% @" n6 ^! i, ]
yCLK = 1;
) O' r4 X3 J6 x5 w4 j2 ?6 r M* |; F+ d9 J5 n
; P1 m5 }7 |. s( j" s8 ~0 }# G
" z" Q5 I7 n7 ~ for (i = 0;i<20;i++); Q1 R7 }, ^& M# X
{
2 r) ^9 i' ^; g yCLK = 1;8 i2 {3 M/ v8 r* U" b1 }1 ?
yData = dispA;
/ a- t7 d# H2 C/ Y delay(2);
7 M0 D* [9 W5 t F8 Y; P" \ if(i>17)7 t- N: L) k$ H) k& z& b6 z! o; {
{yDLEN=0;}
7 k( @4 O* n. M, j else. I& p% g8 E9 ?+ U* z
{yDLEN=1;}
; Y- m9 R" y) o3 X" Y; z( Q/ b2 X( ]6 w" g2 G! T+ B
delay(dailyCount);
; k" R2 x5 P( ^3 n( I- C0 _ yCLK = 0 ;
$ U1 t; [- D: i" N7 ^3 M/ b delay(dailyCount);! D, j0 o6 d, {# o+ e
}
) J. H, g' Z& D9 [' a0 M- ?+ M/ T; ] r6 T. p
yCLK=0;2 H9 o: W# l" g
yData=0;
& N1 @7 ]& s- l! \/ c8 N9 M2 O- @ yDLEN=0;1 U" E: b1 g" F4 X
delay(dailyCount*10);2 x! V# @3 V( K/ b# ]$ i( C0 U
: V( z% D* R0 k. D* G# J1 o; I
' s, A* a: Q( e; K3 T, l& z
/ P8 K3 A+ W/ }: @- O
for (i = 0;i<20;i++)1 ]) o4 f9 J' N! X3 ?8 H
{
; \6 N$ q9 J& k" g! Z5 h8 D- L yCLK = 1;* Q$ |7 v: R$ p
yData = dispB;
+ q. [% W" D) P- C) ~2 H/ j delay(dailyCount/10);! M, Y( H4 c1 j% R9 R- V
if(i>17)
/ m8 c5 C/ w& F# L+ u {yDLEN=0;}8 L: L5 S8 h! N0 B$ [% x9 `4 ^
else
F" e) P( w% A7 @2 {, R4 X {yDLEN=1;}
7 d/ E, T3 m( ~# e. p" f$ l8 v
( {% r( P( t' Z: A i. C delay(dailyCount);6 h/ `0 E' B. O2 y9 }* {& }
yCLK = 0 ;
/ O b0 [: V: f# E$ } delay(dailyCount);8 S# A# V0 m6 _+ U" j( Y* [# D
}
! v! W. Z( Y4 z9 k* {
: j2 a) }: z0 E7 ]) `1 n yCLK=0;
( c3 M, ]/ u3 ?# Q; Y% }5 } yData=0;
l3 p$ o8 b* m" K3 y yDLEN=0;9 d3 S; A# N4 ^$ t. x
delay(dailyCount*10);9 ?* U; m* v5 n0 Z5 x
}/ y; `; N( A! ?+ t0 ^. Z
' R% a# `4 W' W$ m' ?6 u; M# U. S. s) ^5 x
* P, a, D4 L- v9 X& E* \( u7 w
( V) _0 Q5 p# m# }+ |+ k6 r
void main()1 r/ S' ^ Y# b9 g: O" p5 p
{ j0 M( O. l" x$ p. c
while(1)2 Q0 ]; f: f: L9 O
{# X, c. R! R2 z% Q8 R
delay(4000);( r2 C3 N f* Y" q( Z: s8 b
disp(0);
$ U5 s$ q y$ w9 b) W }
q3 v( O3 t7 o) Y, ^, G}
& Z, k0 g* W/ x( W0 T1 Y7 ~
; |5 o) m% N3 F: N0 k
) X p2 a# |3 V7 ?& o- k9 w |
|