搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。8 X4 V( Z* Q3 x& }: x: V* f7 z+ K
1 Y( E- w6 i" d
/ H0 h# y1 ~( A$ {4 e1 w* K' _: N/ v
, T# B$ z( u( ~% L' k8 H) A5 _+ L3 x
: m! v/ M8 I. f6 V# C
2 l6 A. m* ]4 K0 i* J4 q1 M- e' d
demo 的代码在这里& v8 S H1 {# C# |/ ?
) ~3 S8 ]" Z5 x. j# D& Z2 h0 X7 J' A! J3 H
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
- N8 o# \2 h( }; G) X; {. X- ]6 |
- Y) R9 f: [, p6 w' T% E& N$ I% H! Tsbit yData = P2^0;6 Q3 V9 w! {0 _7 @
sbit yDLEN = P2^2;2 Y# K9 J* c( x
sbit yCLK = P2^1;
& y# n! R4 c$ V' a$ m3 W; A6 lconst int dailyCount = 200;
. a' k6 x. G4 R3 I* ^- e/ M3 I3 e! a1 A+ z
7 i) F0 s7 {! I7 l) Z
' k2 M6 g% ]0 M2 T- {- H h& avoid delay(unsigned int i)2 |6 }% P% g8 v0 |0 _6 t
{
: \7 ?; P. I! U% {$ f" b9 y c while(i--);
# N ~! e9 P9 j0 D" ^( V: ~) K! Z}
3 u- n2 ?, e# j6 o7 B5 _8 P9 W! s2 I! }- e% [4 x2 O
( T" u: n H% B; L) f) o
void disp(unsigned int num )4 e u+ N% h+ m# O) C
{& a! V, s1 ~; H- L0 i5 j; v: ^
unsigned char i ;) I6 S+ Y4 B. B
- ]+ p6 g9 O. v
unsigned char dispA[20];# o5 p. A3 i3 y8 @/ k& l
unsigned char dispB[20];+ d3 k* j& Y* x- A1 {4 o' P. M
O, O2 Z, @3 p8 ^! s j2 U8 d
unsigned char num1;
# o$ W! e# r0 F3 v3 A( Q unsigned char num2; x1 O- }, g) _6 c+ m
unsigned char num3;
4 l' f8 S2 s' F* R unsigned char num4;
9 n$ Y* T- Y+ X unsigned char segR[10] ; //右
7 i' b: B5 l( k# F5 h unsigned char segL[10]; //左: j4 u9 T) p- O `
! n' I$ @1 J" R: \. u' S- w //左
; X; J( K& s7 k3 P segL[0] = 0x12;
& {- K6 ?( \* N8 {' J2 @; [ segL[1] = 0xFA;! m) H1 \, B9 O4 J7 x2 ~
segL[2] = 0x0E;
, H' E6 P8 `# _" I6 u( x4 w segL[3] = 0x2A;" L7 X5 @7 U$ z% o- @' i* U3 ]+ t# t
segL[4] = 0xE2;
' @8 n1 d$ ]& M segL[5] = 0x63;1 G$ c9 c, i/ ~7 i$ I9 U
segL[6] = 0x2A;5 [0 n, m& h& o
segL[7] = 0x7A;
# W, b8 B& H+ u7 N& ^0 L segL[8] = 0x02;
, D! `9 C' ^/ f: K/ A T segL[9] = 0x22;, }" {3 H8 p0 G7 ]
3 n' b/ V5 U1 i6 `) h/ z: a
* k1 [: J n* ?
: W1 R9 L' q( B- Q& w //右
: s: }/ D1 b# y- [ segR[0] = 0x88;
$ A$ A t' e! R! y) y" B segR[1] = 0xEB;4 U8 r j; v$ w' N8 V
segR[2] = 0x85;
: Q0 ~2 [5 T. d, h3 ] segR[3] = 0x83; ^1 |' c' b4 ?
segR[4] = 0xE2;
i, s: U8 t4 F! p+ L0 r segR[5] = 0x92;: i* a" L3 ^" n/ g$ k
segR[6] = 0x90;! o) s- M2 G: R% G! R* X h
segR[7] = 0xCB;- p9 t: V) b9 Y4 n4 Z9 X. B
segR[8] = 0x80;
5 Z+ P _6 d' a& }; C segR[9] = 0x82;
4 G: y9 W' w, _, R$ n. A+ y* Q7 w1 z. r3 Y1 p- X5 d- h( Y
- g" f- Z l5 Q7 s: H" @ num1=num /1000;5 f- c* S: W Y3 n' Z7 K
num2=(num /100)%10;;
' s. g0 m" u3 Z3 y8 ~( B num3=(num /10)%100;;;% i. k7 C2 J8 g; x9 A5 K) C
num4=num%10;. G0 E) q: m* [
$ z( F5 S5 {6 X6 [: f4 s
8 n) N4 g1 i# E( R8 r- H' k9 ^* x# B
& `+ f$ V5 }+ n- M dispA[0] = 0;
8 F S( y. r% l( c, k0 h0 o" E* ] dispB[0] = 0;
+ k: ~: t+ ^! }8 B! F3 l \0 t: B9 M6 t
) ^+ j, Q* d/ [9 K for (i=0;i<8;i++)
& G: o$ A, D: ~- v1 l5 E/ d0 u {
Z! H. J+ T. F( I8 |( ~& {6 u dispA[i+1] = (segR[num2]>>i)&0x01;2 d$ I, M! e. D4 Y/ R
dispB[i+1] = (segR[num1]>>i)&0x01;
& {) K0 i& m. V
9 E& N/ O2 ^2 K dispA[i+9] = (segL[num4]>>i)&0x01;
5 k$ ?. T* n- E3 f5 n/ F dispB[i+9] = (segL[num3]>>i)&0x01;& U1 c! f$ C- j; p; y4 ^: ]+ f+ [3 J
}- s5 F: v( p& {% p# _
; k6 I+ b$ c& W& h5 Z& I% O
+ \) i0 h! I. a6 s# K! m$ U* l2 W) ?# P+ l! O' j% K4 x
dispA[17] = 1;
1 K0 K- {' t; h: b# H& ] dispB[17] = 0;+ y5 n6 I& Z) G. g& g
' \7 i- M- L4 j( n! a dispA[18] = 0;) z, Y( l9 @6 M7 f( [. ]7 ~
dispB[18] = 0;
! D2 {4 C* G( t/ M3 q# }! u( h$ h& b
0 v2 J& M1 @% Z! {: V' G dispA[19] = 0;. [- e4 e% |$ M# p) Q: k
dispB[19] = 0;1 J8 w3 j5 L v9 ?' B' a
# A7 L; P/ _8 F8 S5 b/ B) S yCLK = 1;" C5 Z9 v! }% g: o+ r; }: b4 n0 G
k7 a# D7 V2 W
& P) }6 E3 P: w! I4 j2 E% G
. ?* M. s- @# g; I' N8 J! F* g; O2 S for (i = 0;i<20;i++)- n# v% f( m; x* t; }" g4 N, a' r
{3 ?7 l9 ]/ { V( U2 T- L: ?
yCLK = 1;' E b0 K; R/ }9 q2 x+ S3 b
yData = dispA;
! W& Z. Y8 A$ G5 g( g3 M0 _9 ` delay(2);; [% ~/ h' _* h3 i' f
if(i>17)
- Q" B( o7 ~ s4 P3 W( Y {yDLEN=0;}, h9 w a q1 i
else
3 j! Y) g" F. } {yDLEN=1;}
7 N1 R) Z9 L5 f/ f+ N
6 T& M$ W0 \' u3 S' y4 G delay(dailyCount);
6 p- z \! K V yCLK = 0 ;$ H# Z* |9 [( d
delay(dailyCount);7 g6 a0 Q% c) N0 M1 O
}
4 `" L% D8 a, X1 S3 ?4 d% M' e" F: W# f- c
yCLK=0;7 O8 n' P) d- ^: m& ?
yData=0;* g2 W' \2 Z2 o: b
yDLEN=0;6 L3 H# Q& |4 L) `1 U5 s* x8 \. D7 |3 i
delay(dailyCount*10);! W2 E5 {2 c9 ~6 n
* ]3 G2 t2 B3 F1 U M/ ~( d" B
b: ^ B L3 D5 m& G* O
/ L7 c3 f7 s! ~ for (i = 0;i<20;i++)
* \, t0 m$ }& _. T0 i {
- I# R5 I* ^6 A+ V, F w- K yCLK = 1; G1 A, i* \2 U1 S& l
yData = dispB;
. v4 U5 r k$ q delay(dailyCount/10);8 |4 Y- y: u, W6 r# [3 c" x) ?2 [
if(i>17), y( i2 ~; A' q8 D
{yDLEN=0;}0 e" M4 Z+ \7 Y) x
else% q; G4 n7 h, F- H+ L: k
{yDLEN=1;}' C' R) I& M! p. y
. B) I2 N: X" I2 g u0 N
delay(dailyCount);; p( t7 ?* i9 _7 f6 u* d
yCLK = 0 ;+ I" W5 i* a ?0 J
delay(dailyCount);) k5 V/ |6 V- C( K5 d0 g
}
* p+ B) }: [" n/ \+ F7 L2 X8 `2 {
yCLK=0;
+ ?( b! v" ?/ W yData=0;
/ [, g1 p2 ^8 r! L8 w+ b6 k( p/ X yDLEN=0;" m, j: b4 W& I3 W) x7 [; o
delay(dailyCount*10);
* F; X6 t. b* [- d1 @* a( S}/ C1 b- k2 X3 H6 S& s5 ]& Q7 @2 @
3 b% J, Y2 o, j/ [2 \2 I4 S/ p. R4 V6 H# X1 p
9 A9 M5 @2 A/ ` _) L! {* f+ W( B+ p
void main()
. h3 d" h: E: I7 j; v* u{; \8 O7 y! n7 `) T, u
while(1)0 C- {) ?9 Y k
{
6 J, E) H" N3 g5 {* ] delay(4000);* q4 e' f$ U- ^+ [7 }# b# m
disp(0);
$ W1 f2 B, U6 Y- B. d6 l+ w( V }
0 U: o' ]" P! i3 e! v3 j" z* C}4 e+ ^: t7 N, a$ ~1 x
& _; J, d' [) p* P
% A% v N3 x! M/ z8 A
|