搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。/ Y% J8 _9 B2 L& I2 I7 p
, a' r, j0 Z, s |
9 v% D: X" m6 f8 Y( ]
7 g& L/ }. t' M7 [0 d
+ o/ C( \6 F2 u* b ~
X: \* g) C' H7 N' F
4 i9 @0 ]4 Q$ F! c: r9 r
demo 的代码在这里4 l7 ]2 s8 x" F
. y! M0 v: H4 }+ \4 k. i. @
" ?% n1 m i) h- h/ H0 z7 p% O#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
: t! r K8 M2 E0 A" c4 ]' y- c$ x! Z3 M/ M. s
sbit yData = P2^0;
+ s, n" \1 g2 Vsbit yDLEN = P2^2;
3 T& }. m( [$ usbit yCLK = P2^1;+ m4 x3 y& |8 N0 z1 j
const int dailyCount = 200;4 x- l! W+ m @
0 _4 D3 @- l* W& h" D5 a
: x5 r/ L% Y5 D" ^& t
+ J6 N+ E' |) y C( `+ f
void delay(unsigned int i)
5 Q% \+ ~- _* u{' [* b' f1 b( d. q. C' X9 x
while(i--);
! w' j2 n9 {5 P/ Z4 T}' a5 U; S: ]6 v& o7 u! L
9 o4 E2 ?! I' S3 O' @( f7 K
& h6 h& K2 U2 e. a
void disp(unsigned int num )( M6 t1 k6 U' e0 e2 t. B
{5 C+ D3 Z3 p9 f$ s$ d- z
unsigned char i ;
4 k( m& v1 Q8 E; y8 m t; I( a& g$ @- Q9 ^' A
unsigned char dispA[20];5 w+ {1 T7 i' k: A# m% Q
unsigned char dispB[20];- Q4 y- o5 |3 p6 d
' w7 I0 D" B7 h1 d7 i& D; ^/ ^
unsigned char num1;
3 `5 [* O2 g f* _2 b0 l7 G9 ? unsigned char num2;
6 z( [) s/ a3 n+ g unsigned char num3;3 e7 v; |/ S5 I" Q, g B8 [
unsigned char num4;& @ f2 A# V) @! q' K
unsigned char segR[10] ; //右) N. W' X) r3 ~" N! C, W& E9 Y
unsigned char segL[10]; //左6 t: }2 m+ F4 \0 z2 b/ }7 I" t
* X5 J5 c2 ] H" t0 T' w+ s
//左 1 O/ ]6 I& \5 n3 ]
segL[0] = 0x12;' j; f3 u- D/ s) q8 c
segL[1] = 0xFA;
5 `8 o9 m1 p1 C: J# z segL[2] = 0x0E;" t" E5 g: z1 m3 K4 I
segL[3] = 0x2A;( o5 a/ a9 y4 {6 i
segL[4] = 0xE2;: U! d! R5 T2 e3 H k ]) j
segL[5] = 0x63;
# t& v$ Z, P( ~- b segL[6] = 0x2A;
/ _ e' n/ P; X8 z segL[7] = 0x7A;( v6 \1 I0 ^' q& m
segL[8] = 0x02;
; K: b- C# ]& b3 _ segL[9] = 0x22;7 C7 S. o* o, p2 ~; p5 ]
: L. w* ?) p7 v+ U ' x' S8 k& m5 T, b* v [0 w
$ L- z* W" `9 E" o0 f( c8 f* j6 M
//右
+ z6 }* U5 i* l1 A: t, K segR[0] = 0x88;
1 q. c: Y" F ~ segR[1] = 0xEB;
( D) P, O3 g- u segR[2] = 0x85;: e& {( K) J( U& h0 F1 n* }
segR[3] = 0x83;& D+ G3 D" f% X% A! p g
segR[4] = 0xE2;
! ], L0 L r- c: l; d8 e. m2 i" ? segR[5] = 0x92;' |) Y, g7 X: T: D* h: n! i3 A
segR[6] = 0x90;
6 b9 ]* |' V1 h segR[7] = 0xCB;# O: z$ O O6 V ^2 B
segR[8] = 0x80;
0 q! t- _: P% f( g# |( o segR[9] = 0x82; M5 Q6 ^, u I& ?% t- V
, c+ F0 l# a- k
5 p+ O9 b; Y8 {2 c/ P/ I9 s num1=num /1000;
8 w0 T) f4 w4 @# n num2=(num /100)%10;;
3 K5 U; B4 I% s num3=(num /10)%100;;;
7 q' w. S& V& t" Y9 o# I6 L# b num4=num%10;
" @7 Z* }6 `7 F4 K5 Y* r- R% c$ }5 C( a) D2 D5 g
: b2 l" u% T6 {6 m! ]. X. E
' z+ F; F# H6 R* q6 L
: T2 _# I" T; Q5 K1 ~7 w' T8 O- L! Z dispA[0] = 0;$ h/ X5 L/ z# D$ y3 C/ j
dispB[0] = 0;; K' |0 i, Z$ y L; [
, k1 h" Q# I1 i: I" ^
% Z, t& i) P- j U8 G5 G/ H
for (i=0;i<8;i++)5 S8 F" G: y. m! r7 W2 I/ U/ H% @0 L
{% D+ c4 ?5 K+ J7 V8 ^8 D! Y* o- _
dispA[i+1] = (segR[num2]>>i)&0x01;
3 Z: u5 H' [) ~. f dispB[i+1] = (segR[num1]>>i)&0x01;
9 M( [/ ~3 X, p! k( i. E/ { [; C( [/ k1 P$ a! h' h
dispA[i+9] = (segL[num4]>>i)&0x01;
2 E2 }* M3 U: i( I2 E- A dispB[i+9] = (segL[num3]>>i)&0x01;
; \ p3 E8 f0 y! V# Z- r: O1 w, S }: C, t7 U5 x( ?6 F7 Z, E6 J
, R1 e2 d% [4 V$ n8 d. ^( S* }0 B) L+ n3 \+ s! S
5 Z+ ^+ }9 l( q
dispA[17] = 1;# a# o% l6 S/ V- |
dispB[17] = 0;
+ H: z! s6 X5 k# F3 I. Q4 O4 n6 ] }
1 T; D2 Y- d: w" a6 P dispA[18] = 0;6 v( {. w# K+ n+ g
dispB[18] = 0;
- s Y$ F: y. Z) P. m+ J! W
0 `2 B8 v9 }; v dispA[19] = 0;2 T2 Y! X4 @" V1 A
dispB[19] = 0;' o8 p- |: I1 V
) ?) }& W$ C" e3 \
yCLK = 1;
0 o3 h# n6 ^$ a1 @; S V g9 x$ M8 A) O. T9 ?- O$ V/ p [; I
3 }" | E3 B/ f- g
}2 G. o+ g. a5 W" I% I for (i = 0;i<20;i++). E4 e1 T6 j4 ^3 |9 C
{( ^) Y1 o1 O1 G0 J( z. Y1 P& [$ \! q
yCLK = 1;2 i( U% q: z9 V% e) l: g: p
yData = dispA;
1 r9 l! Z/ m6 u7 F) m delay(2); [6 R! k, k! }* A
if(i>17); O9 E4 T0 l0 O# m
{yDLEN=0;}
& A: K. H1 Y5 s5 M/ s, l else* q1 V7 q" c$ k+ ]3 h
{yDLEN=1;}' P6 T2 j: H) C% [2 N( J
5 G( {9 m+ [- _+ i5 d
delay(dailyCount);6 \1 z; x6 n: |7 g% a+ ~
yCLK = 0 ;$ I# R$ H. R% `" ?1 L6 f/ W9 z
delay(dailyCount);- O+ L' b* K; @7 f* i
}7 }8 _, Q( y: n- ]* [# f) ]
$ c3 [4 `* B% a7 I G yCLK=0;' h4 k" f( j8 u# [; L
yData=0;
* w; L. [3 m. k( H! S' W" S: A yDLEN=0;+ Y6 ^9 U8 u" y) H3 x
delay(dailyCount*10);+ C9 P" \0 w) {# N; @
; b0 ?# {8 ~4 d/ X6 I6 L" i
. Y6 ^6 }. P) C( {2 J: R
6 C1 v+ f. D# k& o for (i = 0;i<20;i++)& d; j9 }5 m0 S
{# Y/ [8 V& i( J6 b
yCLK = 1;( A. Q* h/ W, K) ^; B
yData = dispB;
9 Z# x/ B7 K$ X0 q6 Q delay(dailyCount/10);
) _/ O1 R G2 x7 X3 X if(i>17)# `; O8 y# D) n3 P- N
{yDLEN=0;}
' |0 J2 z) _. ?$ I& @ else
8 _: \9 p- V: d- ~2 Q. L% F {yDLEN=1;}8 c; g' {: I1 L5 W7 `& ]3 w
, G1 k9 O7 L3 r6 p$ N) i! I# q& C4 D delay(dailyCount);" \$ Q7 \- [, k* G- L
yCLK = 0 ;: z& p6 C: w; E" M7 j1 n6 \1 b% x% S/ x" U
delay(dailyCount);
+ D5 Z2 u+ l2 E4 t. A" o; f }
3 |" n5 n, p, Y+ X; L+ _
/ W3 m8 l2 D* ]; j yCLK=0;
, H3 ?" r) o/ h X0 g% S5 o yData=0;& v- r7 T+ A9 Z; \* Q E; y% |
yDLEN=0;) j$ [$ i1 y5 q
delay(dailyCount*10);
& F8 w P* U% y}1 g( x& t- z/ @8 M
1 N3 L) ]' q/ u3 n7 i6 M% w
/ H$ g7 J2 J# ~ I
) G$ Q8 E) i6 _2 I- a: q+ T% u3 G# v$ ?9 I! Z* _( p- u$ j
void main()
' R; I7 K+ n I+ J) y7 ?{5 n2 e N& c) R4 \" L ` `" G
while(1)
" i5 ]( [; O+ [. F2 ^$ A7 t' {* k {+ {1 j8 k7 _' ]+ ]
delay(4000);. y% u7 ^1 q4 z+ i: `& f0 s' @
disp(0);& f' X# l* ^9 j2 e3 t/ g
} 9 P+ S2 `# t# m
}
& i' _ ]* b( h( A+ \- j4 R0 { b2 m0 ~9 L+ j( X% U
& Y! Y! \& v! c, C* q+ ^" T3 e |