搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
' X2 m" y. Q2 e2 p) {
2 s& W* s; a$ E" D$ K* G: L9 p8 T# b6 v' x& j
4 S7 [/ M5 M: }5 M( ]% K
. }; O% R1 z0 M; A) Z+ B
0 e) n; ^. Z; g) G6 Z
) @$ |5 T5 Q8 U! Ydemo 的代码在这里
% F# n; B0 P" l. c" ~4 J- u) z* u8 |1 _5 k% |
+ K6 v B+ }' ?7 ^9 w! M3 F: z
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
9 {$ n1 w' a& b/ b* _& q( d
- b0 K0 S" f3 E, u% Y8 }sbit yData = P2^0;
8 w% H/ f9 n1 v6 d! N' }sbit yDLEN = P2^2;
; j: J$ A h0 Tsbit yCLK = P2^1;
% N# S9 ]# ?- L6 g9 D0 bconst int dailyCount = 200;
$ r' a! }6 S* C9 k8 w
x* C/ g- Z" ?$ j
& A- `- G2 H3 A2 |6 H
3 j- Z9 u; V2 k' @: {) svoid delay(unsigned int i)$ U/ h6 U* h+ R5 q, Q- ?
{
% S: Q7 }& H u while(i--); " j: v+ `1 z+ ^6 x+ F) Z0 G- F C8 i
}8 o; `& v2 A7 ~) e4 E$ k
7 @3 U# j7 |; ^' Z1 i: }0 E' [
0 w9 c/ \& X2 k% I8 Y3 m3 U
void disp(unsigned int num )
' Z( r+ u4 Q( V {7 \' I* w{
4 x7 |; y3 O! \1 E. f2 {( c1 d unsigned char i ;9 Y6 F" {4 t' K$ L
3 m- ]; n' N3 d3 \# r1 w unsigned char dispA[20];5 o: g: J: Z3 n: R2 V5 S
unsigned char dispB[20];+ k/ ?9 T: g. x. }# ?8 k2 n5 ~
) a% i3 h( c! ]' A$ E G+ Z6 r" Q
unsigned char num1;2 }4 V# N: B8 V5 B1 S
unsigned char num2; 5 Y. r7 e; x$ I- O
unsigned char num3;1 H t* T2 @* C
unsigned char num4;5 V% n) E" N; o% L
unsigned char segR[10] ; //右3 p8 B, e4 u8 l3 c/ O$ K! E' r
unsigned char segL[10]; //左
6 U6 c% q* i/ O7 `6 W* n P5 L
' J2 @5 E5 O2 ]8 |, m& A; b7 V6 V1 r //左
! A4 X( F8 y* v+ ^ d segL[0] = 0x12;
4 i0 `8 m( X3 p- m3 i segL[1] = 0xFA;
1 u7 r4 x7 S; m/ Q1 z5 d/ Y, G segL[2] = 0x0E;- z4 g: D/ X, J1 A
segL[3] = 0x2A;$ ^7 h+ J! U# |$ a2 `3 A
segL[4] = 0xE2;
2 K* j, P0 ?( G) { segL[5] = 0x63;9 p5 |8 y& J, m1 v1 N& q% r" v* K" k
segL[6] = 0x2A;
4 ?7 G: B5 T! T+ g, o0 ] segL[7] = 0x7A;
' G: V1 d" y; E/ u8 R# C segL[8] = 0x02;
. |, x# o/ |7 }& m, \ segL[9] = 0x22;* m$ C( p0 F" U5 b% Q1 }
& k) f8 Z& @! }3 i6 m4 g& m
. l# F6 O7 n' a# j9 A% C6 a! ~; ] : T; m" I, F5 ?3 f; p% l5 U
//右1 M; a, P# t _" ~
segR[0] = 0x88;- A" ?% { G* z9 b. U
segR[1] = 0xEB;
& r' ]& @! g1 f1 k! k segR[2] = 0x85;4 N# D, {+ }8 z) C7 ?$ a- e e
segR[3] = 0x83;
' {. O' U% J _ segR[4] = 0xE2;
6 _. U* h/ D: r$ y6 i! q3 v segR[5] = 0x92;
3 a, r0 ]5 S R$ x3 b4 C. R segR[6] = 0x90;
3 U8 o0 p- E0 g' A) l" j0 R, L segR[7] = 0xCB;: M: ^! O0 J3 e- U
segR[8] = 0x80;& \6 B1 q3 a7 |
segR[9] = 0x82;& Z1 p. \" J( A$ Z$ x
* {% Y" X, [1 I% \/ Z 5 T; w8 j3 K0 d7 t7 L- R, M
num1=num /1000;1 k/ S$ J& {8 \; y5 e. Q) z1 @
num2=(num /100)%10;;7 a. V8 L/ [$ q, d2 f7 c" z
num3=(num /10)%100;;;
3 o. S! J, `) d: g. \ num4=num%10;
3 s; Q: ]* [2 E
9 j$ j$ ~7 e' S3 ^/ v& v9 X6 Z6 Y4 {) x r
+ d+ z4 v( S5 g% x* e, c, N5 U0 L
5 C1 J0 h ~4 \: n& d) B dispA[0] = 0;
' r P' w6 A7 g& Q# \7 K3 I dispB[0] = 0;
# m/ T- e& N8 e
# y& o" S' ?/ x& x) X6 Q& h& S) W: r# T# B% L& e+ S
for (i=0;i<8;i++)) J. v+ J) m& t5 w: R% Z
{
; v7 K: N1 k0 Y2 E# I' P dispA[i+1] = (segR[num2]>>i)&0x01;
6 L( f' }% ]0 v; n! _ v dispB[i+1] = (segR[num1]>>i)&0x01;
6 B9 n, |: P* |# k: u& ]* @$ j# F" v3 d6 V% _% ]
dispA[i+9] = (segL[num4]>>i)&0x01;
, n3 I2 [/ K# ~- n$ f# { dispB[i+9] = (segL[num3]>>i)&0x01;
. m# M' _: m: S; P7 a% F/ L }/ P$ x3 ^$ k3 _
) ~; D4 W+ G0 u: f9 u2 e8 i4 U
" i ~# f, \1 c: x( S# x
& Q8 x5 A6 {( l) A/ \
dispA[17] = 1;1 b0 n3 T6 z6 K$ q4 F, D, V& l
dispB[17] = 0;
9 P5 y5 `* r# h0 `7 H+ Y e% G
6 b# h0 V+ O/ C; ?- o8 k dispA[18] = 0;# V0 J" @+ f q @0 d' b2 y, g
dispB[18] = 0;
8 M9 G/ }2 i& W4 x$ h
8 S4 z7 M. ?3 D" e dispA[19] = 0;
0 `; n1 ~6 B M E+ r$ o3 ?- U dispB[19] = 0;! I, ~/ q5 k B% o
4 f6 {" d$ J9 \+ A
yCLK = 1;
; G/ s6 u% l# k5 S/ {) Q; K% y" r* R2 C+ \, {1 J( q
4 T o( t. W* ?7 f% C- P
8 _6 k3 ~3 E1 c! `5 r for (i = 0;i<20;i++)% s! v. K/ f0 K) o# }- d
{
& u! h5 @, p9 Q9 o) v$ c8 L2 a yCLK = 1;5 @4 a/ W7 h. P& |" I: S
yData = dispA;
! }3 L3 Y/ l6 M8 ^ delay(2);
+ k/ Z7 b7 `6 k! N8 ?) ` if(i>17)
8 C% N* ]2 W" H% ^+ c" O8 T1 ? {yDLEN=0;}7 p# \$ W) V( p2 q/ n* }) U9 R
else: i, ~; T! C; j$ |
{yDLEN=1;}
- h: R5 h* v5 p. T, v
% f% K" K4 r* _. m: i: V( D; F delay(dailyCount);
: S8 x% q D5 a2 K: _ yCLK = 0 ;+ Q5 v! j& c. H3 L0 i
delay(dailyCount);2 s& y2 p8 n3 a+ H8 s1 {
}
7 t/ ]7 ?- i- k7 s0 ?. C$ C/ a: j5 M V
yCLK=0;1 [6 o+ M6 x7 C( G0 E9 j
yData=0;' x) _4 w" G0 ]( G$ U
yDLEN=0;" _! }# U' k; O: c/ R
delay(dailyCount*10);% l" ]7 `! l. O3 ?( i* }
5 A( e# {$ Z2 c& y
5 L, c5 |& T" l) Z1 M* F
0 n2 Y1 Y7 b7 Z! z; o9 N) k2 ? for (i = 0;i<20;i++)
5 I6 J" @) `" r' q9 J {
+ C8 B. l& f( }( }4 i yCLK = 1;+ `9 i5 S) u4 E$ A) G ?# V6 u$ ]
yData = dispB;$ W) d0 H' ~2 z
delay(dailyCount/10);3 D+ A4 \8 P- q8 @: z; x
if(i>17)! a( N" ^$ w! B( s
{yDLEN=0;}4 @9 j* h/ c, _- a; ]0 B
else
5 W1 g5 ^" c4 @: q& L/ ? {yDLEN=1;}
" B9 J. u8 M: ~( a, B3 X$ p
9 T8 v: e. L' s& t I delay(dailyCount);/ R3 E. n/ `8 g% R: M! p
yCLK = 0 ;
+ Y, \+ J# r" g+ M- N! X delay(dailyCount);! E' L! b: T+ E7 S0 S7 o% u
}
, Y0 A* O( H) B
+ l, c% x' P" u yCLK=0;
1 U* A. X; P" {# K% r, g! i yData=0;; b3 u; o5 z" L9 W" v/ W( [" r
yDLEN=0;, X0 A) r$ t! E6 O1 R
delay(dailyCount*10);5 I$ D8 f# N. @* P+ U* b! E/ E
}
1 t2 m# b" Z# g
0 J) |2 N7 I: I' z5 e$ x: {& Q8 r- ?# q
) w7 E$ c+ t# G- |1 j# w* }9 L: s* v
void main(). k$ A! F8 u" d$ i) v1 }+ g" _
{
' U& e9 Q1 [3 y+ G/ |( i while(1)
& @8 e5 E) h* E2 B' t- R, X {
( ?$ L- w+ [/ n E delay(4000);1 i7 i0 e4 n0 G$ {3 B2 D8 ?
disp(0);% X6 T) ^& z6 U1 j" M! i
}
- q. C/ x$ V% P}9 k9 K6 {9 M3 [; E) f2 b
. R! o% o2 V. t/ H- J
& g$ i9 m( d' O! X |