搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。3 \& C# y; x3 t; Q
& [0 u. p# X5 k( p1 V% D y
7 c6 v/ a" L& U/ \ P
% ?9 U- _8 _" Q- B/ n; g. W- z ?/ _' A1 p+ Q
7 S: x' X* P- k" r0 x3 Z/ ]* e
. |$ j" Y; Z3 K# e8 b1 ~9 O: T) [3 Qdemo 的代码在这里 [4 ]4 W% m- a& w9 d
! n& L3 |3 R z: e& O2 L$ m; Q) B; x/ k. z
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
0 ~+ T$ m- `* k9 c8 K0 H+ @6 E& X. A
sbit yData = P2^0;
; _$ _+ F ^' tsbit yDLEN = P2^2;$ F+ f @& h/ Q
sbit yCLK = P2^1;
2 q4 X/ G: w" E1 H6 e; y& { x( `const int dailyCount = 200;
- f3 D u# n$ N
9 V$ g3 L! @- Q" l. x* f; U1 G
6 i" }& I2 y" V# Q7 c1 R3 ~8 C: H" j; B- F' M3 B
void delay(unsigned int i)) j4 i) o2 L/ C
{. Z# i6 e, Z8 |' g1 Q/ q
while(i--); ; h% u0 n: x7 l1 _0 x4 e
}; F3 a. [! @+ E6 d8 }
6 E8 }% r: \1 l' A% V; d ]
0 m U# L/ o; q8 k. Q, Vvoid disp(unsigned int num )! V9 K3 ] a7 O( N7 O
{
2 ^' W% o- o7 V" Y0 W; L; G9 X unsigned char i ;
3 r* B) t/ G' n9 k8 K% R. \( J& ?6 h5 ~
unsigned char dispA[20];
1 D" C) W3 ?* C& D& ] unsigned char dispB[20];
2 G, R- a) d4 T( i& E* I7 J' P2 J w5 h X' d9 L
unsigned char num1;
' |( B7 N8 z" T7 g. M unsigned char num2; t4 U$ L. W$ u f/ {3 @) k4 p, t0 [
unsigned char num3;4 Z9 n- W7 h5 R \( b1 N% U
unsigned char num4;
0 g4 Q; c( M& g8 ]/ X. C( V( J+ v unsigned char segR[10] ; //右
5 A$ [) p. w" e unsigned char segL[10]; //左
" b: T5 E4 e6 \7 c6 `* u1 w- e# u: o1 J, v
//左
! z0 u! G A' X! [! W, v segL[0] = 0x12;
/ U+ z8 l" M" d# E3 J6 V4 O segL[1] = 0xFA;1 E+ d' g3 Q: L. L# D( `3 R
segL[2] = 0x0E;8 ]% D: V! t6 ]8 t6 N* X
segL[3] = 0x2A;
" ~ X- R6 W& F6 z* J# y$ } segL[4] = 0xE2;
6 D7 l) L1 i1 ]2 s; N# x; w segL[5] = 0x63;
' G7 l/ O8 W! m) g& V( n; ~ segL[6] = 0x2A;; k, f* s* C* z) p' k' x n8 \
segL[7] = 0x7A;
: o7 I! @: b8 M+ \/ X0 }0 g, b segL[8] = 0x02;) M. T4 B' c3 [: x! J
segL[9] = 0x22;
1 T+ w# f4 `! q2 b7 \# \ : T* y; h" b7 }* J
4 [/ \9 Q) T( e/ ~: v& |
+ f- Z7 r4 e9 d1 w s3 C //右
& u" r {& z: O$ {! N+ e, _ segR[0] = 0x88;
$ E8 i- I% k/ }0 |3 ^' \ segR[1] = 0xEB;
- V* _- v. i( t6 \+ I segR[2] = 0x85;
3 h. C* @ I4 y* ~ segR[3] = 0x83;
4 y V1 f4 y2 B. a segR[4] = 0xE2;
1 l$ d' E( `. U5 {: | segR[5] = 0x92;4 n& a* z5 k6 W1 i% o# i! t) e
segR[6] = 0x90;7 j; D) A7 f E# m# e
segR[7] = 0xCB;
$ o% }5 ~* d2 o+ ~ D: f; t! B segR[8] = 0x80;% r; Z! Z% w, y. W
segR[9] = 0x82;+ @* w8 i0 H! c$ v- A
a: }) m, _4 o+ J2 T f3 n, d$ h2 c' D
# Z# @. g' d1 t) `, f5 O num1=num /1000;' B' J, u( p- P5 j
num2=(num /100)%10;;/ j" G& Z# u+ z0 _7 d1 K4 F
num3=(num /10)%100;;;
6 ^% i- X$ [) g H0 Y num4=num%10;# w& l' x& e$ [: [
9 }' t$ h7 {+ L# A2 n
$ v/ T! V8 Y1 W2 `
# h% X# b5 O; n; g/ K5 B2 J0 d4 I! k3 W/ j6 M8 {
dispA[0] = 0;2 i2 p; K+ Z& q# }0 O5 R
dispB[0] = 0;
0 V2 z1 ?8 ?! D- _( d; d
# z M6 v8 r! c7 L- m1 G ?6 ~, I, x7 ^0 h8 [
for (i=0;i<8;i++)2 |2 n) ]( t! {% M" N j% X: ?8 G
{+ h7 H1 a, T0 j" n1 k" M) p& c
dispA[i+1] = (segR[num2]>>i)&0x01;/ t7 ~- n; c0 l9 k1 {) X0 ~
dispB[i+1] = (segR[num1]>>i)&0x01; 8 {6 c9 B) D2 R0 l9 ^6 w& y0 e
5 k1 B9 q' y" m2 j/ [3 e" { dispA[i+9] = (segL[num4]>>i)&0x01;
5 W+ Q: T! [5 E dispB[i+9] = (segL[num3]>>i)&0x01;
0 q3 n2 n$ T- c9 y# o9 d$ v1 v }, G3 H4 q8 i1 P; P" n7 p
+ N8 s, t3 M' |& v( z
% {( T5 r \3 \) ^: N8 e/ ]8 [2 S0 x$ t) h0 ^1 V: a$ F
dispA[17] = 1;
( | m- [9 O1 O& k D/ t f dispB[17] = 0;4 B2 A3 N3 a: `# T1 N8 N
* m5 N' j9 Q; _
dispA[18] = 0;' x8 X' }* I. v3 i9 @" w! f9 A1 P
dispB[18] = 0;' N1 G: ?; z* K' l
( m0 [% M% g9 E1 O dispA[19] = 0;
: M% v! h2 c6 C dispB[19] = 0;( B* X7 }+ j0 e0 M
- c7 f5 ]6 } v! M$ h) F- \ yCLK = 1;/ ^9 ]7 n& T/ K6 A
) @+ y0 ?5 p' c% {$ x
6 V4 O7 w* ]9 k2 d4 x# d0 A% `' r5 W
- m" D" j4 I' J/ m; R, T for (i = 0;i<20;i++)8 c' w; E( P4 m+ L" l
{
" D3 K: W" `9 }# A/ } yCLK = 1; {2 O( v% P0 N9 ~6 |$ z% w
yData = dispA;
, C0 Z' B" V) r/ | delay(2);
3 f* |0 @: z- G; k$ p* A if(i>17)
8 \' m+ e7 p4 L, W6 o {yDLEN=0;}" u2 Z' F `& E' `2 L$ ~& ~
else
6 J1 R6 h. b9 B9 R% u- @( o- u1 R {yDLEN=1;}
; q$ [/ R+ q& ^4 m3 x' t8 v! m
( G9 |- O# P$ L8 T$ b. y4 ^7 S0 n delay(dailyCount);$ S- V; i" F! G
yCLK = 0 ;
: e0 F. j: k6 z+ f) c delay(dailyCount);5 P2 K& z6 M5 }" d. j5 \
}
4 j, p3 a7 X( |+ _& _9 G, \, f# s+ j; h3 q( w9 y; b4 v% C
yCLK=0;4 ]. g% H5 |! `1 k7 O0 Y
yData=0;
) M+ i( i: ?9 E @6 O3 p. u: F5 L1 | yDLEN=0;& F) H1 z/ y- ^6 W1 Z5 w
delay(dailyCount*10);
) D+ E4 h3 a5 Y% ~3 |
5 v7 F/ `2 Z' R( _5 O( m
) C5 k# B' G3 [9 H% q3 d, m( d0 x7 O8 C% W; E7 A* M8 A- R" [
for (i = 0;i<20;i++)* p: E' A! `4 L8 ]
{
7 b# h7 Z, f9 C% ] yCLK = 1;
0 z) p1 R @2 ]9 J+ R9 T/ w yData = dispB;: h$ a! o( J" h7 c5 @
delay(dailyCount/10);
$ K4 r5 ?; t: W/ O7 N# T1 `0 N if(i>17)
& M+ t# G3 }: ]7 o {yDLEN=0;}4 \5 h' R. W* J- L
else
6 }7 @; g2 { d2 O- Q: r {yDLEN=1;}% w' n! m- {/ R, m7 }
! @# r9 c' r: [3 I
delay(dailyCount);
Y2 [7 |1 Z6 k! [3 L yCLK = 0 ;
! c0 p' e; J; {# B delay(dailyCount);( G( F. p* |9 c4 M) S. z4 `
}
, M9 L: S i5 q7 a% ~' z* B1 o; {4 v
yCLK=0;5 i$ O M- W; P: ^3 f0 z
yData=0;! y8 _' M9 a" ]) h, u2 {
yDLEN=0;5 x+ B, C4 w0 [: {# i7 O4 g3 N
delay(dailyCount*10);
3 x6 N1 I9 b! z0 \' L7 v}
8 `% [# g: F9 g
' x) e/ m$ E7 Z0 o( J9 w3 f# q5 p4 r
* c/ o# n* D$ @6 t
/ I& ^( {7 S( J6 [+ _void main()6 f8 u9 f: b3 [! \! x
{
! p( ?3 B7 a' x/ A% T while(1)
% J* h2 ^& {: d: X2 M8 ]5 t {
; I z, S# v D' x- W) L: H j delay(4000);
0 ~) R- _+ Z6 J' G. u5 L7 Y0 i disp(0);6 ?8 r* [. ?! V# C
} ) k8 H% q; x% k- D# ~) z
}
' \6 \7 y7 ?5 u
1 k8 C0 A- P4 ?' J1 x
' c; x# d4 Q9 s! i. i; {$ S |