|
|

楼主 |
发表于 2018-10-21 20:11:37
|
显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。% t2 `- l" I" o1 o# C% a
( u& C3 |: h! |: h8 l+ W4 L
) R# H! x% s0 F6 u( R
( c$ ^' k6 @- D$ R% H- p
+ x& h* I9 ^2 U* Z; E/ B: { ^+ ^' i+ v3 K" n1 ]% @
3 \* W- O) @2 \; ~- c- E g+ Pdemo 的代码在这里
; O6 K* B% S! T! ]& w5 T9 i2 [. z) w# ~; r, n8 d- o- {: F
2 N8 V$ t- o; C1 k$ O3 {
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
K _8 u ^2 v" m
4 W5 c5 J& P. G% s4 }" Ssbit yData = P2^0;
6 \! W( B6 a$ s, _sbit yDLEN = P2^2;% u/ p: @: w, N, s7 m4 J
sbit yCLK = P2^1;
. F7 M) B9 _ v! rconst int dailyCount = 200;0 z$ s \; N" E. X
6 D S" h8 e. D7 m
: I. w2 ?: e. R H
8 p$ ]% w- t c. k# L& uvoid delay(unsigned int i)
$ W7 Y5 H ]8 h @. a1 M5 C. r; r+ f{
- e6 Y( t2 m$ v+ V- a; C9 ]6 p; I while(i--);
l5 c- f4 j7 r* z" ]}* m" [$ V8 l. B' Q
& J* Z- x5 P7 t* ^8 U
' [& c: U, D; x- B4 S; P
void disp(unsigned int num )4 @1 x& Q+ h/ t
{) |4 F. J0 r8 W8 ]
unsigned char i ;6 p9 j6 o, _3 b* a* ?6 h) c
s: G* u" r4 f8 [( B* Q unsigned char dispA[20];
; y) H1 l; G) j6 v% C' w unsigned char dispB[20];
3 C. W- D$ L% [$ `" f! K' |
9 d9 [0 @" u9 y2 P unsigned char num1;2 V8 t$ n9 g6 T% r9 W7 a# n) f8 F. A
unsigned char num2;
% y, k# K8 \+ u) E4 B8 l unsigned char num3;
& l9 }- Z- y# i7 A unsigned char num4;
@; u' b S" R- }8 [5 f% F unsigned char segR[10] ; //右$ q1 P0 x. c. K7 g
unsigned char segL[10]; //左
/ h- p3 w: k( O+ R
/ S0 _, K# k' w6 w* w //左 : A8 ~, p* l. O! ^0 Y* j
segL[0] = 0x12;
" k# L9 b4 [2 d( W- ?+ V segL[1] = 0xFA;
6 k2 L+ R+ I* _2 M0 Q segL[2] = 0x0E;
5 S- Y. |' _* [* k* ?, ?2 a segL[3] = 0x2A;
7 X. b l; H$ O5 b/ _/ v0 o- b6 ` segL[4] = 0xE2;# m7 b: b& R0 Q1 {$ b
segL[5] = 0x63;2 T# h& V. B2 a5 ?% v$ i
segL[6] = 0x2A;
/ d0 A7 c- f' N/ g2 r5 c4 N: f% n segL[7] = 0x7A;5 j0 t. w) |" E% |7 B
segL[8] = 0x02;0 L2 _6 j$ {) t, Y
segL[9] = 0x22;
7 k( l [) U: U: D, { 0 M1 Y6 ?% j- j" Z& |
7 @6 g2 u" W; z7 W
2 g, h* b: n9 G4 A; Y5 f- @. c9 S
//右8 `& `; X; E, P# L. a
segR[0] = 0x88;
' K( Q* {4 N' e% Z segR[1] = 0xEB;4 {5 E; F6 q6 l6 f, N* y/ e$ \
segR[2] = 0x85;
$ ^" R! ~' m# G7 K segR[3] = 0x83;
# B3 {# b4 W. t" W5 e. E segR[4] = 0xE2;
2 |; @0 r3 R! i% I% Z: g. L segR[5] = 0x92;
6 d6 f# w' G1 p' \( E, B+ p, H segR[6] = 0x90;
5 [. r" ?; |4 Q$ X3 [ X, M( ] segR[7] = 0xCB;6 G5 h: ~$ {8 B6 f0 F+ S
segR[8] = 0x80;
0 o, X' \* F0 m/ M segR[9] = 0x82;
) f, z9 S& B+ q
) E; D0 t7 O. B8 O9 D , L( _0 W0 w; H, Y2 S1 }
num1=num /1000;
5 v5 b/ H3 @( O8 j, s num2=(num /100)%10;;- @2 G" S4 R( W& [6 B$ y
num3=(num /10)%100;;;
- w1 ?( a4 x* V6 w num4=num%10;9 |8 d& e5 ~) h/ Q) x. Y1 e9 c
; A) Y& V7 | ?2 \: R2 ]9 }% `+ A& ~
; a0 x, s4 @8 J/ j9 Z' ]4 a, z, E3 t# @& m* B9 s& h- E. x- ]2 u
1 i3 S9 `3 z2 i6 V. x dispA[0] = 0;
d) s6 U" _9 h+ Y0 M R dispB[0] = 0;
% Y- T" B. S0 T/ B: z6 |0 M) b: M) |- f& R
+ T) e6 \6 e2 E B5 q
for (i=0;i<8;i++)5 G7 x% q* ^9 e
{3 M3 {6 N' N# F
dispA[i+1] = (segR[num2]>>i)&0x01;
4 S# X, u1 @9 s dispB[i+1] = (segR[num1]>>i)&0x01;
2 Q( l( K2 w, m
e$ o4 |1 O1 `# a% z! N dispA[i+9] = (segL[num4]>>i)&0x01;& }( m+ c# C% O# [
dispB[i+9] = (segL[num3]>>i)&0x01;9 q {6 O# K" [+ [. ]
}
9 m& F5 T* w$ A% A) U1 Q + ]: R" b$ w/ u" v
8 v- w3 K$ D, x2 P
1 v$ w `# C4 H! S* t0 B" q' g& i dispA[17] = 1;. c% M! X3 P& ]9 @ m2 D
dispB[17] = 0;& o1 i* F2 Y4 x7 t
8 M! w* v, U" O: E8 |& g% e" |" E! V dispA[18] = 0;
9 o/ t3 d) B' l dispB[18] = 0;8 S, ^ B2 |' C& W
+ M9 s( E$ t, A% `$ L8 A dispA[19] = 0;6 |8 Q& g6 q8 f J( H
dispB[19] = 0;0 }% M/ I3 F8 \, ?
3 ~7 O) X5 E1 h yCLK = 1;5 J9 c% Q' i. @
/ v8 r7 a0 k* Q. p! Q! o
' I4 a" j, e% o, t2 ?
8 `$ y' l+ s- V) T- L, _* z; T( t( O5 [ for (i = 0;i<20;i++)
! A8 G$ H( p8 f) c1 m( n$ L {; \7 W& W( x3 N7 H$ k
yCLK = 1;
+ m" Y! W" ~1 F/ C. l; f yData = dispA;
* |/ f$ Q* M" J. v8 d1 L& d$ \ delay(2);" h- ^. O9 B6 a$ X: \
if(i>17)( p% o, U0 n+ h2 t
{yDLEN=0;}
- y' L: R% J6 n" e" V! w$ d else0 ^( v% m2 `' L& v/ g
{yDLEN=1;}3 b6 A( h& R' O- X- K
) ]8 D* D b# s7 s1 `7 P0 F
delay(dailyCount);
- e# p3 @$ U# r# D7 {/ m) } yCLK = 0 ;
2 [2 O$ K. @, A. C4 @. d delay(dailyCount);/ r5 y: i9 v# A9 J1 S
}
, L# J: ]4 Q; a8 W+ M) o) L- k# D4 [: O& r7 v2 D6 l
yCLK=0;
* d1 \- F% R5 p0 L3 z! R yData=0;
; J0 E( a% h2 I" x8 r# b yDLEN=0;' g. O9 i2 d* }& M" I) @& q
delay(dailyCount*10);
! A$ [$ Y9 k7 I; }- T. p 8 p" v+ L8 _9 t7 b
" n* U: ]& E6 i# U E
$ T# i) a7 h2 r( u( a j for (i = 0;i<20;i++)0 ?7 L. V+ p; p5 E
{
9 t& n4 Y1 e e! I& C: ~ yCLK = 1;& M; h5 g0 K' w w+ S, |
yData = dispB;* ]' A# [9 _4 B# z( C' k
delay(dailyCount/10);! r1 n4 X* K( H8 M2 ]
if(i>17)
- D- i! c# j* H1 F# j {yDLEN=0;}
6 s4 B, _2 j: M) w# u else
# |# ~% y3 G3 _. A3 V7 r+ s/ @ {yDLEN=1;}4 ]( [- z# O: W+ g" H0 E/ g m' J
7 o6 K% Z: O, A( L
delay(dailyCount);
, L7 y' }! D- Y: H6 K X% | yCLK = 0 ;
0 f! d4 I; X9 W. b" r$ s5 y" U0 f delay(dailyCount);
) o7 U. i! z: S7 w T0 s7 T/ m }! U% L- D! @) z# b: @, `
+ z/ r; o1 n& n0 o1 {
yCLK=0;
& j* K/ l& c- g/ _ yData=0;
9 s: m/ s0 z- u% O/ J yDLEN=0;( k; ]# O, G* y
delay(dailyCount*10);
8 R0 w' Q2 ?! b7 _, a8 C V. _}+ }) P" U o& z) }# @5 Q
1 ?9 j1 ]- K7 i0 \1 K6 P7 V
$ q6 c9 F0 M/ D2 L1 m* B$ s6 ]
/ h5 p1 d6 D! [* v3 R1 M! _" y, x' H/ z7 q
void main()
3 a. v2 O4 m/ b, w& q2 z{
b7 Q- P7 t0 I8 E$ L. V: L while(1). I. }, R; p" f& M/ H! O
{3 C$ T' J" G! P
delay(4000);
2 u1 s8 ?' A7 G( Q9 } disp(0);
; O& B: a2 C9 o' T }
1 ~/ m' @" B. {/ o- T5 J}
5 W, u% a! W+ i; D7 |* g4 R/ }( M/ ~: R, g' ]8 D" i4 f. j
0 `) f: {9 E0 } |
|