搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。' W' V- ^' }& a9 q
$ V: d+ K" {/ T$ w% w% d
1 {, I0 D; g- A- a
) ?& V2 E. U$ {# g$ e% h( C) d, ^& H8 g% i4 E
+ X2 D4 V/ k; x. a' S# m7 _, t5 m4 |1 ^0 W" j9 }9 c: r7 e
demo 的代码在这里" l' T, p$ B4 C; w4 X- t
# [) u* R0 W: V' w6 r' S" J. i6 g: ]+ Q! p6 m/ _' V a1 S2 y3 ?
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
" D7 Z% l* J& m) V$ e
9 [6 |8 J( U& [sbit yData = P2^0;
8 X Q9 d3 }5 k) q: isbit yDLEN = P2^2;
) u% U1 S; I+ A, R2 i& j/ C- s4 `sbit yCLK = P2^1;
4 ]3 M2 j4 |; d5 P7 y* Vconst int dailyCount = 200;
8 w( q" A. N# h& X0 {' U8 }7 R+ J$ {9 d7 j' Q0 b) A
8 S, @, Z! l2 \* d" Y! S% f# E3 A
2 v4 i! Q F) p9 [9 `; Gvoid delay(unsigned int i)
+ \: o8 t: D% D. d. o1 e{
6 Y5 W) D e! K- S! k* U" c ~ while(i--); 2 f. r8 H% l9 P% B \; W
}3 S9 X# ]8 e$ y& j3 G0 U! G
2 u/ a& L1 F2 v$ b
n! H N, f/ @7 Z( |5 Cvoid disp(unsigned int num ). c9 I3 B/ ~* k1 g
{
1 \; d" P) @2 I; h- L* e unsigned char i ;, U+ \2 P2 U. _" g: z+ S
7 P2 K" G+ w8 D1 f, t; X
unsigned char dispA[20];8 ~. c0 j. v+ k# e8 ~) d
unsigned char dispB[20];! z6 X" a0 M9 J/ j+ s
0 Y6 W: t" M# ~, k; _9 k# Q' ]2 P' @! ^ unsigned char num1;
! t4 r3 O/ {& y" g+ m- N$ h7 H8 X unsigned char num2;
: f; O$ Y8 W$ ?$ G unsigned char num3;
# h2 z2 U V/ P) t7 w1 s unsigned char num4;
$ C$ o/ P: E, | unsigned char segR[10] ; //右/ @* k, @0 V& B6 ~" D6 l! [" I2 B
unsigned char segL[10]; //左
5 H% V2 L& l6 K7 U: r) o4 q) z+ C# B+ d1 d6 q- A, o
//左 ; P/ m( v2 {5 ^& L" u0 N& e/ K
segL[0] = 0x12;
- b3 |9 b5 I$ c% E- c' h segL[1] = 0xFA;
6 }- [# T" E8 k3 `+ t: d \, | segL[2] = 0x0E;
# S% M* t2 z/ s! N% ] segL[3] = 0x2A;1 Q! O! F* q- T7 F4 E
segL[4] = 0xE2;6 H/ K" k4 K# S, M' [7 h1 c% Z
segL[5] = 0x63;0 V0 B( B) P* M1 ~1 w- J
segL[6] = 0x2A;
1 k8 @( O N1 z1 t6 A% M segL[7] = 0x7A;
: `- Q: x Y& y) J. n segL[8] = 0x02;* C" ~5 c) T# R: V7 g i
segL[9] = 0x22;
6 o" ]6 B1 W* P1 r( R" P ~+ e0 @! z$ K
9 w) g5 Y% ^& J' j
: Y4 @/ [' ]5 x- g7 O& ?: t
2 @" l5 Z7 u$ d, P q7 X1 @ //右+ D/ k2 H# I8 Q2 Z* Z z, a" Z
segR[0] = 0x88;" {! Z1 M% J: ?5 ?
segR[1] = 0xEB;; q) }/ q! C: A% e+ ?1 I
segR[2] = 0x85;# d2 N, g% y9 L3 N2 m" i
segR[3] = 0x83;
) h- D8 G* k) i" A, ]" e segR[4] = 0xE2;/ ^! r, G! z. N( Q$ ]4 X7 R& y
segR[5] = 0x92;3 @7 h' h# N* V
segR[6] = 0x90;
B* n- v J6 Y; [( Y: f7 o0 h" K9 h segR[7] = 0xCB;& a; T( f$ C6 r9 W3 G8 e L
segR[8] = 0x80;
$ h! r, L; i, v' d/ s$ { v) t. n( G7 E segR[9] = 0x82;. }# y! {4 R) b: ]7 ^( Q
2 [$ i l. s. W9 W. D $ g' ]5 i7 z$ g, J
num1=num /1000;
7 T* b, q* k, f. y num2=(num /100)%10;;( {# z! G4 E) n+ x1 w
num3=(num /10)%100;;;# `! u4 s; b7 Q L4 ~2 \* P- b
num4=num%10;
8 P+ h \' j1 h( O; @/ O5 f# E0 M, P; r# F# t: ?# q `3 S
) S& k. y7 J2 O- ^7 I4 [
# Q- l* v9 ~4 e7 H! p
- m% L% ^7 F4 e
dispA[0] = 0;
2 v) m' k" z/ p6 A+ \8 k dispB[0] = 0;! A- m x T4 ?
! y# \6 P* R/ B/ j
) U: a- W9 L4 k4 K& P0 ~5 d' O p, i [ for (i=0;i<8;i++)
L1 s, m" q/ v: d, A4 I {$ s8 A9 [" w* Q7 i
dispA[i+1] = (segR[num2]>>i)&0x01;1 I9 _4 H! a( o6 g* A# |$ `
dispB[i+1] = (segR[num1]>>i)&0x01; % Z2 J5 D/ S2 S) V$ w) r, b3 \
) a( D9 j4 n+ Y9 a dispA[i+9] = (segL[num4]>>i)&0x01;
6 v n+ F3 ~% B7 s. r2 K" O \5 ] dispB[i+9] = (segL[num3]>>i)&0x01;
^& s7 h. L; d% L }
2 u# b9 l0 ]6 _3 U: h6 Z0 f& ]" C 2 q0 n+ A& ]7 d6 E$ h; _5 R2 N2 t% ~
/ Q& z/ u7 X) O- A- @, D: I; ?& ~
dispA[17] = 1;
8 s8 m1 J% D; ~6 q dispB[17] = 0;6 Q: `, r% F% _
# Q# M' e6 X3 \+ ` dispA[18] = 0;
4 F2 ^' f( u4 L dispB[18] = 0;& K4 ?$ G: X1 r2 E5 U* h* O9 Z1 H& V
% Z5 w _- X+ J
dispA[19] = 0;0 L5 b4 w1 R* n. E1 {
dispB[19] = 0;
% H/ o/ X! t2 C" w% m! Q$ L$ G2 Y* G/ w! R6 _& C6 O. r
yCLK = 1;% k2 E7 `/ ?" S$ c! L
& c# Z+ s( F9 q5 [0 y9 r- {8 X
+ h. v. g8 N+ \: b! k1 [3 Z/ j. [1 v
for (i = 0;i<20;i++)5 W% f1 Q( L4 c1 e& ?, [+ f1 r
{1 P, |0 M R; t
yCLK = 1;
+ K) b9 Z. G6 x! m yData = dispA;+ \& `+ S+ U* k5 T) J- c I% {8 s
delay(2);. X3 ^$ ]) X0 F+ O
if(i>17)7 b5 p4 i4 J7 L% i6 O5 a M# h2 I
{yDLEN=0;}
9 z# d9 V2 C0 Y- l# {4 Y else% l, j7 ^9 P7 K
{yDLEN=1;}% [4 q' O: P3 e) V; e/ _
2 j% Y- E% Y; G' X! \; D, g% J! ?1 n
delay(dailyCount);
( b9 l* j5 d% O+ t yCLK = 0 ; E3 @3 ]8 x9 ]# S- N8 ^0 ]! k
delay(dailyCount);
, l7 m5 g8 y* d) S, z( } }6 Q! L+ d, y2 `9 y- j" u
* N. y a- P# X- n yCLK=0;# J$ b: b2 {" I+ C. t" e
yData=0;
: {; J" H3 W$ j2 D5 x9 b* n yDLEN=0;- m: U+ o q8 Y- w
delay(dailyCount*10);+ |$ B0 |. H6 ^/ Q! u+ O7 P+ z1 t# E$ F
: B! Y' Y" ?, C/ X5 k0 D, `" v. C/ ^, D9 l |6 }$ ^$ I
+ u' P# B: m6 c- S, v0 I for (i = 0;i<20;i++)
* U# `5 z- i" C# u7 L6 G2 b U {$ {% E! n; u/ H, K- g( T% q
yCLK = 1;
3 k0 f' W! k8 o/ f7 i yData = dispB;
! I- @+ |% N: C5 M" U delay(dailyCount/10);! J. D1 E* b# z3 i, Q0 W t) ]" q
if(i>17)
: W$ j- @. T K, N, a% j+ Q# z {yDLEN=0;}
B3 ]# b' z' J# C' h# e else* i) D) F$ l! f0 @: A1 }! H" b) U6 c
{yDLEN=1;}* y% }4 H% u( {' [
* {% t9 t# t, B' ~2 Y8 w- m delay(dailyCount);/ |& K) o$ u4 K) d& Z/ _
yCLK = 0 ;4 T. [6 `& z8 s/ g: w0 P
delay(dailyCount);3 r4 W7 ~; B I5 {2 Z6 r
}, ]' n3 Z( O' N% e2 N' |9 P
: |. v `/ ^3 v9 ] f
yCLK=0;7 u- Y' m) S5 F+ W. k5 A
yData=0;' b7 F+ F. s/ G/ G$ W. Q1 u: j
yDLEN=0;
0 V: R$ k( E/ H1 T4 K delay(dailyCount*10);4 v/ C2 @* ~* L* _4 Z
}
/ k. D' @& q: H& B Z
; B# y4 P, \, s9 Z. w0 G n) U
, @( J$ d' y3 \+ v+ l+ v" s. e6 W# ~
& _3 R7 ]( b# x6 n, i
void main()
3 q" _7 `& y3 l2 Y& a{' K, O* h: E# \- X
while(1)
9 e( P; r7 P% t5 Z7 R4 b1 z: p) e {& y( |/ f. l. \- `2 x$ {
delay(4000);6 F5 i6 o! R% a9 U( Q |
disp(0);! L. \6 L7 W/ l! |6 f" w
} 2 B9 Y2 S. \+ ^& l) C, E
}
5 Q. A) d) n3 c7 ~' Q
2 `# J1 b1 @2 V- A' P$ A4 `0 k7 J1 P# ^; o# ^3 y
|