|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
. k, R' \7 I! Q6 ~7 N6 W: H X3 |/ x: R! e" [
# X9 r2 Q4 E6 [( B2 h3 @( M
; M0 T% C$ ^8 w! w0 v
, t: Y& q, q' Y2 v: Q5 n
# w t# l" J7 A* G, K" ?
% Q2 y" u! [) P8 Cdemo 的代码在这里
- I8 B! D8 ]; T/ E/ a$ P. h2 D. C3 L
9 \$ I$ t: N7 y% R! ~1 m \
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器& n* o4 C7 _- N
+ H1 a1 d+ l7 r5 P# Isbit yData = P2^0;" i9 T' f1 M3 K0 @8 X
sbit yDLEN = P2^2;. K$ X3 f' @ F9 O" G
sbit yCLK = P2^1;+ {8 u, n/ f0 y' F
const int dailyCount = 200;
9 ] m4 F* b y8 [; _3 H: Q+ v$ _, n" X& ?# t2 H! O
+ N( n; v: K: Q0 P5 s
; Q" t& ~! X: s6 uvoid delay(unsigned int i)
' W) K P. P+ Q. G{
! d! }9 N, N& d( C0 P" }" n1 y- G while(i--); 2 s+ z6 ^7 M! v) ^6 Z. i
}5 p5 f" V" A3 w2 O; Z& s: p
5 K# C2 o# |) I- g4 W/ j
5 b! y9 o9 m% i* [/ O
void disp(unsigned int num )3 ~, i& o& c9 Y/ i
{
7 x: H8 i$ ~( z; I# [ unsigned char i ;# ~) L+ ]6 _ V+ k
2 d e( q& ]3 {0 o* @
unsigned char dispA[20];
% y/ w6 W3 T8 r0 |4 m" J F! w3 |- b unsigned char dispB[20];4 n/ @1 s) q% l! s
0 h* M9 G. k3 | unsigned char num1;
& K: M* x% e: l' K! u/ c5 m- n% E unsigned char num2;
: p$ L7 a8 K {9 K. @7 `6 A+ K unsigned char num3;+ w3 G5 ]; L+ y+ X+ v8 q
unsigned char num4;
; B- f% H& o' C. B; Z) e unsigned char segR[10] ; //右
" p( d5 L$ U( v' m% e8 ^. m unsigned char segL[10]; //左3 B Q7 _0 ?7 n2 ?. q
9 Q$ U) e- B1 I: s# C1 |3 n% y& z
//左 & j. Y) `0 L) J x
segL[0] = 0x12;+ Q/ _& a; @/ U( q# f( `
segL[1] = 0xFA;
. {" d5 a9 t6 D" Z/ \ segL[2] = 0x0E;9 o, ?, n \; q8 y8 U5 Q0 h
segL[3] = 0x2A;
M3 y B) |3 o1 S0 c0 b segL[4] = 0xE2;
( z2 k: H* I. {* S2 s segL[5] = 0x63;' l8 T3 ^ Y, S7 T0 H' _( V
segL[6] = 0x2A;
" O6 @# ^; Q2 Y0 l' @; r c segL[7] = 0x7A;0 x% H" N" ?! `1 t+ D5 F
segL[8] = 0x02;
. U2 p. t2 w4 e. E segL[9] = 0x22;% ]2 l1 @# n- S3 e9 I
4 |. N- ]! \$ ]; c
5 ?2 J/ P2 e# W- Z2 x; P & k; P, d2 q% e+ R- [' K. {) G: H% S
//右8 q' U: W% {+ z6 M0 B9 w$ U
segR[0] = 0x88;1 I. N: X. W3 m/ R M9 Z4 M
segR[1] = 0xEB;
, K+ x5 M' ~3 x3 c: @ ^" h segR[2] = 0x85;$ T+ Y" S p+ r3 z! ?$ a
segR[3] = 0x83;7 h, c9 X- _& M7 y5 o5 U
segR[4] = 0xE2;
4 |0 Q$ O v& p% d' y segR[5] = 0x92;1 ?: x$ [+ w$ W H
segR[6] = 0x90;+ G) ?8 y7 g( m7 c+ z
segR[7] = 0xCB;
6 P J4 V" G. V6 B* R: J E/ G segR[8] = 0x80;
- i! q4 n4 ~+ x segR[9] = 0x82;0 ^: g5 ~: Z9 l9 M B1 b& R
. ?/ ^9 Y5 \# r p, d W! h* h3 [
* K+ s# @& V0 o# r4 X num1=num /1000;2 e1 n0 u+ p2 K) p% G, J4 e# q) j
num2=(num /100)%10;;8 I5 m4 T8 b& G- }
num3=(num /10)%100;;;
' |" U# W6 C) Z* }6 Q num4=num%10;
x0 _, E( e! s/ Z0 V" h! _* ^% F2 ^: C
) y- R- h" S8 z
3 Z, Q, Y6 P, \' o x
; F& M' h" q& j dispA[0] = 0;* B: O% a. W3 X* G2 ?
dispB[0] = 0;
5 a* R A7 B4 ]' |, s+ Q h1 j. h$ u2 ]# ~. O
* N+ w# D1 Q. R( W( F for (i=0;i<8;i++)1 h3 m# k% ^" M" B7 w
{
5 E. S6 D% _9 C1 U' w dispA[i+1] = (segR[num2]>>i)&0x01;
3 _$ H5 v# [2 B0 Y% ?9 g0 D dispB[i+1] = (segR[num1]>>i)&0x01; ! G: a9 }8 ]8 ]
) O" |4 \/ R6 ~9 d$ l2 ~
dispA[i+9] = (segL[num4]>>i)&0x01;
" z3 e. U5 j& F5 F dispB[i+9] = (segL[num3]>>i)&0x01;
3 C v1 U5 N$ ~ N }5 ~6 R& q& @( a5 X6 r
/ i1 h# {4 h6 r# U; e0 [9 K
! j" `' ]7 A6 P; P
" D* p" z: Z0 f: ~ dispA[17] = 1;& r- y; h& m. r- C4 b) S3 O% D' H
dispB[17] = 0;
, U; u" v6 B7 @9 O4 z& |+ [2 a: \8 z/ S6 r; A! A0 \* x1 E
dispA[18] = 0;* [! o4 u# T+ c# n4 H" T
dispB[18] = 0;" n! A9 o: C% g) e+ z Q
1 m0 r: z/ x( N7 P( m) S dispA[19] = 0;
. V$ E, z$ r6 t$ w- d8 d: l, k& b dispB[19] = 0;9 u& ^$ A% O! w5 s% E$ _
1 Y4 A2 M4 H& w8 @, C yCLK = 1;* K) Y5 b/ Y: t" [" \3 j4 B' K$ Z
0 B! s! @! F& h/ [# [& z% g) U: h) P# T, k: @- s
! g9 @5 G6 x; g, B9 c/ B2 W0 G for (i = 0;i<20;i++)$ z/ @, [% s# K7 w
{ m7 O H F' }' \+ o( p6 e
yCLK = 1;/ E1 D+ P% a2 ]3 ]' m" N: o
yData = dispA;
0 n) j2 \( K) K2 X( N, h5 D- P/ @; l delay(2);- D: g$ h H$ @8 i M/ f; A
if(i>17)
7 B3 h9 R7 ]- K" N4 f9 {' G {yDLEN=0;} g3 A4 C1 ^3 r; X* l1 W& G& S
else% G! |8 Z- o! L8 N' j! b
{yDLEN=1;}
h2 s y- B# k6 z5 @6 {+ z* @/ N6 t& r
delay(dailyCount);; E* c* g5 T6 E% x* i! Y; Q' R7 A
yCLK = 0 ;, ?9 \5 _: Q- a$ n
delay(dailyCount);+ M6 k, j3 d7 T* Q$ d! W# e7 M' M' J$ W
}( S6 I) w/ Y" g- j8 I
; N3 G' {# ~- ?9 T5 n yCLK=0;6 x3 g5 h# i4 }( U$ ~5 c9 n& g
yData=0;
) a, ]" U; ?4 m/ E% q" e" N yDLEN=0;
. o( ^7 O" o9 Q! K* g! r# g( v delay(dailyCount*10);
6 D: y. ~: t( G' s/ U5 t: x 0 V4 T$ T0 c* p( H
! z. X# O2 E" {7 Y6 u- [8 o! t# u8 u* I% n, _ P" _0 @
for (i = 0;i<20;i++)6 R8 N- m- q b
{" p3 |5 p$ T7 M- M2 d$ j. j
yCLK = 1;
/ c, F4 P6 k [. U9 u$ U [ yData = dispB;
7 U/ Y3 w; p7 f7 g' C+ N& o delay(dailyCount/10);5 u1 [: Q' K0 B4 I
if(i>17)2 p" I2 Y' c+ C: o. }
{yDLEN=0;}6 i: _9 v! M) [0 A# M# X. z P
else7 Z6 |) |3 d4 v4 H2 c5 V) n
{yDLEN=1;}
( \2 ?: h* ]) A% n
) t2 M: ]5 x( E5 ]5 w d delay(dailyCount);+ D' g* ~0 S9 f% ~* @
yCLK = 0 ;6 q5 f+ v8 C7 _+ a- d. ?' a7 K
delay(dailyCount);
( n4 ?- {4 P J8 ? }
1 U2 C3 B4 j1 j# t7 Q
+ B) Z5 x4 o* z* G u% q# t' E yCLK=0;% s# S x3 Z' U; n$ l, f% [5 y
yData=0;
5 o- O' H. U7 l# H) F- s yDLEN=0;# f1 H& ~" ~5 [* E5 A' O
delay(dailyCount*10);" V( ]0 o2 a R- O" h, ?
}
1 ?- _5 N% B' E0 o: ]; G
( n2 A; ]3 R* ^ k
3 s( S2 t4 _( S* Q9 d% F+ ~$ V5 N: M2 F( V7 [: r. j
: ]! g$ [: ~5 c0 l; U5 o
void main(), S3 I4 B" @9 O z, Q8 V! X
{
; \; S4 Z: c$ p8 ?1 O while(1)" w1 `, I& B- @ J
{
4 m c# q7 ?' ]$ A delay(4000);
4 b. V/ h0 o5 C9 |& g disp(0);3 e' P, Y. X! V3 L J2 r A6 G1 d
}
+ H, g4 R8 S( I- K' E, V5 \}6 D6 d) N3 b0 |8 F. w7 x6 N
! f1 @! q4 U# R9 V
4 k/ L$ W$ O' D* r& b% D" {0 w
|
|