搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
) q) Y3 h1 }2 s i! k
! r+ l8 a" Q5 F, x2 N3 p
' a1 J0 }2 D Q. x; `) g( E
/ T5 k3 y0 d' {7 l
* Y5 D. b, J+ W1 {; ?" U
2 _7 C9 t6 B& t, [- w/ l" y) h
demo 的代码在这里
/ {: O) k1 C0 ?- ? ^0 Y J) ^$ X% Z, W, L/ Q7 \
* L* z0 ~+ q' W' Q( m' J1 Z
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
8 \ n4 ~8 P$ C) U6 r B- c- D3 i+ T( ]4 p. V
sbit yData = P2^0;+ S. O5 @- H P& ~- q' U
sbit yDLEN = P2^2;
6 h/ j+ Z/ O- C+ J$ W* Zsbit yCLK = P2^1;/ H; C' ]2 q2 `* W& R* }+ X
const int dailyCount = 200;* I- g; ]% H' Z0 N+ T5 D1 t" H3 T
4 _: P; _5 k5 S' c/ p3 ^; m N& L1 ~* f$ E3 s
9 s1 x7 u2 ?# t3 v
void delay(unsigned int i)
( X" v* V) Y% t{
}0 y: J; {1 R7 F while(i--); $ T% c- P; t8 i5 a$ ^8 i# u
}
$ Q, u& C" D- X) m- P( r- h
. u1 E- y9 m0 ]# d9 ~* G7 j) f) ^" g3 P; f" N; D: l: {$ v
void disp(unsigned int num )
9 X( V: f3 M3 p# h{- O& A' q, u/ r+ p0 t% m% P8 B
unsigned char i ;
. x( a/ z8 r0 O# A3 s$ ^
& n3 ]0 ^, y* g. W6 r- K. O1 x; D unsigned char dispA[20];0 d& B. r( {9 X* x$ D c
unsigned char dispB[20];
6 j2 \ }+ h/ {1 a/ m5 H
* S( `8 ] W8 a unsigned char num1;
, `0 F, l# L- Y9 _6 p unsigned char num2; % q4 m, v. q6 z/ v0 C
unsigned char num3;
$ V# `3 u- U$ p/ M unsigned char num4;
/ O. R1 J7 G4 {% {, v: \ unsigned char segR[10] ; //右& A7 e. | E9 B. {/ g+ P3 G
unsigned char segL[10]; //左6 V. I* U/ e+ {) W" W* o b0 ?. d" v
4 m1 a; n1 U5 t6 [! c3 O7 z //左 / H& p) _2 Y9 l0 e5 I7 e
segL[0] = 0x12;0 q" I& _8 D- n/ G _" L
segL[1] = 0xFA;$ T. {, y* J7 j% W# {& p/ \
segL[2] = 0x0E;
- Y5 w! c$ V( W9 |, P. g segL[3] = 0x2A;6 J0 _ `% B* E# G ]/ D' h! x: u
segL[4] = 0xE2;* B1 S# `2 ^& q1 p1 ~
segL[5] = 0x63;6 U4 T7 ^- J5 @+ q& y) ^5 ^
segL[6] = 0x2A;
/ b% L( d0 s! P8 W/ s6 I5 Z segL[7] = 0x7A;
1 p( {, h) O" o1 I$ K* V6 I segL[8] = 0x02;
: u5 B6 |, s/ i" h9 {4 J: g segL[9] = 0x22;
5 J8 L* A/ f( R a+ m) {6 K ! }3 u7 I& k$ B0 p
* I9 \9 a! m, N. j$ k& ?
2 o% |" Z& \8 s* }. ^, O( E //右' n1 S& _% Y2 Q7 |7 }
segR[0] = 0x88;7 G. d% d. k4 v ]1 ?& ]
segR[1] = 0xEB; p, ^: R& d7 U) z; l) w, u0 Z
segR[2] = 0x85;4 `+ C4 t; v, z: V; W
segR[3] = 0x83;
! d% X- s6 X5 O) J segR[4] = 0xE2;
! C+ D& {* M& t4 @ segR[5] = 0x92;3 A2 x# w1 Y# X6 B2 t) M
segR[6] = 0x90;: c1 j4 X3 Y+ h# T$ e1 \, j2 @0 l
segR[7] = 0xCB;( P% I0 y, \( G+ |- U2 z
segR[8] = 0x80;# `$ J( V( u' p$ {: j6 T6 E+ Q9 W; q
segR[9] = 0x82;
* R- q. A0 _( m7 H& `- G! J3 g4 R9 X5 M* Q! t+ u5 }
% f0 @3 u: C+ U) h num1=num /1000;
- g4 M6 ^0 k, s4 _ num2=(num /100)%10;;( V' u; p, z% x/ I2 e/ z( t0 X
num3=(num /10)%100;;;- ~4 r1 J2 W2 I' ?4 y
num4=num%10;+ b7 o/ J2 s9 d" R
; v7 O2 J; s% P% \
Q( ~9 c4 v% @0 N' ~& M. Q" k' ?) F2 ~/ _
4 h( C: \( T% V% Z8 N dispA[0] = 0;* F; p2 P6 ]) R' U* K" Y1 x
dispB[0] = 0;
5 W) J; n* E* H% Y" L" r) _0 P. o9 Y k4 i
- p& B) `' b' g5 E2 e5 Y
for (i=0;i<8;i++)
' {. q, E, V, P, s" L {) ~4 U1 I& f5 b$ E9 X6 V [$ i
dispA[i+1] = (segR[num2]>>i)&0x01;
4 D7 P- E" H! c4 I dispB[i+1] = (segR[num1]>>i)&0x01; % {. s f% ~3 T$ V- \
3 A$ D' t% ]5 z' i. T
dispA[i+9] = (segL[num4]>>i)&0x01;" n; _! G) o( }6 n" N* |
dispB[i+9] = (segL[num3]>>i)&0x01;
: {/ ]. l" f8 g# h( B+ n }
2 _/ [4 E! |5 e; f1 ^ @ X+ P* V3 X5 ?/ P1 |3 N) O9 v% {% W
- i( [; K: |- j: b8 b
% B7 A0 v% \. J, D: C7 q dispA[17] = 1;) C1 y* f* K8 p9 b
dispB[17] = 0;
4 F- r6 q2 B$ i8 i" e, S" {5 `3 U+ m0 A
dispA[18] = 0;7 `5 e. z; H& }" Q/ ?
dispB[18] = 0;1 ^1 s! L0 I4 F5 C2 o* y
2 j+ t0 S5 @( J' p, U( n
dispA[19] = 0;. R& @8 x, P0 l
dispB[19] = 0;
y" E, e' M4 v6 _1 D0 n& E$ N. a9 y6 B+ N* A
yCLK = 1;
- t, a( L0 J3 Q3 T4 b, Q( [1 k t ^0 `) r
2 a& ]6 w/ B2 K, D; E7 c7 R
8 I) ~8 a. E' m8 D( t& i for (i = 0;i<20;i++)
" g$ t' w' _/ e/ O {
2 U N9 Y4 k: [0 \ d- g6 G yCLK = 1;
* O2 f3 Z2 B3 H5 p6 a& i yData = dispA;
; ^) S7 B j F; \ delay(2);9 l7 w" ~# Q% F
if(i>17)6 P7 \9 y1 F' i5 G) @1 S2 O0 t8 S
{yDLEN=0;}$ J4 `0 \9 x6 S- V: _+ i
else5 Z" V" a- S. O* f- Z9 }
{yDLEN=1;}1 Q1 b4 E: o1 N
3 |( U) ^% _0 w) u/ b delay(dailyCount);4 c/ `4 P' f" Y. Q5 s, P. }8 q. `1 G
yCLK = 0 ;: M4 K) F* K% A" t
delay(dailyCount);1 z( O+ ^" E6 F& G7 a
}9 D/ w6 S6 v5 S
. f+ a" L6 o- [8 C8 I6 v yCLK=0;, m) G5 }0 {8 q8 N' o
yData=0;
" w' ` F" q: X$ R. Y" X yDLEN=0;7 ?8 s# @2 ]+ `/ C
delay(dailyCount*10);3 c' p3 t* f+ C+ J8 R+ e3 D$ m
$ P, i+ p5 u0 b
+ z' u; o+ k; }( b# z# {; _& }7 S+ r" [3 n* j( `
for (i = 0;i<20;i++)5 j# O7 `1 i, w5 X& Z2 L
{
q) S( R' e1 R( L, f! \" b6 Q: { yCLK = 1;
8 t0 e) |/ x/ i8 _% b) @; U yData = dispB;
: ^/ R, \& D! [$ c8 Q delay(dailyCount/10);2 F' }4 J1 v0 u- r; y7 A
if(i>17)
! o$ @- ^6 O$ L/ R) n8 j {yDLEN=0;}
- }: M* {# d2 E# J' s( a% L/ T j else
4 V1 e9 L+ D: | {yDLEN=1;}
8 B i X9 c4 a- j
% U: T: @ s: V5 d* a& G delay(dailyCount);
3 f4 O. n; t, m# W: N# c* p yCLK = 0 ;
8 c( z# E# B" H( I V0 p delay(dailyCount);8 `* K1 P+ f% _' c
}8 p7 Z, L3 p: T1 ~# \# h
8 h: Y( V u" ?% w4 n g( V8 @ yCLK=0;
2 C& I$ E( [& a" k" d1 ^& ^& L yData=0;
% @4 a. b7 {; O* p) @* g2 q. t3 s yDLEN=0;( b/ a8 E" r0 x( M3 A' n; i4 M
delay(dailyCount*10);' H: g- m2 C9 d( U
}# a7 Y _% y" `6 b
* K" G1 M5 }2 F) Z$ [4 _
5 m$ u5 H$ K j& M8 a
$ J! V! M! i0 m. W. ~0 @
7 A# s5 v$ O5 ^9 [* K$ evoid main()
: ^* X; t4 b2 Z! Q8 v7 Z( X{
2 A M& P' u0 L7 l& ?. @2 d while(1)- {6 C& F8 J: w R M* l5 W5 m2 F) r
{
( d2 L, [# p5 S- Z V* o delay(4000);
$ [% o- n$ E/ u; [. n# U% Q M disp(0);. s7 s- Q7 w, j% L
} , D) H. [# T6 z; W. W
}
* z; k8 U; j5 e9 n: X
0 T& D( u# M& e& c2 A4 Y
7 @1 j3 J ]2 ] |