搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。5 q+ U# |2 e: K" T5 p ` P
" p) D1 T2 s4 W4 I3 c r* k9 j7 t
6 u; X( @. c, R/ `- M. ]7 H) ]
2 q1 b6 g- @& L: o- W- b0 \
5 `, f$ {. e# L. p
; \" F" e3 Z# L6 Q U2 B1 `8 [3 u, I( Y/ I: T4 H
demo 的代码在这里
5 F3 F; E6 Q4 [6 x5 N$ v
! ~7 f6 {/ {7 g8 N8 V+ G; Q+ D( o: s+ M
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
% E$ A' N: F4 o, `
# }+ p- w4 @& J. psbit yData = P2^0;
/ f5 V# @; o% @8 rsbit yDLEN = P2^2;
8 J. u. u# s# p( o. nsbit yCLK = P2^1;
" x7 r- i8 G, T+ Tconst int dailyCount = 200;$ |0 s0 s4 X: Q/ Q( H8 T
& Y$ U L6 Q4 x5 Y# X% Q
4 {0 b6 q! q1 A: j' b
: T, G/ T5 {. F- Yvoid delay(unsigned int i)
- C* f/ X: G7 X, @$ o{
6 D6 W" ?! K( g4 w! R. v while(i--);
6 L& ~- k, R- y4 l}
0 [& y0 a# W& _6 p5 `$ f! S+ u( i; Y' ~4 z: ~0 D* [) n. g" r
f4 q# `% }9 _2 O0 H/ M
void disp(unsigned int num )! v. J- d7 t) i& E+ u2 C
{
0 s' {0 b u5 t% Y! ~ unsigned char i ;
) o! G/ ?( e/ L, x
: V2 Y# K" X# g6 v( U/ `3 j unsigned char dispA[20];
& M. W, Z: \8 h/ L) {$ g! R unsigned char dispB[20];
3 [- o8 P1 i/ i7 ?1 ^. T6 m' x7 w9 W
unsigned char num1;
2 @8 [& ]9 o; h3 e unsigned char num2;
6 ]! r8 S' h( H! s unsigned char num3;6 V$ }2 _; _+ r& m
unsigned char num4;; ]. \, M: \; N2 Q7 y6 h4 r5 m3 v
unsigned char segR[10] ; //右
; \8 m- Z/ }- W/ s& n1 J unsigned char segL[10]; //左+ p6 [7 f0 f9 d. c% ]
7 v% E( J& K: R3 I+ _/ d
//左
# c: k# W+ t Z, b! L" z8 ] segL[0] = 0x12;
; m, F+ ?+ @7 m9 Y8 T6 o( T, V5 s segL[1] = 0xFA;: n( m5 X4 E8 ]' ?+ ~- _9 j
segL[2] = 0x0E;6 }' c! |5 x1 r7 J
segL[3] = 0x2A;' n* G9 ^4 o; w) v% w1 H3 N6 O
segL[4] = 0xE2;
- p7 c+ Z% n( E1 j K* E; k) d segL[5] = 0x63;8 r% [# J* n, I& h& w4 n
segL[6] = 0x2A;
* c, m. W9 C) { segL[7] = 0x7A;' n0 y8 c( _0 y3 c2 {) j/ l9 P
segL[8] = 0x02;
7 n9 x. ^5 j, C6 U5 Y" A segL[9] = 0x22;
$ B' b% T1 i- d7 }( h' L w) E & a) s$ w+ g! }- k" b
5 r6 V2 E) ], j3 {- A! K6 F$ C ' ~0 n& r7 K+ ]8 t$ u
//右
: i- i9 S7 j/ s: R) m segR[0] = 0x88;) n! `2 A2 U( e( M8 w8 Y
segR[1] = 0xEB;
/ M) \/ ~8 @4 K' R+ D( R+ m segR[2] = 0x85;
3 K7 ~3 T) e: j' h( v segR[3] = 0x83;8 _8 g* P$ G5 ~. @9 z
segR[4] = 0xE2;' d1 h3 O. J, g7 K3 S
segR[5] = 0x92;
/ Q! K- D/ Y) R6 j segR[6] = 0x90;
) G6 v' `7 w6 x* _, J6 D- w segR[7] = 0xCB;
& M* P& N+ ]* ^- w segR[8] = 0x80;
+ V$ `% P; G# ]4 |+ @ segR[9] = 0x82;
) \5 ^% a9 M# V1 T8 F
& q t9 F1 X7 t8 S( X5 @ - K$ u7 k; y) w
num1=num /1000;
g# E% ^6 u; _4 a num2=(num /100)%10;;
) R1 e8 j( y$ ~3 O7 r num3=(num /10)%100;;;
- C# ?7 U8 M$ c& O" z num4=num%10;" j5 W, K% @6 A( h9 _
m' R3 p/ ?* ^% J: x7 f8 v* f7 z3 F
: i, R- `: C( }8 |- j* P6 Z
6 ?9 H7 A+ K0 _- [# H1 X9 l
1 a' t: z- g: t7 V dispA[0] = 0;
* Z7 g0 k, C0 } dispB[0] = 0;
w3 z; S. M; d8 d6 q8 r! U1 b$ [2 b! [
4 F# o7 v. G' D- Y$ B# T( a for (i=0;i<8;i++)
3 F- Z' M* E0 B }0 [ {
$ N u' @* R& `+ \5 c6 w5 `+ d) u dispA[i+1] = (segR[num2]>>i)&0x01;& L2 o+ l- t7 i
dispB[i+1] = (segR[num1]>>i)&0x01; 1 i3 f9 k! Z. k
7 R( p3 i" h4 Z9 i dispA[i+9] = (segL[num4]>>i)&0x01;
& s3 |) S" N: Q" t3 o dispB[i+9] = (segL[num3]>>i)&0x01;
" T0 F. H. P { }0 f; y7 `: S3 w2 }% H2 ^) Y
]. T! N2 b. I G3 c1 J+ ]( t( Z# L: {1 D: a
$ e' |! a( b2 M8 D% x/ B' s; u dispA[17] = 1;
+ _4 I; _$ u4 u+ ]$ V1 Q4 ~ dispB[17] = 0;
& b4 u+ u) c; G9 S. q
& l7 ^5 O' C& V, l6 a2 f0 l dispA[18] = 0;
/ @3 ^- f' S0 g8 U! T( A dispB[18] = 0;6 l1 y* J4 f5 _, U' T
4 [* `' X& o+ y; X3 p dispA[19] = 0;
" y" ^' p) k( t6 I* X4 a+ h dispB[19] = 0;
' @7 J4 U" c9 M, f& W9 j0 n% x2 n' `$ F x/ {% e% Y3 S& v
yCLK = 1;
U) a+ u" S/ x) x# j
' k$ _8 D$ a* h8 G2 T, t3 Z( O* g1 j K- N( w
( {" e, o# b M, Y, p8 y$ X; O for (i = 0;i<20;i++)# u% F% u1 g x! A( X# {
{. Z8 G; d$ U& A4 }+ j% M
yCLK = 1;
9 B# \3 j" [$ Z% I yData = dispA;
' t: m; c2 e8 ]! r# d9 V, v/ S8 W delay(2);& q: ]% L, m8 }8 h" ?3 j; m6 P
if(i>17)# n8 b5 ~2 T: a' s* W- ^" b
{yDLEN=0;}
& u n( w+ q& Y9 j, a4 `3 e else
, }8 s" @, v# D. O7 p {yDLEN=1;}3 N- P7 g5 K2 r" \1 T9 W
$ S. ~& M4 K6 C
delay(dailyCount);1 w' {( l0 C% F- b- l+ w+ d
yCLK = 0 ;
+ O$ W0 ?% A* `8 n$ \! V. n delay(dailyCount);
: A; o, D m+ y' }6 m: h4 J" m }+ Q) r! O! c# g/ N) K& U0 G
0 X7 r, d- [' I! b
yCLK=0;5 T" K( \ Q3 Z! U
yData=0;
' a* R! V3 a+ k0 D; w5 u+ J9 U5 x3 I yDLEN=0;5 m, x$ }# H$ x& M# j2 X
delay(dailyCount*10);& s2 s3 q; X6 S' N
; ~, m. b; N6 M/ u! `' o1 n8 m
8 }' J; b! x: `4 X( L P" |
+ P% A7 X" z$ e: u% b for (i = 0;i<20;i++)
- M6 N4 ]: _/ A5 \% B, n {" _. z/ `8 `9 e8 ~. B% d
yCLK = 1;' d) z1 L' W# D. \! I: t. r
yData = dispB;
( \; u1 x/ ?. _! D! I ] delay(dailyCount/10);/ T$ F* z6 L0 U! r% ^+ N& k2 G1 e
if(i>17)
# Z6 I3 g: a' h {yDLEN=0;}7 R/ d+ _% P: V. P4 ]7 }
else8 o1 o; N/ \( @8 A
{yDLEN=1;}
* V- b6 q; x6 R( W3 w& A( d2 Y, T2 `$ s
delay(dailyCount);4 R' U/ P3 s5 C6 n
yCLK = 0 ;
9 a) y. Q+ s+ j! P+ r5 R delay(dailyCount);
$ C/ C+ Z6 O/ ^. ~8 C }" T. X9 O6 d2 k, X
7 N, ^: ?- G6 a' Z yCLK=0;
2 u n% T' j% V9 U yData=0;
$ b1 D+ w3 ?1 T0 j0 ] yDLEN=0;
5 N9 K& s& f V* Q6 i delay(dailyCount*10);$ u0 w4 t! a9 X" j1 ] e8 H8 S. F
}
2 w# H3 u% l3 [2 {: [
- z) U. x. O( ^! T$ ~) f+ m0 \' D* n5 B: t+ b; w! ?9 m- T7 C
& Q2 J0 v$ o6 q) ?5 Q# M; Y; g& O
void main()! r. s2 i' j) @4 F$ W2 f+ l, y5 B
{
$ J3 Q" E+ X! G8 d' m/ Q# u while(1)) K. ]( r# v% @) O5 ]
{
- ]; x5 f) U2 Y& @ delay(4000);
! B* g9 R% m9 y8 I disp(0);! X1 L& b/ c2 W" z
}
! \; U6 Z# w5 {: ^. k: r}
x. n* t3 x Q8 d" \' O4 ~( V- i/ p
2 {1 P1 ?+ N, a
|