搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。# J' a) I! ~4 ~0 @
3 h4 {& m% m/ Z' J: u$ z- C1 \6 c) S! ^* a$ j6 T$ x0 f3 F
+ [0 q% T3 z, y' s% E1 W8 a! F3 c
9 B( h# z% }6 ?! s& i4 e
' U0 @$ B9 S9 u
! L! [* u) f+ `0 \7 B
demo 的代码在这里# F. R9 c- y8 x- D/ l8 k
7 o# \: \: @' i& q- x- a, y; V7 @ i8 o8 e h, c5 m
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
5 b/ s5 U) r' {0 O9 a9 a' g- b! U/ ?- e$ {
sbit yData = P2^0;
0 J* R5 I4 |% }sbit yDLEN = P2^2;8 L( {) h0 U9 L2 K
sbit yCLK = P2^1;* c" m$ r0 r$ W2 V* D' p. m
const int dailyCount = 200;% [: g# G" ^+ U! ]( m
- C1 ]- u& L& d" P# b1 C$ ]
" @) w i4 g/ P) _! t E+ x( i X9 o# k% _6 x6 N
void delay(unsigned int i)1 L) V8 p, E8 I9 ^3 T @! G
{
/ v& I( h) b4 V while(i--); / i. x3 u) T9 I# Y1 E
}
& d' {9 \* ~* ]; S y/ `( A
! l6 @% `8 T& ]- t
) |( U( S8 W* Svoid disp(unsigned int num )1 J* b' t9 Z, w R
{6 d- H' X$ K8 z& ?' Q3 S" [8 V
unsigned char i ;" _* @2 c( ~1 z! d4 J& z/ j
8 Y* E; W+ {3 T8 @3 d( A& Y! ~
unsigned char dispA[20];3 L- S7 w" c: L* k. @! f0 E* Z/ s7 E
unsigned char dispB[20];8 { y! r4 a4 i4 S% q0 c' k
" N4 b% H! ^0 ]* \+ i# K) C2 T* B
unsigned char num1;0 l/ W T! j6 n5 a% u& b
unsigned char num2; * K% F) ?8 \8 J& L5 [. @
unsigned char num3;2 d- ~( D0 i7 f) P8 B6 w2 x$ K6 a( n* w
unsigned char num4;) ?; v$ B9 Y) g
unsigned char segR[10] ; //右
4 K% U h: y$ f# E+ \ unsigned char segL[10]; //左6 D+ m+ R% i4 z4 e Q
9 d1 `' s* W/ K9 m
//左
2 O/ @; t9 ]6 p% o8 I segL[0] = 0x12;# w; X0 C4 b C4 n
segL[1] = 0xFA;. s1 P. W9 j5 n+ _4 U
segL[2] = 0x0E;$ p) @- [% P; g4 ?
segL[3] = 0x2A;
* k: y1 E9 @; E0 O7 N+ P0 _ segL[4] = 0xE2;
; N) \: j! i# V: @ segL[5] = 0x63;
5 {8 ?% q. f, Z, F segL[6] = 0x2A;
8 Z0 t+ @& Q t& A segL[7] = 0x7A;$ k8 }- z* i% R1 _
segL[8] = 0x02;
$ T- L5 y( v; ^ segL[9] = 0x22;
" i. {. j, @; w % f3 z/ o1 b ^, a, |
3 D1 j5 z7 W7 y% z% a* W2 D
* K6 Y: V" T# U" `0 L0 u8 e" X
//右, Z/ ~3 a1 n+ s
segR[0] = 0x88;
5 A* n6 ?* c6 Q% A segR[1] = 0xEB;; S9 M2 Z0 ^9 H& i: z$ B
segR[2] = 0x85;
9 T. |; N3 s O3 U" c$ Z+ n segR[3] = 0x83;0 x: E8 S3 g! j1 S
segR[4] = 0xE2;
+ C( v% g$ B) F% y ^- A' \% i$ s; [4 k segR[5] = 0x92;- E7 q5 U: f3 ^* t
segR[6] = 0x90;
3 B, C }2 ]- _, [" \1 R0 m segR[7] = 0xCB;1 o; f: K0 g. T, y4 @/ H
segR[8] = 0x80;
% M# ^! Y4 ~1 n segR[9] = 0x82;
" s: v5 p- K& U1 J, J5 p% Z5 ], ^$ k) C
' `9 r. o2 W, |; _1 D& C num1=num /1000;' i3 L- z* |' ?' s3 t2 O
num2=(num /100)%10;;
# _' e; w! i! W# P8 e5 I- e, G num3=(num /10)%100;;;5 X/ J9 l# A* P1 L7 c) }% y
num4=num%10;$ H; q" p9 f& Q% y
0 u( |4 I+ o- A1 g4 Z( g9 A2 \$ m
% h$ N: {" R( `% |( S' e, Z9 \ c: m3 b9 y
8 h; e2 O/ o" L/ ] n dispA[0] = 0;
* y8 t7 I! p# W( Z dispB[0] = 0;- L& d- ?6 U+ _* T, k
% b* J$ [; I* M& w( Y2 o, N: \. r+ M( g v$ Q5 J S; \& d: D/ i
for (i=0;i<8;i++)
8 ?! @6 R* m6 Q# v s {' a6 _4 ]+ ? V9 Z
dispA[i+1] = (segR[num2]>>i)&0x01;4 |0 b3 o6 t5 M( s
dispB[i+1] = (segR[num1]>>i)&0x01;
# V+ y; P" Q, W" n D4 u3 P% n' h5 J) g' K, \1 _5 S$ x+ o
dispA[i+9] = (segL[num4]>>i)&0x01;0 [3 f; C/ k, N5 y, j7 v0 U" x
dispB[i+9] = (segL[num3]>>i)&0x01;) n) d. J' @9 ]9 [0 ^8 u& u
}4 e4 z: C/ Y9 x% M, z$ X
7 l4 I" o3 N% H7 y, A
! S) T$ K! s5 {2 |! v7 D$ l8 j+ L
! S2 {1 P$ ` H& k dispA[17] = 1;
6 A# U: [; M i. C; _1 O, Q dispB[17] = 0;# \+ ]- I) }" y& P+ x9 w
1 {* F& ^; b* g
dispA[18] = 0;4 i P$ W, d8 D/ R6 e0 B* n9 x
dispB[18] = 0;
2 _1 t7 u- {3 R2 R( ^1 n8 |7 n6 Z& {' b5 d$ ?% x
dispA[19] = 0;
/ q$ `, W6 S% V3 u, D1 d0 x dispB[19] = 0;# ]' q& e# W, a2 H+ ?% B
9 \2 x( P5 {/ B; X- S5 G
yCLK = 1;
+ U/ j0 ~$ J9 Y
- p( Q# d! U" W+ Q2 U/ G$ q" Z0 W+ a/ Y
# J; |4 w& ]6 |' o0 W9 x7 u
for (i = 0;i<20;i++)
- P: c1 c, l* r9 [# Q" m3 Y' P {5 l5 {7 Y! \! D( ^; g
yCLK = 1; o* c# z5 r- Q. r
yData = dispA;+ i8 ?- a. e5 K [
delay(2);
( Y' h0 j! V' ^' P2 l& e if(i>17)
8 { B. y, G# \* F9 A l1 F6 O {yDLEN=0;}
7 ~ E# j% ^* n: d else! b4 z0 U9 R6 o% T
{yDLEN=1;}6 h) z; Y7 N7 i/ C
w. P* ]: b2 r8 H2 i8 A1 T delay(dailyCount);" g7 [- j* d6 m0 ?* f6 e. K% j
yCLK = 0 ;2 |- M/ q- M7 H6 z4 g5 q" `
delay(dailyCount);0 a1 \7 a6 ?8 p- J& | `2 `8 ^
}( j1 }, m. C- U _' D1 h
; z+ k K- A0 A) Q Z: {! a( l
yCLK=0;* O. F H, W" H$ {0 g
yData=0;3 v6 W d: D6 H7 @: }* z+ E. m
yDLEN=0;
4 {8 V- x' S, S& l' t delay(dailyCount*10);2 w3 x) a' _2 S4 A& Q$ s
# Q/ |4 b' a Y/ U1 Z$ ?
* B% _+ v6 }$ h3 w+ ~* L$ o1 M. B2 V: D9 {9 `
for (i = 0;i<20;i++)( ?; b/ B6 o! S8 [* `% H& J
{0 o" U) I9 a! C# k' |
yCLK = 1;% i, H9 E+ q, T; |# ] g
yData = dispB;
. N4 ?4 ?1 b* o* v- W7 t delay(dailyCount/10);
: n6 o* ?: A, ^' ?# m' A3 i3 p) v if(i>17)
# d/ V. Q5 `% j" j3 d" o9 s {yDLEN=0;}
- A, p3 U. p3 e else) d; m6 I& g- ?7 G6 n. w
{yDLEN=1;}& Q' T. r% z* D
3 s5 f6 @ m1 G" p @
delay(dailyCount);
$ i1 F2 W+ I) @* S- Y yCLK = 0 ;
! M/ y4 f9 n/ \ delay(dailyCount);
2 B5 f7 i" K& x2 B1 t }, B% @% j' B& l! E- q+ d5 {6 E) u
1 C: ?# G( z* m& _4 U/ V
yCLK=0;
1 r( _9 P& P- n* w+ J yData=0;( a* a6 p: F& g$ L0 E
yDLEN=0;$ p: {+ r% o0 S; r
delay(dailyCount*10);
, U3 S$ [( c B$ m}3 E& O) K; Z6 b
0 w1 S; Q0 k0 Z7 b" g3 @) u4 |+ U
* \; [) D' T3 l( f/ W/ `7 n+ C! Q0 r- f$ b* Q
3 h6 O y Q: h. B+ Y" R
void main()( l3 O+ E0 E2 p3 m5 i5 D, r3 ^
{! r5 \4 T$ |3 c; Y
while(1)* ]( X0 D2 }% T! F
{
% ~1 P8 c( T$ A delay(4000);
( Q; v3 d+ y1 O5 ~+ Z2 X disp(0);
' Y+ d1 A4 t6 C7 X& g9 S }
9 C% a0 m) Y) `- n% @, U}
" a: P/ l+ X- q9 t7 {
8 M# u0 p: F( Y# U& ^4 F& r8 O2 N& o
|