搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。% U }/ Q- J) w. f2 [
. V$ z: I) }2 c7 H1 t! M- P8 u' G, U: M$ H6 V I
& C+ I" U$ g& q4 L
! d, A' y$ `8 F" x; C! K% I1 d6 ]8 n3 m: B2 P' }$ F$ }
) h' g4 D( B! X) q1 P+ ]demo 的代码在这里
" v" W, n+ l; o# G: q( J/ `2 ^1 S
! ~& T8 [( P) A: |( a. P
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
0 [; |" j, D4 q1 n6 G, p8 K. s2 n# u! B0 |' K) I8 }! w/ L( P
sbit yData = P2^0;
$ D7 [0 m, e* Q' N$ lsbit yDLEN = P2^2;
! R2 j8 ~- G/ A s( V, z* csbit yCLK = P2^1;1 o$ J0 R0 Z1 U# |: e
const int dailyCount = 200;
7 o7 @& E3 \! `1 q6 x
. \3 S9 t& T4 Q" c6 @" p5 a% [5 E7 l% Z
* a4 n( m0 k4 V. P3 x
void delay(unsigned int i)
# v0 X" a2 b2 @9 Q7 B; y0 S{
' q3 Y0 T8 V% ^% ^9 V2 B, f- Q, g/ B0 F while(i--); 3 K0 B1 `( X2 w/ u% I' C0 ^3 Q
}. Z" v" H/ ^6 c& W5 c4 m# r
7 y( e2 |: Q- K% _ m# ]9 r& r* o! t: D: k8 y- x6 o
void disp(unsigned int num )4 E6 F" r+ C; H6 Q
{0 f. w } |, O6 U
unsigned char i ;2 _& j. _8 \+ d+ }( ~2 q7 r4 K- e; W
% d& f. ~& X' r5 z# A. l0 `2 A unsigned char dispA[20];
& ]% \) q* x: a# v3 x6 b) H* ?& d5 O unsigned char dispB[20];
$ Z$ g5 X _3 s9 h' t1 ^+ C
, h' _, J1 p' t. U8 w: `( M unsigned char num1;, g* h! F7 o" E$ X" N7 J
unsigned char num2;
4 E6 ^& Z7 C* G unsigned char num3;
/ u% \6 R$ q$ s unsigned char num4;
3 ^! k5 X: S4 E, |- |+ p8 Z unsigned char segR[10] ; //右
% e# W( C# a1 ~3 u3 u$ d- x unsigned char segL[10]; //左% w# R% K! L0 p
% H( Q& a1 n N% f5 f
//左
2 G3 [$ z. r# @8 g: W segL[0] = 0x12;
6 v$ d! g H# z/ E segL[1] = 0xFA;
* G, _+ M4 ~- e" x* S segL[2] = 0x0E;
& g5 g' ?! D* O6 {8 C" q9 w% Y! c! V segL[3] = 0x2A;, q* |5 D+ W; Z5 V
segL[4] = 0xE2;2 T) O& T) W j2 M) p
segL[5] = 0x63;- ]$ _& s) M2 J K
segL[6] = 0x2A;6 s' s3 K9 w `3 R+ @1 H
segL[7] = 0x7A;$ s3 @/ q2 d. j' _5 O- U
segL[8] = 0x02;
; ^0 p! {. E" d! d, k segL[9] = 0x22;
. s( O- ?6 W$ u* [3 l. ~ $ r( P( X$ \# f8 ^: Q
# k' c! e, q$ \+ \) G X% c3 J" k
/ z) V C' y' K7 U) M //右# ~0 d1 s# N4 X6 \
segR[0] = 0x88;! F0 N# \, D- l" Z2 v' W
segR[1] = 0xEB;* `. w9 u$ Y% c4 b3 T& w W
segR[2] = 0x85;" u; _9 q n( A% c1 C G" A
segR[3] = 0x83;7 ?& N1 ?3 v1 f0 Q: u9 h3 l+ S
segR[4] = 0xE2;
! d9 i" c2 l6 e( q( o" K% E segR[5] = 0x92;
" _3 |; a& w) S/ g segR[6] = 0x90;
6 Q( v# Y7 R( R segR[7] = 0xCB;, k/ Q' ^- e$ j d! _* N6 a
segR[8] = 0x80;
2 \9 ~% `' L7 v$ s" S. j$ O+ z segR[9] = 0x82;4 @! X4 _6 ^, j* K1 o
$ p4 K( I! m( D0 ^
$ p: O0 p K# V- B0 z2 A* A% h
num1=num /1000;1 x R! ~2 S- w! u! k# A
num2=(num /100)%10;;
3 A: m( X1 }$ J. S0 ~7 a4 O! N num3=(num /10)%100;;;
4 E T+ s* F% k/ N6 u num4=num%10;
; I v8 |& M! c/ q+ D( R: p+ K2 x/ P V+ _) A
- r. d& h- i( ]4 [0 Q- A4 ]6 o- Q Y5 ]
) A; E2 i; @" B$ v' U. x% x dispA[0] = 0;+ W( ]8 a! y6 Q3 r
dispB[0] = 0;
; U; e7 s% w4 h7 K) @+ C; [3 U6 v# n( W/ p- w( S) v- e6 |/ x( F
; c8 c; t" ~8 ]; D! o: D2 W1 Y
for (i=0;i<8;i++)
2 z4 j- V( G' s0 R {5 z, C6 d' _- a1 Z" [ ~
dispA[i+1] = (segR[num2]>>i)&0x01;$ X3 p2 Y; g; _
dispB[i+1] = (segR[num1]>>i)&0x01;
2 q& @! {( m: G5 Z. i
. Y$ U! d* H6 [. O8 W dispA[i+9] = (segL[num4]>>i)&0x01;; k/ M! m: F+ w" r- j$ R, }3 {# Z
dispB[i+9] = (segL[num3]>>i)&0x01;
# u3 ]8 s# v, K1 H% A) ?" I+ j" X }
- i' Z! _( ~( `; f - A' N6 N) N: q7 x: h' |% o
6 Y1 B# k: M! x8 b, J+ q$ P0 R% c: K' M2 P2 H$ b' i2 s
dispA[17] = 1;
3 [5 z, n" f+ i. T% W6 h dispB[17] = 0;
$ i/ f2 V0 b$ T+ j! C W1 S9 }* Q0 y+ G- A) I: B j% ?8 X0 G
dispA[18] = 0;
5 R" l/ A9 X& O& { dispB[18] = 0;
8 n6 M3 A6 J. U" J" _
3 u( x2 k1 [2 Y% J% B dispA[19] = 0;0 y; l" ~5 V- D* ?' K! w
dispB[19] = 0;
8 i! [2 R/ M; _/ z' F3 h0 `1 K+ A/ Z( o* L+ L- M& L
yCLK = 1;. V8 B& [. C z8 |; r, V2 y+ `
. I3 d2 }+ T- a. C0 E1 J3 o
; t& ]- G0 g, b* \
, H1 F2 r5 Z; G& F0 O( ~ for (i = 0;i<20;i++): f& Y. _# l9 a9 k
{
+ W0 N8 h/ R' t& i d yCLK = 1;7 U, ?* y$ d1 C) N) ~" o7 p" ^: S
yData = dispA;# b8 P& m" _2 q0 H
delay(2);" x8 z/ j: X) a: z0 B/ _ V
if(i>17)& Y) ^: s! h1 b+ ]5 X* Q: N/ @
{yDLEN=0;}2 \8 v) D8 {) Z
else
# _) w3 ?3 a& c- n {yDLEN=1;}/ N o$ _( \4 ]) t6 H; w
; n( |: S) ~& ~
delay(dailyCount);
( F9 }; W: F: p9 y0 j$ X6 a yCLK = 0 ;
3 {. x% u6 Y6 A+ q. h delay(dailyCount);, o% c- F/ N6 y- `' _" t9 W
}
- l8 X% X0 Z# s* k# C; q+ u4 p) \0 `( T8 U' q- f6 e
yCLK=0;
P/ H8 p) D2 }: B; T' Z% f: k$ K yData=0;
! J8 E- a8 G0 v! x yDLEN=0;
, R* _' }; S; Q q* k delay(dailyCount*10);
) ?* ~. e( K6 |$ t5 H
" Y- s5 X7 m T9 c+ v/ N/ m; ~
3 b" W3 L! X- ^* s' A
for (i = 0;i<20;i++)/ z5 O+ V4 V e: W/ Y5 k6 D
{ o0 S- d1 O* D. Y9 P. K
yCLK = 1;
* D( i* p8 t( L% ?9 p# \ yData = dispB;
9 h" ~8 r' G1 r* |' o1 M( O. K: j. i( A) Z delay(dailyCount/10);
7 W9 c! M4 o' n. Q if(i>17)
1 B- V Y6 c. x$ z# Y {yDLEN=0;}
7 {6 i7 b% f" z+ X( m else
$ _. A, y! C; F$ X: c {yDLEN=1;}
. N, c% l* M" Y' }& f8 T9 V" B( K+ i; F3 ^
delay(dailyCount);; Q: b, f% n$ n
yCLK = 0 ;1 P+ D3 e; t: Y7 h7 W2 J- \
delay(dailyCount);
9 `5 k( c5 t' s- } }- ]$ R0 ^0 b, i9 u% V9 D$ C
- C, y1 f" B; a, ?' D. r. e( r: s; M yCLK=0;" Z* ?' }4 B Z; P' d
yData=0;1 V# ]* A3 X% J% J+ z# m$ s
yDLEN=0;; {& _" r( G; @% a; e9 _
delay(dailyCount*10);5 B% `7 L7 L- r0 \% y5 c
}8 t. k4 B$ s% D+ }" ?
7 e6 [& r1 i, R$ g+ o. l) [. V0 O5 Q. c6 ]
- ^. u0 I$ i8 ^' p2 `9 N
; o, ]* a! \9 H. `void main()
% H3 k* Q F" s{
+ Y( D" A7 D% u while(1)
) Z$ Q3 d d; i" `: d* e5 i {
9 N# A# }: P% @7 j delay(4000);
0 J8 ?/ {8 G4 W disp(0);
8 I) o. J; Z# m* {6 I# T& ? } - d# ?; n9 B4 p
}* }0 {2 E6 R4 V9 A- [/ O
1 W1 b# W# u+ t
7 v/ Z5 Z$ l# H1 M' ^' E! ~6 h
|