搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。! F3 j; k/ k8 e7 n. s L
( n4 y1 H5 C! K( H* Q
# |6 f; l: _, ~
( G# T ?! E1 n' D7 A4 r% N- R! G& \$ D% n" v
. K9 v4 Q- z+ }4 ^0 c: @* ?7 ]* U: D/ U
demo 的代码在这里3 [$ a r1 O3 w9 E) }& t- I1 \
* g% p) ^" `, y4 A) r0 v
7 ^9 G2 \6 j r2 W& R' {3 s9 t+ e#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
2 j! z6 n- A! W
: O/ o* X f7 P: Usbit yData = P2^0;/ ^1 K6 S7 `6 [+ M6 j9 H1 g
sbit yDLEN = P2^2;
5 H, e) _: R4 j2 m2 Fsbit yCLK = P2^1;8 d9 F" Y" t" h. f
const int dailyCount = 200;
* f6 ]0 K* E- y& G
& B2 G) f$ r( ^% Z2 c0 Y
' y3 d5 l! ]$ R$ v2 V
: f9 F4 o' n6 S- i3 s( T7 `0 `5 b5 A! lvoid delay(unsigned int i)
) u4 {% m, ^8 C" h/ e8 O{
' m4 d$ I2 Q" v' ^; o/ A$ O/ _ while(i--);
: ~% q5 G1 W) U* H}
9 L1 @# B0 Z" f9 o x$ Q6 t5 W5 i6 |8 t# f, G9 A6 F8 Q. G+ A
/ s: h9 W1 f+ n& M6 t1 \
void disp(unsigned int num )) Z( G* e& V/ ~, _8 g9 R+ p
{
: y& ~* t* P* c5 e& [' a unsigned char i ;) e) W4 R1 b" z. f. X; t
/ Q( E5 }2 V, U( R k. Q
unsigned char dispA[20];: \! Y1 T/ ~+ a2 g
unsigned char dispB[20];
W4 h- e) V" d# F: x, [. S/ J2 c2 {9 l3 z- n7 W: S7 f. o7 w
unsigned char num1;
3 _, k& U6 M" x; Y unsigned char num2;
9 @; b' z1 O* ~/ J: Z2 l unsigned char num3;
* G7 E# r7 ]6 F' \6 o4 r. P! p# B unsigned char num4;! \& e; g( X' k3 b2 Q
unsigned char segR[10] ; //右8 f& J% q* W$ g* Q
unsigned char segL[10]; //左
7 Q7 l0 y# c$ {1 g6 F* Z/ A0 `7 @7 W2 n. ?
//左 * C6 [) x* q s0 z
segL[0] = 0x12;
& p% c0 Z' Y$ W segL[1] = 0xFA;
* N) F# E, J) n$ x segL[2] = 0x0E;0 i. Y! v; c9 E7 b
segL[3] = 0x2A; N3 e! y' `7 D% P
segL[4] = 0xE2;
. d4 C2 g d& C- k segL[5] = 0x63;% _( B) u$ Q5 q$ K: i+ q# D
segL[6] = 0x2A;0 C1 x( P, _3 S1 t1 d( F8 B; Q
segL[7] = 0x7A;
, e! Y0 O' r D" {, l( j! J segL[8] = 0x02; k* ?, W# X( Q) u4 B
segL[9] = 0x22;1 j+ B& h1 s) V4 z; g) T
, x) v/ P) n" s% H/ `- J6 U6 S
7 f! T" r, G4 y* ~, L) H
' z6 ~$ |" i" I- {1 ]: _ //右5 ]6 I- W' e7 L0 R
segR[0] = 0x88;& B. K5 s; O/ b- `' b
segR[1] = 0xEB;1 t! p7 Q# X0 A: S8 D9 y
segR[2] = 0x85;. M7 |1 J5 P2 N
segR[3] = 0x83;2 L1 j7 W6 z ~6 ^; a* o4 I2 B
segR[4] = 0xE2;& a# J5 D {( g, U, V0 V9 U; m
segR[5] = 0x92;
/ m; Z7 Z. s0 p- H0 ], u% F segR[6] = 0x90;
1 G; m5 W" J( j5 h/ [+ Q& ~6 h9 c; w segR[7] = 0xCB;- T: s3 x! P( R6 W; O8 H2 F! M
segR[8] = 0x80;* N+ v: @# D& b E# _) d3 ]* I
segR[9] = 0x82;4 f- Y L1 r% m8 V! p+ K+ H
2 H, f! U1 w5 K2 \3 O
9 {) E5 t5 @$ M# ?2 s/ Z2 \3 | num1=num /1000;; Q* ~1 r2 W# H1 V1 C
num2=(num /100)%10;;* d. H' F: ~$ r9 C/ \- _3 h3 I
num3=(num /10)%100;;;
2 i3 h% C/ `6 q num4=num%10;
0 ]* N! j2 D) `3 G" x% x( U
5 s- Z# h, Q: c9 i- y8 |' g. X1 a
# m+ _5 m) M- W% `
0 C6 `: r2 }% `2 K/ z, U2 m+ h# h( K: E' ^$ a
dispA[0] = 0;& w- O! t+ [. T& ?
dispB[0] = 0;
3 C6 `, z* `; y
0 ?. q: @, s$ @, s: P2 r: f7 P
F& }: A! N% ]( w for (i=0;i<8;i++) J# T7 }: B% j7 j( J8 `# x1 s+ |
{
6 v% ~& D; @) y7 q) A/ w( @ dispA[i+1] = (segR[num2]>>i)&0x01;
7 C* T0 }& P% L+ Y& @ dispB[i+1] = (segR[num1]>>i)&0x01; 6 o/ j* Z" Q% H
' h& N% c9 \ D1 `, X+ k
dispA[i+9] = (segL[num4]>>i)&0x01;3 B- o. [& r5 }$ W' _! `9 H- J
dispB[i+9] = (segL[num3]>>i)&0x01;
" S- a4 ~0 w$ W' g* V; B }
) D6 _2 G2 T' Z# ]( g
: x. Q |( B! |: c( ^8 d ~) S1 K: r4 [. K7 c Z% n! E# D# W2 J
) t5 p) Y# Y7 Q4 Y. D; ^0 j: a$ v' l
dispA[17] = 1;: H% W% `5 J' `0 D1 I7 f& {
dispB[17] = 0;
5 g# @' C8 T4 G7 ]5 i
7 O$ }) R/ U) A; b3 r' R/ z. Y dispA[18] = 0;
9 a5 j: F2 [6 i8 v. a' u: B5 ]% G dispB[18] = 0;
0 u9 ~" g b+ Q$ s$ J& a
6 z3 g! ^/ S) L( a0 c dispA[19] = 0;8 f6 Y! l3 U% w) d4 x
dispB[19] = 0;8 H3 y6 u$ U: H5 f# q4 ^* Y
V( i- V7 J- Y5 M& p
yCLK = 1;
4 d7 ?6 n( a- h/ {) W5 J7 b+ x6 A& d
0 K+ N- `: Z( C2 P- w
! z6 j$ f6 e: }2 f" m for (i = 0;i<20;i++)% K) j1 m% K, C: c5 I3 g# }7 {
{# j! H8 s. w3 F/ T* w
yCLK = 1;+ Z0 [/ o Q+ P$ N: r: d1 X
yData = dispA; a. l& Z6 h4 P* r
delay(2);& x) d- [- `, J# t0 w2 e1 ^
if(i>17)/ s2 J" {* |8 \0 [9 Y N
{yDLEN=0;}
! ]- C+ ]; c6 a5 v else- w" {) f4 q9 w0 Q: r
{yDLEN=1;}
* D8 E9 w8 I1 v/ T% M( S7 K1 {* l( ^: t9 G! ?9 Z
delay(dailyCount);
# L) O- [. ]( [* f, W yCLK = 0 ;6 {8 f( S7 k; s2 f/ D- `" @% z
delay(dailyCount);
+ \6 {6 N* N! d0 P; f( v t: U }; P ?) I0 ?) E) P- s
2 |2 G9 A6 i& s( C* t* Z
yCLK=0;
+ S y/ \4 U: `- ] yData=0;
U1 ^- _# Z3 O yDLEN=0;: }9 y% h9 V4 \) c
delay(dailyCount*10);
8 {4 F: ^* o0 x3 Z! o
; m8 L S5 h- R- k9 }- C4 `: C7 u
# j. V& r, O8 U: N+ D: ~, F) G8 t; a5 l! q! @
for (i = 0;i<20;i++)9 g# |* Q9 F' a
{) F' {. C# I1 C$ \; Q- ~: Z( Q
yCLK = 1;
6 u* X/ q3 p* c yData = dispB;
5 S. }8 J" a! w5 a; g3 o7 n8 f delay(dailyCount/10);1 a6 a7 [% p9 B0 q+ Z% m5 L
if(i>17)4 ]$ ]4 r$ a! ?. t& t" C
{yDLEN=0;}
* u5 Y, ?4 \4 S( ^# h else
2 e$ z S; V! k( U) {3 Y/ c$ t {yDLEN=1;}0 Z9 |" K' c' W) U
& n4 r! J/ j8 y* w# y# e/ `) K! f
delay(dailyCount);
0 N8 v- N' C& I- x8 N( x yCLK = 0 ;
- _# @% j1 ^4 c( ]4 j delay(dailyCount);% w7 e) c# _" a9 t" i
}
s) \9 E7 a* a& |# {
& E$ t& Q: r& U9 A0 V) J2 y yCLK=0;
9 R, J4 l3 C: g6 U yData=0;
5 j6 o/ v! Q0 \& n. P3 Z# ~ yDLEN=0;
3 o* i/ U0 M" `) L' q delay(dailyCount*10);
8 w. x' I `+ p5 C' _1 p/ S+ v! _' l}
, P, a \* Y0 H% s. K7 g) j4 h4 a B* y2 q9 _& n
& k) |. V. J( t' w
8 a, ]3 U) @( \8 n
6 Y; M6 E; R" c7 A: X: tvoid main()
9 u: ]& U4 l2 R0 o( I; [9 v- o6 B{
4 q) T# I" F2 d5 p8 S7 X" a1 { while(1)
9 a! y1 B9 v0 s1 P% e9 u& S {
" s, O) ? D f6 i# l' j delay(4000);
' L4 i+ ^: u4 L disp(0);
, T/ W; p. @1 s) b! h6 K! a+ v9 c% @ }
3 T( u9 h2 _, `" x}
/ W1 J9 s4 [- Q: ?. B* I/ H% B: k% ^
' B3 J7 F2 v, @ B4 S m) H
|