搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
; d1 I2 b6 o2 T2 x& w
0 e5 ~4 x/ k, n" m! [
* A5 M% K* d. F) _$ Q x
, R5 L6 c" A9 v! E% d/ c
! d' G" W! p- V" m& Z v" g
. O( @! t% m& G% L+ f! E w3 t$ t) v# [; E3 G! i
demo 的代码在这里
' y& P; s! C0 g; l; p2 D* @ M; K7 U4 p9 ]8 i6 ]* |
9 d/ `) M6 b' u7 N9 h9 {#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 Q6 z3 N3 c/ E4 I! b* M: |
% L; c M$ V2 }, U1 e3 k1 }
sbit yData = P2^0;( r4 q' ?- x% r% x$ _- o T
sbit yDLEN = P2^2;2 C& _6 P: F( \! D1 \$ N
sbit yCLK = P2^1;1 q( T b$ o1 K. l* ~ f K9 c
const int dailyCount = 200;0 }3 A) r9 G+ Q, z8 Q5 d- N
1 {. X0 h+ b* s1 T1 p% |
- S+ a* e! P8 a0 M& D5 ]
9 q# i( ?6 l2 P$ Z4 T0 Y5 lvoid delay(unsigned int i)( w. f' C' C) N4 Y- T2 E
{
) R$ ]7 C$ R1 i while(i--);
$ g: o* a' G# }( Y, ^& E}
; y" \9 H% A$ V" h9 w
. M* f$ }0 n, M I, ^9 i! R$ N* n, ^- N6 B4 ]$ V- O
void disp(unsigned int num )1 l, k" x0 d. _/ f; [: h
{6 x/ x; o1 I1 S" K/ G7 ~+ J
unsigned char i ;/ I7 l6 j% V# o
2 d3 Q4 M. _7 H2 t* ] unsigned char dispA[20];
' e+ u$ ` q! d% W3 D unsigned char dispB[20];8 t; z. E9 O6 B" {- O. R8 q
" @$ |. u; N7 w! H# Y6 Q9 K7 N
unsigned char num1;
: L9 N" W3 t+ r! }4 R& H unsigned char num2; , {7 r1 P1 A& v, c
unsigned char num3;
3 J+ @7 s! q+ F+ u( B V. ? unsigned char num4;
2 C) @6 a3 r8 s4 q+ h$ C unsigned char segR[10] ; //右/ T v& P# ^8 ~! P1 c; R
unsigned char segL[10]; //左
% u3 x9 ^' T, Z/ @ c( u. ]+ i& {0 Q6 Y" N* q
//左 , K' z0 z8 G3 O( s* D1 W! N, L+ z
segL[0] = 0x12;
8 K/ S% D8 y" U' @9 A- H segL[1] = 0xFA;
V- b9 k8 \ {7 I5 P% f3 P; |5 e; R segL[2] = 0x0E;0 L8 S6 a4 O8 B. {% h
segL[3] = 0x2A;
; ^) z N+ ]% v D. E segL[4] = 0xE2;
: A2 _7 M% x5 R+ e segL[5] = 0x63;$ G& E8 w) G6 [* P& X% W6 o
segL[6] = 0x2A;8 r2 t. U7 ^, e2 ^
segL[7] = 0x7A;) x h7 o( O# c
segL[8] = 0x02;5 s. T" U' H- Y7 W) u3 `* X
segL[9] = 0x22;
" T, K5 U! x$ V) W3 S
, y% E$ }0 u3 c: f i' b2 N 5 m9 p |" E" t0 d c. q& D
4 d$ _8 y0 W# G2 k6 R2 S1 e* A" V
//右& K- G" ^. Z% Q; f" g" S6 T
segR[0] = 0x88;; V0 ?. i( v, V8 o( |
segR[1] = 0xEB;
& {' k6 ~6 Q" t9 a% ~ segR[2] = 0x85;
+ X$ {5 E e. b0 G0 ?, |4 Y' i segR[3] = 0x83;4 E8 {1 o0 ~. v( H! ^
segR[4] = 0xE2;5 Y$ L0 d( x( f; Y
segR[5] = 0x92;3 w! Q; l. ]1 p, `; D
segR[6] = 0x90;
1 e0 E O$ z0 N6 a- K' P. v8 b; v segR[7] = 0xCB;7 c$ ]# l! o5 V2 T0 T7 {$ d8 k: @
segR[8] = 0x80;& \, j y" g$ t, w8 r" ], I4 x* F5 S: c
segR[9] = 0x82;
9 a! x J6 U$ j- \6 r e P9 i t+ b8 F
5 w; F; m+ `3 w" R% t num1=num /1000;8 t ~( _1 P* Q1 j
num2=(num /100)%10;;
: S" s! I* h8 [! Z num3=(num /10)%100;;;* f/ Q' z5 k- @; S) F) M
num4=num%10;2 T* z& X. Q L) p& ?7 R
" Q. {* ?5 n W, O c
8 ^ }: ?* f8 ]! Q3 O5 \! e* A K! w7 L! W2 k
( e5 h% R; n4 r: a! U' Z8 o! T dispA[0] = 0;
8 C; B* z0 X1 P) L: Q- m* \; Y dispB[0] = 0;' f" x7 u; i+ Y# t
, y) ~: z+ {9 p* t8 R
' B- C6 n$ _8 e# x2 U
for (i=0;i<8;i++)+ p- W0 v5 g4 `7 l8 ~# s8 `6 A V) e
{ X! D2 y/ R" k1 f# ?# y* S# u! B! l
dispA[i+1] = (segR[num2]>>i)&0x01;
* L- n. S C. z dispB[i+1] = (segR[num1]>>i)&0x01; W/ D5 M& q8 \( l+ P" x& u
- j$ B. `! Z" {. R
dispA[i+9] = (segL[num4]>>i)&0x01;
$ Y; B$ ]6 ]: [4 [7 B# ~7 C5 @3 k0 n+ D& e dispB[i+9] = (segL[num3]>>i)&0x01;% o3 j& H/ u. J( H; l$ C
}
6 V! |2 ~1 U4 s- Y h( i0 v; j - S& g1 W7 l& u. B4 C' F* m
& Z' q' g# S7 V$ E: O( n0 a" Y
1 p1 ]$ T7 Y- \/ l7 O% V dispA[17] = 1;
$ }8 n# W- R$ Y3 P5 b# a dispB[17] = 0;
3 |0 @7 Z! M* V' N$ f- ~% U' p5 P* x# h# Z# l; m- d: @
dispA[18] = 0;: Z( Q6 ?( D2 w) D4 f2 s
dispB[18] = 0;8 H5 c) I" q9 u
# Y( w7 m& l& k t9 a
dispA[19] = 0; r# j, b+ s- W+ U
dispB[19] = 0;
. v, i1 M8 [- t L2 H8 g) t. P2 z) v
yCLK = 1;
% b! y$ B. `% {8 m
* {- p% N! j) |5 G: b3 r+ v) n p
) M+ }" l' u R4 K' t: o$ `* x
for (i = 0;i<20;i++)
0 H* j$ w% H: _; T {# J+ h* z `( E! Z
yCLK = 1;
' d. e+ z4 q6 W yData = dispA;- x' v2 I. m/ C& A" Z5 K
delay(2);
+ a3 a" Q7 i4 o; C' m9 {; M8 L' \ if(i>17)% _% e5 [0 J0 M$ W2 M5 T, z" a
{yDLEN=0;}
5 T: Z# n' R) M0 i9 I" d( W6 A2 ~# F else$ x* b( ]4 ]+ K- W
{yDLEN=1;}
7 I6 p' r, \: ^$ X1 Y- i1 ?7 y7 K) s
delay(dailyCount);! {. r7 I2 E- X3 P8 F
yCLK = 0 ;: M! ~( T; g. C, T8 k p' x
delay(dailyCount);
, {3 Y0 x5 l" [" t1 c }
/ R; c3 W* Z& a0 |* s
* m% C" v: J! A0 @5 r yCLK=0;
- w4 F6 ]3 ]" U yData=0;6 x% I2 z, ^. x6 g* A5 x/ f* {
yDLEN=0;# \$ t) {! V1 y$ |& l" n- J" b. o
delay(dailyCount*10);" r0 ^. P* t# {4 t2 S9 i1 H
% v D4 L7 y. W4 R' V
! k8 r3 S& J, V6 K% ~7 w- I/ z" r+ p% k! Y, z
for (i = 0;i<20;i++)
) ]- X- h1 q, j# @6 x {
( E- B2 U' ^: \, a2 ]- L0 N yCLK = 1;1 P9 r/ E6 U; _$ U
yData = dispB;5 W- r0 c. r. W2 w/ ?. ~
delay(dailyCount/10);
" w0 C. n; U9 \. a# ]! y/ @7 G% s if(i>17)
; h2 [1 n( ^" V7 @4 b' l9 R! A {yDLEN=0;}
3 y- S! F6 \5 y- r- d4 M else
D4 W8 W6 ~) L {yDLEN=1;}
) A, N2 ?2 R0 J0 U' c% }- q
3 _. y# D& J7 b9 g delay(dailyCount);! `7 v/ v$ M! X+ a
yCLK = 0 ;6 C; Q' W- b* _+ W8 a P/ U+ d( ~' [8 ]
delay(dailyCount);2 M/ n6 k! S; K8 A% I! B% i7 _
}
8 {" M, B) T% f' w3 e. s g" [2 ]" X
$ J+ g5 n& f' x' [ yCLK=0;
) w; p! Z; W/ t7 \# m yData=0;
% @0 D: n( R+ l! d8 p& B yDLEN=0;
2 `! s& Z3 |* ]$ a) j) X* V delay(dailyCount*10);
5 C- k) \1 M. I! T' N1 N, I}$ V5 S+ r1 u# o, | y9 c
* Y0 o0 \ D: W8 W) _; X3 k
, o$ F# u# f" ` Q6 v: o; M r
5 ^- |' @4 g5 B1 @6 l
2 e' _: ^- a8 h; Z& ]! z3 _' Pvoid main()8 t1 }; I' U9 v* }
{! U) N4 b& P! Z
while(1)# G u3 U: u3 O6 Y
{
, i6 k% ^' ~% |- p delay(4000);
- g5 Y% E( d* j* c: l disp(0);; I6 A" _- G! }/ K& Q( i' n
}
) n+ P- X' ?6 S1 V5 b}
% \$ l, z& R8 P( j0 m2 @4 ?* P: V' k& p& G/ g, k" R! S
! q# U6 y. O6 h5 d* q S
|