搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
/ m, l" L5 e: @) c: \, Y b2 M( v' N$ b
( M6 W, `9 {& j
( X9 v3 X4 ]9 o
0 W1 M' n. w0 s; K2 O1 b- q4 ]* \+ {- B1 k% a
' q' p- a0 }" z" l& h( k( g9 wdemo 的代码在这里/ y' ^# h: c& I
0 F, K' |4 v$ E) X
; F3 t' _! I+ o! d#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
, C/ u- r! W0 y1 C9 J: X+ _& t4 N4 x' p( Z' @: k; l$ t& S
sbit yData = P2^0;
5 @- l3 _% ?. l6 H* V7 Psbit yDLEN = P2^2;5 ?4 e& w8 _; h- W" X6 D
sbit yCLK = P2^1;
2 ^$ W- b3 w9 jconst int dailyCount = 200;: i# h, ^" R& f$ t
$ B* E3 n. [( c C9 ^
3 J, I' k2 n* X6 R' }: b+ V5 A9 j4 V; O
void delay(unsigned int i)6 F N% m# y5 t; ], X3 A- R% S6 N
{0 f( ?# m ^/ Q
while(i--); ) f9 z% X6 ]) Y% u( N; Q# [
}
( d( m( l: P" b9 ^* R$ l, ~. Y# ?- \/ _8 j' g6 l
0 n/ J2 Q* V4 |% q8 vvoid disp(unsigned int num )" D, x$ E( v: E+ f) u% u
{* K+ B3 c+ b) g' A+ G
unsigned char i ;
# \8 P/ o* T3 Q' f9 T: l
- h/ t; |0 Y1 b6 Q0 e5 H0 ]; u x unsigned char dispA[20];3 S# t0 ]2 I8 C% ?( k% {/ s
unsigned char dispB[20];( ]9 U& u2 M! Z v/ V
G* ~+ z# _- a3 H! n- m1 R2 i( {/ X; b
unsigned char num1;
0 [2 B% ]7 v3 F2 R2 O/ f unsigned char num2;
& y9 {, O& C* ]# Z! S! `+ t unsigned char num3;2 Z3 U7 K0 Z$ t* {4 s0 o5 R4 \
unsigned char num4;" f% L$ |# B! `( k8 l
unsigned char segR[10] ; //右
. Z) I7 B% i6 C C) ^ unsigned char segL[10]; //左
% M" V/ t7 \6 [* N! I5 r b( y7 E5 e4 S5 g i0 ]4 b
//左
1 t, [( f0 R Y! t* F1 W segL[0] = 0x12;- U0 H7 n+ n9 M1 P8 [+ n8 Q
segL[1] = 0xFA;
- c ?+ k. i1 s2 d segL[2] = 0x0E;) m1 W( s0 m) J
segL[3] = 0x2A;
8 c5 O7 w* Z+ h8 l* D; u- T segL[4] = 0xE2;
( T2 q5 J9 a* @, ` segL[5] = 0x63;) M% q/ U8 |& R6 {5 t- ]
segL[6] = 0x2A;
2 V: U3 A5 o% h& b7 l5 B6 p segL[7] = 0x7A;
2 C+ C& `/ H+ y- `3 ] segL[8] = 0x02; w8 f$ p p% c- A7 C$ e- L5 k6 g C* t
segL[9] = 0x22;4 G7 w; F; M5 h( A9 t: d
0 O: v2 n$ {4 x: F3 } 2 r; _7 X/ B4 W! f+ b1 e- l
/ g# }9 P1 C( D1 T- v- g6 k3 Z //右
^8 `4 w1 N; k+ b0 g( q segR[0] = 0x88;/ l8 ^- G- M( c* q
segR[1] = 0xEB;
0 `* @! D, j( c8 M0 U- X6 D segR[2] = 0x85;
8 \$ X9 C5 h8 m9 \! }& o; S. t segR[3] = 0x83;7 N3 A$ _. }" b& m }+ a
segR[4] = 0xE2;; F4 y V$ n0 M% K: v6 s( B" v
segR[5] = 0x92;% d% S" g$ f/ Q; n) ^( T
segR[6] = 0x90;
" C L# m/ c8 t! D segR[7] = 0xCB;
; j/ P5 M$ D) p. U9 q j0 L% _$ Y segR[8] = 0x80;- }0 w; v. ?. ]4 m
segR[9] = 0x82;# o2 m* A) ` Q
# B6 J( y9 r5 p. D* l9 d5 _ ! I5 h/ N7 g g6 p. H# D+ ?( q
num1=num /1000;
4 X+ W' e4 [) V3 f: b num2=(num /100)%10;;3 o4 i: l2 M1 [ p* n/ F
num3=(num /10)%100;;;) o( V @/ ?% g
num4=num%10;% q' ]1 g* h/ A7 X, Y; X
5 p* }' p3 ~- j. k
. h' M# g/ X( X, k6 L1 R) u7 J
* \( c1 @$ n+ F9 L, e3 C9 |* A, g' @3 u ~/ \ R0 C
dispA[0] = 0;
P0 R F# [& K; ?8 H+ K' I( s dispB[0] = 0;
% x4 b. L* |. n+ c! `
! I1 l o" Q9 S% e) H0 @2 @" x7 W( s( Z4 L
for (i=0;i<8;i++): R9 k# Y0 s" E( I- E
{
; t ~" a% L; D2 G, P dispA[i+1] = (segR[num2]>>i)&0x01;
A1 i/ v' O K9 Y dispB[i+1] = (segR[num1]>>i)&0x01;
0 j; [. O0 H2 z9 u
$ r2 x6 ~; q7 [9 W8 g dispA[i+9] = (segL[num4]>>i)&0x01;% Q! R8 V4 p- s: z3 r9 z
dispB[i+9] = (segL[num3]>>i)&0x01;
2 L. V9 @0 ~5 t0 X }
) |( z: \8 Y: u# c* [9 E, P
/ ?3 F# b' H0 j
' v/ e0 `( l% I, R6 y. _6 N9 i/ b; o! J+ B3 U1 B; x
dispA[17] = 1;; A1 z: w/ k5 o `4 h/ `0 U% E. f
dispB[17] = 0;
3 D/ U9 d( z( i' ~! W) V
6 t; j [6 a! ^) K' M5 F3 E dispA[18] = 0;8 D+ @, i1 o- k7 E9 G
dispB[18] = 0; r- R4 I5 [. Y$ Y& e9 C% @( j- E
; Y V B) O" `* E
dispA[19] = 0;
/ V# F2 G! x- Q5 D( A! `5 S: v0 k' X dispB[19] = 0;+ X! A, T' _# W4 R% h
1 y8 B# p% g: o. y, T yCLK = 1;
$ n$ Y+ a% X; K+ ^) X. u8 ]# r6 C% v6 n% Z! u
8 B" S; L2 ?; p" G1 W" A8 x& k) k( o1 }, Z5 h: v
for (i = 0;i<20;i++)$ o) @8 f: c% ?# {: @
{
y- q" v/ z: p5 S* z6 u8 H) ` yCLK = 1;
6 i; Z% S6 A8 f3 J0 M, }8 h& K yData = dispA;
! s: P' y' v, K# y" o& p' S delay(2);2 c' R6 i/ x; v6 i( i
if(i>17); g6 n% \3 A1 B
{yDLEN=0;}
- a& {( W7 H; u+ N else1 T/ b6 T1 _4 t/ @
{yDLEN=1;}
0 n; p) u" e: U( k- j) j$ C Z( a. Y; v% F% R
delay(dailyCount);
7 t2 a% u5 ?5 Q1 d' w7 t yCLK = 0 ;3 `- |8 B Y' c* I
delay(dailyCount);+ e5 M& V# ]1 \
}
/ _0 f. N z/ o( j+ l# J8 y: U
. @$ c& v3 `; e( [" m3 r yCLK=0;) s) P: k. m1 h l" `
yData=0;0 D" Q! l* N9 f& V: q3 X/ {8 d8 a
yDLEN=0;
' u/ k9 u/ u9 E# u: _, G delay(dailyCount*10);5 S, ]9 E2 ^0 |! ?
; I# |8 d8 d5 Z: o+ q' }
: p; F; f9 J6 E3 N6 A
( V+ J/ T; J8 t& f. h, S K for (i = 0;i<20;i++)# _* E% Q6 z9 F; {: o+ z3 `! T% G
{
$ y1 `2 P, O6 F R% n0 O$ K yCLK = 1;5 f3 S7 F7 w( v% F1 I, c! I+ f4 l, g
yData = dispB;1 m4 S5 t9 o/ H$ o
delay(dailyCount/10);3 N" ~( n% b1 O/ e$ @. V% F* Y* h
if(i>17)
: m" V" l' O* B% b* }3 S {yDLEN=0;}8 L% g s+ b7 e: e- o
else
! [) I& I" Z" p: h. a* H {yDLEN=1;}( V6 ]& r) t" k' c' Q3 t; @2 e
* i2 m% u/ {, f+ D1 x, k. A delay(dailyCount);
5 Y' m, Y$ r; ?" ]5 l yCLK = 0 ;
, p; x# K2 p, [. g' W- c delay(dailyCount);
; ]" C- W, L! \8 s! |& o1 x }1 `5 o0 C2 o* P; i- w
% h# j0 U1 v. I. Q3 }+ J
yCLK=0;0 j& t/ V! t* ~* k4 ?$ G7 P
yData=0;
9 h& ~- E2 ^9 h$ x/ A V; n: c5 [ yDLEN=0;6 t8 x; G: B+ i, i z
delay(dailyCount*10);/ i2 \; e( u; ~3 l
}2 M! U* Z( V4 B+ H4 o4 j/ J/ G
1 w! R( @6 L2 L% I: b6 j. R! }/ Z0 \$ _
6 e6 g' d6 b# m% u1 X
* \0 j- z. @, rvoid main()
% L6 J/ D$ V, d( l: r{
8 ^* \, f: c2 l, F1 Q3 o7 ? while(1)
. K z, Z4 ~! P% O2 ^/ i9 |; _8 X( ^ {, C) i! H. r' S! T" i( F8 X
delay(4000);
6 C# }6 E7 T' S8 @) ~ disp(0);8 U) f ?5 `# P
}
* T( e5 W4 @- l2 G* u j6 {}1 M% D7 j) t4 m+ W: T7 f
' }/ T- ?1 e1 t6 G9 a3 {! U2 y! A
) k7 J3 ~2 A" w3 B) p |