搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
% r; O: e. G7 A% S+ o% a- I' v$ I1 L3 }! v4 j' Z7 i W
" R) L4 q6 w, U; T
; p1 P3 U: k7 _. Q
- M S, c* c Z1 C+ L7 Q! D% o- t' \; [$ M" d" N% _
8 M9 l1 @$ W% e( ]5 U7 ^
demo 的代码在这里
' `6 @7 q9 z1 `- q2 q1 ], n2 \3 l7 C. `) @9 M
, f+ T( L, h0 i( W
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器# P7 F+ S) f5 f0 P: k: H
+ p+ R3 |. C, e/ G: O$ U2 o; Fsbit yData = P2^0;" Q2 \) l4 N5 A/ }, T
sbit yDLEN = P2^2;# d* H! c1 G. V5 w' @/ C
sbit yCLK = P2^1;
9 t3 S) { C( y& @( v9 m; S$ b' d, wconst int dailyCount = 200;
/ E- B* ^6 \" j$ a$ u4 a; k7 l0 j7 c2 `/ ?
4 \( `0 q# y+ U* P6 m; G) y3 \, D6 d/ w+ I1 o0 Q
void delay(unsigned int i)
7 n4 g3 I1 R* X) y& V# H( M{- t& v. A% H o5 n0 ]1 b4 H
while(i--);
0 A8 H$ _! k v4 G8 G}0 g. z8 [" {1 l t9 Y, U2 Z
- F" ]# h5 E* f0 g$ N- y2 U s( O5 F9 ~7 J
void disp(unsigned int num )
' X4 e* h8 m+ q$ `* L& h" y y{7 z% ^, o) g) O
unsigned char i ;
0 T& A; d0 e! [4 S3 V5 P9 e7 p, |, \& L
unsigned char dispA[20];
: K9 l6 f, X! T+ C0 U5 D unsigned char dispB[20];
5 n- c- T4 W' @1 Z
! U7 H4 t# E: {- X unsigned char num1;
" r) J& B1 K; B% `8 e unsigned char num2; - C' w2 L, ]8 E- E2 Q' |
unsigned char num3;
+ W# f" M. g* Z" ~( T9 H unsigned char num4;/ Q0 i; Z- X ^4 z0 d9 d: p
unsigned char segR[10] ; //右
" v& j1 D( }# d4 u8 M4 j unsigned char segL[10]; //左& A" i# _7 f5 E1 x; j8 m
$ Z% F8 \6 W) B% Z) R* I //左 ' |% c, P; C# H M8 {9 ^- X4 z
segL[0] = 0x12;
4 y8 D, `+ e3 U! B( F segL[1] = 0xFA;
9 p2 d) M8 N% D$ i6 ?9 ?4 J: @8 r segL[2] = 0x0E;) @' Q3 i4 y& @3 X9 I$ H
segL[3] = 0x2A;
6 R. b: f$ X( ~; }4 Q% F, i segL[4] = 0xE2;
8 r8 v4 Q) ^9 I$ J( P7 b segL[5] = 0x63;
1 Z0 e+ z6 W: @; Y+ u. g segL[6] = 0x2A;
3 n# J! n1 x% c" Z: h7 U segL[7] = 0x7A;
4 }6 S* D9 }/ U* H segL[8] = 0x02;; _1 q4 ` |: _" D" A+ ?+ r7 p
segL[9] = 0x22;
! _( X, z. l, \6 d+ w c5 p 9 F' H6 Y( z" n) ?0 y
1 ]; i) X# M, V; J ( N3 {) \# s% x6 W1 v- s3 h
//右
* W' g2 b* V& S segR[0] = 0x88;' F' t- t4 F* D8 j2 B
segR[1] = 0xEB;5 u3 c8 j9 s) O, Q3 F$ p/ I2 m1 k
segR[2] = 0x85;% G: t0 i- t" y4 d7 U
segR[3] = 0x83;; W5 V6 G1 J9 q( [$ u
segR[4] = 0xE2;8 E2 G1 _8 i2 C4 I8 b) J! N
segR[5] = 0x92;2 C6 q% J! X7 |1 z
segR[6] = 0x90;
6 L6 b& u' V+ g+ k6 V, Y, v segR[7] = 0xCB;
. C. v$ i, i9 B+ \2 i% U segR[8] = 0x80;
6 n4 ^' W; A( p. A( } segR[9] = 0x82;
- m; o9 x7 z; x! X1 ?' L) K- Z8 o0 R
6 X/ p2 ^9 ^+ Y0 B7 o7 L num1=num /1000;& Z- Z7 j& A3 q# h+ h8 I# Q9 k
num2=(num /100)%10;;8 f5 h: m! V8 ^2 J4 X
num3=(num /10)%100;;;& ]8 S2 k2 G- [5 W
num4=num%10;) O" k3 g, e2 Q4 ?- r3 a4 u, F3 }
' n6 q- g5 e: q2 \+ a. G6 M. {" r
& V( X2 f" a( P6 h h0 j# B7 ^
0 F8 S- a0 o0 w6 E2 s( }) [. C2 F* |& o$ P6 R$ |( v
dispA[0] = 0;
' D; C1 P$ `( i dispB[0] = 0;+ o0 ~) e$ I$ S4 i9 ~+ o: p
/ `; W9 p2 U5 R! |* @0 t: h% z7 B7 _ i4 \ g
for (i=0;i<8;i++)
1 F! n/ e% r$ x$ h( e {$ i! [0 z7 \& a0 ~3 K8 w0 b
dispA[i+1] = (segR[num2]>>i)&0x01;
# P( K, n2 D3 k) D7 R& } dispB[i+1] = (segR[num1]>>i)&0x01;
9 h' y9 v; C: c/ j; Y7 p$ c6 k. }( Z0 O' o* r; t
dispA[i+9] = (segL[num4]>>i)&0x01;, k# p& G Q# X8 `; Z. F' S
dispB[i+9] = (segL[num3]>>i)&0x01;
6 \2 ]* ?& u! n4 g; ` }
8 h' y0 k7 N! f# |+ n
/ |* O w. ^5 r4 R! N$ z, {6 Y, O
, h; L$ X4 E9 e9 ]' f
* A/ c5 a1 _) _; Y4 t dispA[17] = 1;
' a2 @/ z# I6 U/ Q P9 {% F, h/ q dispB[17] = 0;+ O) u7 }* K, h5 Y7 e
% I: A: x) K9 a! \ dispA[18] = 0;2 H& w6 H! ?$ e, \ M) r4 ^
dispB[18] = 0;
+ `% u) h( ?8 _, q- _) l0 c. C. t0 h' W7 u7 s& C* c& `
dispA[19] = 0;
. z* b9 e- v5 v8 i0 y dispB[19] = 0;
8 T2 t/ U6 M7 J4 s+ v
4 w. L. K7 F% |- C( u) O8 p yCLK = 1;% Y5 a* [; a% j$ O6 x- o' C& M- r
# e% |& w4 |* O. L! w
4 k, K, Y/ U, z; H) \9 y/ m
0 {" Q1 e W8 C: Z for (i = 0;i<20;i++)9 r5 y' s7 ^' `0 w
{1 t# O9 ]: ^. t
yCLK = 1;8 n, ?; N( x6 E9 B. H5 w9 F! g, z
yData = dispA;
* p+ |: r5 Q6 x# R) R/ ^! y6 y delay(2);% Q1 y$ D9 ~; }+ K- v
if(i>17)7 m; r9 ]6 |$ ?4 s2 a4 h4 o. e+ E, d
{yDLEN=0;}+ O/ a- a' Q6 l; o/ U
else
6 Q8 v3 ^* x' Q2 K9 u8 n {yDLEN=1;}
' x! k: J x8 [( _9 e) G* t/ ~( ?' @6 Z( l3 n9 E) k
delay(dailyCount);& c3 j2 L$ s- |. J0 I1 C
yCLK = 0 ;
# [) u3 c; Y; ] delay(dailyCount);" ?4 t% D# ^# Y! L; x1 Z
}7 t: r9 V: v t/ I) R
# X N+ Y' D& S K yCLK=0;- P- p3 }, T5 X5 _0 w
yData=0;* `8 H+ i7 Z9 E- W
yDLEN=0;% Y$ o* O& w+ W+ H; S [
delay(dailyCount*10);
7 H$ U7 \2 w# f& M" O$ [: y5 h3 J
9 {0 y- h( d* F8 {- @ R" {
( o: d3 Y2 Y2 d+ i
# [6 R( B* t& ]& |4 k! u for (i = 0;i<20;i++)
) V% \8 W# ^! l6 P' H1 f m {0 ]3 A- Q& a3 C3 G8 h
yCLK = 1;
n) m- `* `- P' t yData = dispB;) i2 K g" X: ]
delay(dailyCount/10);6 M. [; D; K/ M' ^% ?8 u
if(i>17)
# N8 D4 b1 h/ q& O9 u3 }" C {yDLEN=0;}
2 Y) T+ [5 G5 ~, t else
* {, s$ f3 G) q; X& | {yDLEN=1;}
/ S) Z9 g+ Z0 i- y. v$ L! z3 l6 p" A/ h" A. b# p
delay(dailyCount);8 u8 y" K% B3 a8 z9 |
yCLK = 0 ;
+ c2 [0 N' ~+ [0 x delay(dailyCount);
% E8 |0 h/ g3 o* r9 \. Q }2 N7 v, \7 h- O [/ ?
, c& Z& ^3 I6 k9 S6 l
yCLK=0;- _# K: W3 f% h& A
yData=0;
4 G5 W6 f* g6 M u yDLEN=0; }# E# \% P% v
delay(dailyCount*10);
) T) E# q) c( P# u}
5 i2 Z* H# O' L' x, d* w* x4 U; r8 o) ?0 D# X
6 d4 c3 \( p* v$ _! |5 a- T8 z6 s
, n2 w6 A6 r5 j& \( o9 u3 h9 d" g9 J8 i7 ?# J9 c! v3 m
void main()
( H: [8 S4 ^9 x' y+ |& C6 H! z5 p{
' D6 }; o: c4 ^0 o while(1)
4 B! Z, z3 a7 r5 V/ q {
1 V- {: l, y# R1 ` delay(4000);4 a3 _8 z" R6 n. T% Y: t% T
disp(0);6 q) @3 F6 w n+ j. \
}
6 \3 N0 ?0 ?8 e' S/ v3 s) \$ v' Q5 \}
& g4 b7 Z$ H/ y& T, A1 x! L2 J+ [; H1 C
0 B" V8 t+ Y# k( L; q. E: W1 Q
|