搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。$ u1 m4 P6 b6 C. r
- q R6 o8 Q1 U+ U8 `$ P. w: p
T- t# u# ]2 _ g- s
$ W- U$ K* y( f/ r& m6 F
& Y4 W7 M$ S6 a9 \' R. b, K0 n
0 T& q+ J3 l# \8 W- q4 s# b3 W# p7 |8 f) W3 s9 V$ h! d' X
demo 的代码在这里7 Y3 `. m% p4 v( ~) R- j
* N. e1 C7 _. M/ `
' ?# b% q3 F8 T#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器" _( }4 `) ]& Q9 ]# T
4 W- M5 ?% R+ E: A5 | U
sbit yData = P2^0;$ U/ {/ S- b6 q0 E; f
sbit yDLEN = P2^2;
) L5 l5 I- J) z4 Psbit yCLK = P2^1;5 ?4 I+ p4 k0 x, C* U
const int dailyCount = 200;! C4 W$ h7 G7 F* t
' J T# }4 I: I( ?4 F$ [: N8 f! i+ F; G# |6 `, Z4 b) p
; c0 l4 H/ v3 F& W1 Z1 ~: m* Qvoid delay(unsigned int i)' e/ Q/ o7 b Q. |* I; s4 t
{
& c- o( J" n: K9 @* ?% l while(i--);
# ]4 P# T8 ~' m: t7 f}+ m+ R w. V' w$ j
' c0 t, g3 X* X. l
9 o( Q( G" R6 e' G7 e( Jvoid disp(unsigned int num )0 f4 }* U9 v& v
{
% ~/ u8 A+ g" j0 W" R unsigned char i ;- k' F# Y0 G6 z: W, r
8 }, A9 M2 s( G. F5 V1 c: _3 w R/ I
unsigned char dispA[20];+ q% g: v: z: {6 B5 w
unsigned char dispB[20];
. d. a: g" m$ p3 B: ~7 d, V: e' g- g! O+ Z1 ^
unsigned char num1;
3 U2 ^+ F& P7 P) e unsigned char num2; ! y: J& E. B0 I; ~. g
unsigned char num3;2 u% s. l$ u, M! [7 a8 ~4 N+ z% Y; ]
unsigned char num4;
6 H7 c, Q6 A) e4 K# ~- U unsigned char segR[10] ; //右1 s! F$ [ v0 S0 L! g. d
unsigned char segL[10]; //左
: d7 O2 m* ?: Z z8 o: P6 _
5 D, {9 q" n+ t# j //左
7 |, O0 ~) ?4 ~9 \& k& A) `8 v5 g segL[0] = 0x12;
+ c7 n1 y* K# G5 m9 m$ J& i- J, J segL[1] = 0xFA;( P4 U( z$ F8 w/ V) Y
segL[2] = 0x0E;
! x a# [# _: Y! P0 Q* s segL[3] = 0x2A;
2 v v: Y4 _: R( R segL[4] = 0xE2;- z& v" v: I$ ^' x$ G$ E$ j
segL[5] = 0x63;1 Q1 k5 |7 H2 |7 }. U
segL[6] = 0x2A;+ j; i3 a2 x; b% l/ |( J# C8 U N! C# m
segL[7] = 0x7A;4 T3 a2 t) V* u+ m4 }1 L- [" _+ r, A% v
segL[8] = 0x02;
6 }& S0 ]0 |) T: X2 j segL[9] = 0x22;: G. z9 S# g6 W
, I( h2 i# Y; y% l2 M- i3 P
r/ M" i6 ^3 K% B: k: }2 r' F; O 6 E2 l$ ^" ^' N/ R
//右5 A1 _+ x, |* z* a+ g9 _3 B
segR[0] = 0x88;
0 A8 g3 O9 l9 M. ?* Q& v# d7 w segR[1] = 0xEB;
$ `6 k2 f% V& D segR[2] = 0x85;( Z/ u% {# P2 {& _1 q* {
segR[3] = 0x83;: X3 L# W8 W3 s/ {4 q
segR[4] = 0xE2;
* w( m: @" p4 Y# g. O* e5 B# g segR[5] = 0x92;
, R( f& H6 l, b( E segR[6] = 0x90;
; C# [. }- z$ S, J. q$ h' U" B segR[7] = 0xCB;
$ V; g7 T! Q; F1 ^. H7 B7 l3 l segR[8] = 0x80;
, f7 ]) @% T- v segR[9] = 0x82;
/ Q! W4 M# F1 \* P9 ]5 @5 }/ s" c* k/ N a0 ^: ?
" W1 G- w. r8 y8 v0 n5 i- A# K
num1=num /1000;, Y' z9 A: C/ ^0 [5 u5 p
num2=(num /100)%10;;8 A1 p1 G! I, p# g: M, y% X0 G2 d
num3=(num /10)%100;;;+ v4 ^; m8 N5 ^) H+ j
num4=num%10;5 w. u8 m, A( b& k# |' }6 X
, {# ]+ R% o8 A" ?- E' P+ u9 J# L5 U; h% M
0 g: L, D* V6 i; t
+ p7 D, e; [* u' Q7 B: E$ a' {
dispA[0] = 0;9 O- o) K; z4 Z2 l3 N
dispB[0] = 0;
2 e: k6 \% n. z6 r9 n
0 J8 R" O) W! z( v6 b0 }) `- J2 G0 k, d
for (i=0;i<8;i++)
0 ]4 s$ R; ]* g7 H a4 \ {
; j* e$ j5 Y& E0 v# f9 Y5 o; l dispA[i+1] = (segR[num2]>>i)&0x01;
* C/ ]7 v3 ]7 |: n' w dispB[i+1] = (segR[num1]>>i)&0x01; . x0 H; a }& j" j0 M2 W
& a+ x& e9 k; d$ } E* [4 m2 L" C0 T dispA[i+9] = (segL[num4]>>i)&0x01;
% J' d i1 U* D9 ? dispB[i+9] = (segL[num3]>>i)&0x01;
- ]3 }6 R* l0 ^# j0 ]: L6 o }4 D ~% `: V2 w x9 D9 K$ o+ S
5 v2 ?. }6 I4 M( e4 n% z" B% B7 j' g) X
3 M$ U" Y& Z- ~1 _
dispA[17] = 1;8 e4 q H# i& d K: |
dispB[17] = 0;! f3 m% V* n9 G" U
- n% n! @" q5 Z0 M e$ G+ e2 O: {& a
dispA[18] = 0;9 Q# O- J4 L- N. K% L; A. K
dispB[18] = 0;
: c) p: N& p! D; L9 X( U1 T$ ]3 W; T* S" _
dispA[19] = 0;; d% `3 g0 G/ h8 d3 s
dispB[19] = 0;: l0 w- b7 [9 l3 M. {. t5 {4 \
- |+ l8 u( `0 e9 ^; J6 F yCLK = 1;, F/ x& j x9 ?- u* Z* O& F
: X# ]; O* e0 q% I
5 Y( {6 V. P2 v* Y. @9 E, B0 X( |/ U" ?
for (i = 0;i<20;i++)8 q* ?0 q7 [$ z: Y' b# z
{5 S1 Z: f' F6 b6 w& J
yCLK = 1;
9 a& k. C ^8 K% J1 m yData = dispA;
$ [5 E* M$ e; ?$ n, x( y1 ? delay(2);0 ]9 j& S7 f b& u, }
if(i>17)
8 `- [# [% i6 y! B {yDLEN=0;}
% p9 o, j$ P: @ else
9 o6 G1 c' A0 |3 k {yDLEN=1;}
x- @+ P1 D+ F3 e
- {' k+ T/ J( g1 f, |+ v# f6 r delay(dailyCount);
& I: C4 |2 X5 M$ n0 l$ h yCLK = 0 ;
) Q) H$ y' h3 t7 ^* o3 R9 y delay(dailyCount);# S8 C5 x* Q8 ^9 Q% K! g) Y# m
}
! C* y5 f9 Z; _' L/ A1 v, _8 Z2 s7 M. e: K8 Y( Q; j8 ~ |
yCLK=0;
+ Z. A) P# ^& m0 Q4 r yData=0;" h3 s( Y2 A1 e& q* P1 d, d* j& v* H
yDLEN=0; l; a5 b) Q* w8 p" G# u( e
delay(dailyCount*10);
8 I/ P/ {0 P I( t
2 o7 y) x9 t& `3 Z# ?$ _0 H+ x9 X4 M1 A
6 ]* ?2 X% h1 H. K
for (i = 0;i<20;i++)
% f! ^. A7 w, |; w1 B+ t( _ {
. K1 S- R/ ~6 W yCLK = 1;
( J& M* \. Z* }" R yData = dispB;
% w8 g S& ?+ y( l. V& h delay(dailyCount/10);& e0 l# w) w7 n. ^. P* f5 L
if(i>17): f2 `# h, ]+ S/ M( z
{yDLEN=0;}: d; j( B; v. W$ B6 q, j
else
, Z) x0 m( \; |: B& |) @( n; L" t. d {yDLEN=1;}
6 a B9 ^$ n+ K; p! X5 [, S, m( |8 G, f+ Q& A) W J- S9 ?7 k: |
delay(dailyCount);/ N8 }% D' D, P1 O
yCLK = 0 ;
: h6 L5 ]- N) Q& ]: A0 g delay(dailyCount);
* E1 b) R. z( F; [5 m, M }0 \4 Q! \+ |! c- @* W" V- J
' ?9 w" l& }9 t( |, R2 Y9 Y8 C
yCLK=0; n# @4 O \8 ]' \
yData=0;( `' L9 k* A# p1 K( q- G' b: ^" P1 c. S
yDLEN=0;
3 @2 M4 K1 J `. R5 M8 }: j delay(dailyCount*10);9 p& z7 ]2 U3 O# {8 A0 O; P* A
}; \; [) H1 F1 U- s2 M" |
+ Q( B5 C+ e% w/ }& m3 S
/ D9 g( `3 a) v+ f) a- f- G0 E/ Z9 v G" p' W: F0 ?% {) E
( P1 @5 E% P3 a( `& `* o/ E
void main()( p, Q/ ]9 a) Y
{4 ?( h, V. N' f
while(1): h) Y* y+ A( v& H; @
{
- q- H9 l& M) S2 B. ] R |) \) d* Y delay(4000);
. ^) }" U+ l, f, k9 G disp(0);: h/ ?' O) `; D; e& F& x: `
}
( D3 ^8 u: z v8 X; t! @}& u# t; E( m6 x2 b; X( I2 c* }2 o
! o$ R- D+ A. Y `8 T1 C4 [( A
; s2 Q9 c' x+ W5 E* s+ ?) ` |