搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
3 p% n x, U9 \4 }* `3 f
8 e# X' G) Y9 E4 _ p; S/ x
0 U+ M2 l" E6 m& O; {
8 g L' C S1 R5 t$ q: R7 w; @, N0 N2 W1 b* t
$ a: i! u* j1 V) r/ ~5 W% P1 H: `: X. v
demo 的代码在这里
/ ~& I7 Z/ L F( `; k; s, N6 a7 u. U. T
( h$ w; ~7 H) W* u9 n! e2 U#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
9 {# [! f, E9 B g* q- \: @' L8 ]3 y: H% Y
sbit yData = P2^0;
: D* \* i! X: `' Q3 r+ m- n% Gsbit yDLEN = P2^2;
) N/ X/ f3 x/ \0 `3 U+ m4 u2 Qsbit yCLK = P2^1;
" i+ G" y% }5 r& F6 e+ oconst int dailyCount = 200;; h$ g% ^# S! V
. V) ]4 ~0 s0 Y. \* R/ d
; a1 l3 M) c( T2 d1 b
6 c2 J( I6 D* r( `void delay(unsigned int i)9 B6 i4 ^0 _4 H' ^3 Y
{4 M2 A* ~" a8 j: x
while(i--);
7 r" J; ~! O3 K- ^4 L; O}
# S4 ~, d1 P' `& V5 h9 M
8 q: x! d9 A4 S% V# t" I: C& K" D$ B# W4 ?
void disp(unsigned int num ). L' D/ q; Y" `, F1 W
{& R2 {1 i6 ^% I8 Q4 ]# S
unsigned char i ;, `2 h' o, [+ R9 y. B1 h3 [
8 d% ~. o0 f& Q! {7 v
unsigned char dispA[20];# ^% a5 G$ d _
unsigned char dispB[20];
+ Z# W5 D" O. J/ a; p$ E5 j& \# |1 C
# M& o) K; L7 C# L( d! u unsigned char num1;
! E$ F1 f! j# i4 ^" |( ~. K unsigned char num2; ( ]3 I7 X/ n t/ _+ T" v
unsigned char num3;1 O, f4 s/ e$ \
unsigned char num4;
' o0 z0 Q( i `( m$ r6 `5 Z- Y unsigned char segR[10] ; //右
% L( [, F. y" Q: @ unsigned char segL[10]; //左
# k; h" K" z2 ?' R6 ?7 w* e5 {0 V0 Q$ Q! ~
//左
8 F/ f2 ]9 Y; d8 q segL[0] = 0x12;
& W$ f# |! P& _% {$ D4 b segL[1] = 0xFA;
9 E, O, e. z1 S, r# b2 L5 ^; [ segL[2] = 0x0E;
8 U5 O9 g. U4 a3 M5 S segL[3] = 0x2A;# M. P1 F1 N/ h% l# Z. w
segL[4] = 0xE2;
: U# R: \! t! @$ f0 S segL[5] = 0x63;
8 j' ]$ P6 p& U6 L. ?3 W segL[6] = 0x2A;
3 z0 @! u( T3 w6 j segL[7] = 0x7A;
# _7 ^. J' z7 E segL[8] = 0x02;* M8 N% M0 w1 p3 u( |) D
segL[9] = 0x22;' E6 X1 p- U/ M/ w
# }- C+ ~9 k8 A* y; R! y$ j & K$ X: q [$ I6 b- H% h! Z9 v ]
o1 e+ J9 p, t* t* K8 T& Y$ ^- V: ? //右
% Y3 T4 {) u# i0 a7 `- Q( x segR[0] = 0x88;. h- ?0 N+ T- H U' F* r9 q7 l
segR[1] = 0xEB;! j# B' [$ ` r0 U0 x/ I% q
segR[2] = 0x85;4 p& e K3 z: B4 B7 z* @5 H3 }
segR[3] = 0x83;5 g& {+ a4 I. Z! S7 Y4 p
segR[4] = 0xE2;
2 D/ T$ {5 {1 H8 D segR[5] = 0x92;$ P2 @" z/ t% l- h9 h, z. Q R7 o
segR[6] = 0x90;5 X E" O p) C
segR[7] = 0xCB;
+ j8 a- t# x. }3 h segR[8] = 0x80;
' t9 P6 \% i1 Y segR[9] = 0x82;4 @) F7 u+ Y% O! l* f4 M* w6 q" h
8 H% [" {0 l* c4 s U; B
5 |2 O5 U+ K8 q% ~9 L
num1=num /1000;
3 s% u. b+ n& u, j) w num2=(num /100)%10;;
: h# U8 u! s( W# e- W* x$ [ num3=(num /10)%100;;;
$ P* C3 u: y) a9 a7 w0 z num4=num%10;
1 P9 n- `' l5 E4 v& D9 M: r! s% C: l; v6 e
: q5 P" l' B0 l
8 f# h, t [( H; E% W
# u* x7 v. L+ x3 `$ a
dispA[0] = 0;
( t* e0 g. [7 h- v dispB[0] = 0;
0 w }: z; g, ]9 P( \9 `$ A( X
- ^) _% N; m3 Z. q% c; w7 c2 z8 o/ [1 N( |
for (i=0;i<8;i++)
$ w% `6 G3 G, d9 ` {
. [$ r. |) o* {6 q: b dispA[i+1] = (segR[num2]>>i)&0x01;
' `* P' Y0 F1 c$ g5 `' L, g/ o- | dispB[i+1] = (segR[num1]>>i)&0x01; 9 M3 g5 C7 x9 i7 E6 v2 c
; j- P/ M r8 j; m' Z/ @& D
dispA[i+9] = (segL[num4]>>i)&0x01;6 e& z- [. r2 M* J* Y
dispB[i+9] = (segL[num3]>>i)&0x01;
+ `: l3 D( G. \. e }1 @; R6 M& C' s0 Z, v2 L# u
- n: _% j0 F4 E3 N9 L( t# `. ~* r t# O0 N
( ?( r$ b4 S- v, ]) z6 _) m5 G3 m3 r3 k* r
dispA[17] = 1;5 U8 ?6 w: j$ [1 N
dispB[17] = 0;$ I' N, B- P" @; u! {
5 k0 m6 G0 e& p! J q
dispA[18] = 0;* `; j: V5 [9 l3 ^3 |& T
dispB[18] = 0;
5 }4 _ N6 Y( K% y: @, s' b9 ^- l4 U! ?; x+ m
dispA[19] = 0;
& k. L5 l: J( t B0 j$ F$ m5 j4 J dispB[19] = 0;, q: D W' k, o2 Z
4 g% X) C8 V P" I7 i3 c yCLK = 1;$ D& v* V& m2 y
+ i( _4 d0 Z4 U0 j2 B' t
9 _( O* B+ P! t/ L, {
7 i9 i/ {& P9 y9 x for (i = 0;i<20;i++)& x! L" O* k( r0 b
{" I7 V- s; f" K0 N N$ g" K
yCLK = 1;
4 \& s$ v3 `! Q1 o0 U2 x7 { yData = dispA;* u" {$ I O: s
delay(2);
$ b$ V: o* S+ @ if(i>17)
4 _* e5 s8 ^+ L2 ^. _: a {yDLEN=0;}
0 s7 \, Z+ E3 P else
3 W- W1 T5 x; I- c5 a {yDLEN=1;}$ ? ]8 f; L/ A' C- C8 @/ w
- D% h( s+ \3 p8 }# Q5 } delay(dailyCount);& G3 |% b& O+ ?* J) S- d3 C) h
yCLK = 0 ;4 f% `, v5 b' d# Z5 p: X( z
delay(dailyCount);/ l9 |6 F1 |' n3 q
}+ j0 Y6 q$ p6 ?: o
, U1 H8 [0 g8 R6 i
yCLK=0;
1 x4 u( n; \* O yData=0;- X7 Y3 i: g6 T# B# Z- y
yDLEN=0;& B, F9 O3 u) F0 C& E9 s
delay(dailyCount*10);
, M% f5 J- l4 T& f! I; p/ Q % X, m8 R- o* I3 s6 K9 A. c
# A8 q" ?5 w6 Y- ]: G0 s& S5 }" L' [' S6 u) a1 |9 }7 o( M
for (i = 0;i<20;i++)
9 N# S& f6 \+ S5 q! Z ~$ @ {5 U1 r1 D5 ?6 J
yCLK = 1;9 s: N2 p0 d; I
yData = dispB;5 c. V+ R# Q1 T+ y$ z
delay(dailyCount/10);
' |) B" r9 i5 J5 t" G9 e& } if(i>17); k# x) x# M+ ]9 M' P
{yDLEN=0;}+ h' D' ^0 Y9 Y: J# J
else
0 Z# e6 t4 S1 Z# V" U2 C( Y {yDLEN=1;}, f* i' B7 z, B
/ j7 f0 h A+ b, l3 ]; l8 ?1 N
delay(dailyCount);1 R1 h4 i) A" i7 `2 S1 F& n" c. R
yCLK = 0 ;+ t" C3 |& [# y& M
delay(dailyCount);/ j% }1 T1 e0 X& z1 @$ I0 ]1 _5 ^
}% a% [4 v. _( R6 X# k& r
4 ~4 L0 w8 a# K
yCLK=0;; q0 k: x1 L9 j, \4 v7 y
yData=0;/ a8 j9 \' p1 T
yDLEN=0;8 p/ o6 C. m! V( |! f. X; y% Q/ f
delay(dailyCount*10);
8 H @- T( y) H" W, y" Q% B}
3 t% Y% H' P' ~2 Q' }* i- _8 P( ?( B: q8 M8 E1 r. [+ o
) D1 J0 h) o n g, D5 R% u: x/ u
3 W! e! x5 \$ {+ j+ u0 z$ z( M9 \& O5 E/ c0 p* b9 H- a7 F
void main()
4 |/ V& a; \$ Y+ Q3 E3 ]6 e{, K. A4 \; {/ I: U, R' Y$ ]0 }
while(1)5 A6 p4 q) a/ |! W
{
- j7 M$ ^, A+ s3 }7 d6 \6 x delay(4000);
3 }9 W% U9 P' V, G! U3 V* J disp(0);" U8 C8 K; g8 E! R! L2 U5 _. N+ R
} / I* ], s' m' B- o; E
}! J( B! k/ Q: Z n8 h( d' {
! o8 H! k6 F8 z6 ^; C7 e: }
$ |6 `1 t' I6 h0 a |